From 63807dfd710314b7804f0b18e33a6bfb105176ce Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Sun, 27 Aug 2023 17:20:19 -0500 Subject: [PATCH 01/36] Update ESBuild and convert bin to TypeScript (#541) --- .gitignore | 1 + bin/{replugged.mjs => index.mts} | 313 +++++++++------------ bin/{release.mjs => release.mts} | 32 +-- cspell.json | 1 + package.json | 11 +- pnpm-lock.yaml | 459 ++++++++++++++++++++++--------- scripts/build-bin.mts | 28 ++ scripts/build.mts | 23 +- src/util.mts | 68 ++++- tsconfig.json | 2 +- 10 files changed, 590 insertions(+), 348 deletions(-) rename bin/{replugged.mjs => index.mts} (63%) rename bin/{release.mjs => release.mts} (92%) create mode 100644 scripts/build-bin.mts diff --git a/.gitignore b/.gitignore index ef411ec7e..cf7bd98b8 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ config.json /docs /*.asar +/bin.mjs diff --git a/bin/replugged.mjs b/bin/index.mts similarity index 63% rename from bin/replugged.mjs rename to bin/index.mts index 378149371..a57ced5d8 100755 --- a/bin/replugged.mjs +++ b/bin/index.mts @@ -1,7 +1,5 @@ #!/usr/bin/env node - import asar from "@electron/asar"; -import { Parcel } from "@parcel/core"; import { copyFileSync, cpSync, @@ -14,18 +12,29 @@ import { import esbuild from "esbuild"; import path from "path"; import updateNotifier from "update-notifier"; -import yargs from "yargs"; +import yargs, { ArgumentsCamelCase } from "yargs"; import { hideBin } from "yargs/helpers"; import chalk from "chalk"; import WebSocket from "ws"; -import { fileURLToPath, pathToFileURL } from "url"; import { release } from "./release.mjs"; +import { logBuildPlugin } from "../src/util.mjs"; +import { sassPlugin } from "esbuild-sass-plugin"; +import { fileURLToPath } from "url"; + +interface BaseArgs { + watch?: boolean; + noInstall?: boolean; + production?: boolean; + noReload?: boolean; +} + +type Args = ArgumentsCamelCase | BaseArgs; -const dirname = path.dirname(fileURLToPath(import.meta.url)); const directory = process.cwd(); -const manifestPath = pathToFileURL(path.join(directory, "manifest.json")); +const manifestPath = path.join(directory, "manifest.json"); -const packageJson = JSON.parse(readFileSync(path.resolve(dirname, "../package.json"), "utf-8")); +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const packageJson = JSON.parse(readFileSync(path.resolve(dirname, "package.json"), "utf-8")); const updateMessage = `Update available ${chalk.dim("{currentVersion}")}${chalk.reset( " → ", @@ -36,7 +45,7 @@ const notifier = updateNotifier({ shouldNotifyInNpmScript: true, }); -function sendUpdateNotification() { +function sendUpdateNotification(): void { notifier.notify({ message: updateMessage, }); @@ -45,25 +54,18 @@ function sendUpdateNotification() { const MIN_PORT = 6463; const MAX_PORT = 6472; -function random() { +function random(): string { return Math.random().toString(16).slice(2); } -/** - * @type {WebSocket | undefined} - */ -let ws; +let ws: WebSocket | undefined; let failed = false; -/** - * @type {Promise | undefined} - */ -let connectingPromise; +let connectingPromise: Promise | undefined; /** * Try to connect to RPC on a specific port and handle the READY event as well as errors and close events - * @param {number} port */ -function tryPort(port) { +function tryPort(port: number): Promise { ws = new WebSocket(`ws://127.0.0.1:${port}/?v=1&client_id=REPLUGGED-${random()}`); return new Promise((resolve, reject) => { let didFinish = false; @@ -108,7 +110,7 @@ function tryPort(port) { * Get an active websocket connection to Discord. If one is already open, it will be returned. Otherwise, a new connection will be made. * If a connection cannot be made or failed previously, none will be made and undefined will be returned. */ -async function connectWebsocket() { +async function connectWebsocket(): Promise { if (ws && ws.readyState === WebSocket.OPEN) { return ws; } @@ -141,9 +143,8 @@ let reloadAgain = false; /** * Send WS request to reload an addon - * @param {string} id */ -async function reload(id) { +async function reload(id: string): Promise { const ws = await connectWebsocket(); if (!ws) return; @@ -172,7 +173,7 @@ async function reload(id) { * @param {import('ws').RawData} data * @returns */ - const onMessage = async (data) => { + const onMessage = async (data: string): Promise => { const message = JSON.parse(data.toString()); if (message.nonce !== nonce) { return; @@ -212,18 +213,7 @@ async function reload(id) { }); } -/** - * @typedef Args - * @property {boolean} [watch] - * @property {boolean} [noInstall] - * @property {boolean} [production] - * @property {boolean} [noReload] - */ - -/** - * @param {(args: Args) => Promise} buildFn - */ -async function bundleAddon(buildFn) { +async function bundleAddon(buildFn: (args: Args) => Promise): Promise { if (existsSync("dist")) { rmSync("dist", { recursive: true }); } @@ -241,22 +231,48 @@ async function bundleAddon(buildFn) { console.log(`Bundled ${manifest.name}`); } -/** - * @param {Args} args - */ -async function buildPlugin({ watch, noInstall, production, noReload }) { - // @ts-expect-error - let manifest = await import(manifestPath.toString(), { - assert: { type: "json" }, - }); - if ("default" in manifest) manifest = manifest.default; - const CHROME_VERSION = "91"; - const REPLUGGED_FOLDER_NAME = "replugged"; - const globalModules = { +async function handleContexts( + contexts: esbuild.BuildContext[], + watch: boolean | undefined, +): Promise { + await Promise.all( + contexts.map(async (context) => { + if (watch) { + await context.watch(); + } else { + await context.rebuild().catch(() => {}); + context.dispose(); + } + }), + ); +} + +const REPLUGGED_FOLDER_NAME = "replugged"; +const CONFIG_PATH = (() => { + switch (process.platform) { + case "win32": + return path.join(process.env.APPDATA || "", REPLUGGED_FOLDER_NAME); + case "darwin": + return path.join( + process.env.HOME || "", + "Library", + "Application Support", + REPLUGGED_FOLDER_NAME, + ); + default: + if (process.env.XDG_CONFIG_HOME) { + return path.join(process.env.XDG_CONFIG_HOME, REPLUGGED_FOLDER_NAME); + } + return path.join(process.env.HOME || "", ".config", REPLUGGED_FOLDER_NAME); + } +})(); +const CHROME_VERSION = "91"; + +async function buildPlugin({ watch, noInstall, production, noReload }: Args): Promise { + let manifest = JSON.parse(readFileSync(manifestPath.toString(), "utf-8")); + const globalModules: esbuild.Plugin = { name: "globalModules", - // @ts-expect-error setup: (build) => { - // @ts-expect-error build.onResolve({ filter: /^replugged.+$/ }, (args) => { if (args.kind !== "import-statement") return undefined; @@ -269,7 +285,6 @@ async function buildPlugin({ watch, noInstall, production, noReload }) { }; }); - // @ts-expect-error build.onResolve({ filter: /^replugged$/ }, (args) => { if (args.kind !== "import-statement") return undefined; @@ -293,28 +308,8 @@ async function buildPlugin({ watch, noInstall, production, noReload }) { }, }; - const CONFIG_PATH = (() => { - switch (process.platform) { - case "win32": - return path.join(process.env.APPDATA || "", REPLUGGED_FOLDER_NAME); - case "darwin": - return path.join( - process.env.HOME || "", - "Library", - "Application Support", - REPLUGGED_FOLDER_NAME, - ); - default: - if (process.env.XDG_CONFIG_HOME) { - return path.join(process.env.XDG_CONFIG_HOME, REPLUGGED_FOLDER_NAME); - } - return path.join(process.env.HOME || "", ".config", REPLUGGED_FOLDER_NAME); - } - })(); - - const install = { + const install: esbuild.Plugin = { name: "install", - // @ts-expect-error setup: (build) => { build.onEnd(async () => { if (!noInstall) { @@ -331,25 +326,26 @@ async function buildPlugin({ watch, noInstall, production, noReload }) { }, }; - const common = { + const plugins: esbuild.Plugin[] = [globalModules, install]; + if (watch) plugins.push(logBuildPlugin); + + const common: esbuild.BuildOptions = { absWorkingDir: directory, bundle: true, format: "esm", logLevel: "info", minify: production, platform: "browser", - plugins: [globalModules, install], + plugins, sourcemap: !production, target: `chrome${CHROME_VERSION}`, - watch, }; - const targets = []; + const targets: Array> = []; if ("renderer" in manifest) { targets.push( - // @ts-expect-error - esbuild.build({ + esbuild.context({ ...common, entryPoints: [manifest.renderer], outfile: "dist/renderer.js", @@ -361,8 +357,7 @@ async function buildPlugin({ watch, noInstall, production, noReload }) { if ("plaintextPatches" in manifest) { targets.push( - // @ts-expect-error - esbuild.build({ + esbuild.context({ ...common, entryPoints: [manifest.plaintextPatches], outfile: "dist/plaintextPatches.js", @@ -376,132 +371,88 @@ async function buildPlugin({ watch, noInstall, production, noReload }) { writeFileSync("dist/manifest.json", JSON.stringify(manifest)); - await Promise.all(targets); + const contexts = await Promise.all(targets); + await handleContexts(contexts, watch); ws?.close(); } -/** - * @param {Args} args - */ -async function buildTheme({ watch: shouldWatch, noInstall, production, noReload }) { - // @ts-expect-error - let manifest = await import(manifestPath, { - assert: { type: "json" }, - }); - if ("default" in manifest) manifest = manifest.default; +async function buildTheme({ watch, noInstall, production, noReload }: Args): Promise { + let manifest = JSON.parse(readFileSync(manifestPath.toString(), "utf-8")); const main = manifest.main || "src/main.css"; const splash = manifest.splash || (existsSync("src/splash.css") ? "src/splash.css" : undefined); - const mainBundler = new Parcel({ - entries: main, - defaultConfig: "@parcel/config-default", - targets: { - main: { - distDir: "dist", - distEntry: "main.css", - sourceMap: !production, - optimize: production, - }, - }, - }); + const install: esbuild.Plugin = { + name: "install", + setup: (build) => { + build.onEnd(async () => { + if (!noInstall) { + const dest = path.join(CONFIG_PATH, "themes", manifest.id); + if (existsSync(dest)) rmSync(dest, { recursive: true, force: true }); + cpSync("dist", dest, { recursive: true }); + console.log("Installed updated version"); - const splashBundler = splash - ? new Parcel({ - entries: splash, - defaultConfig: "@parcel/config-default", - targets: { - main: { - distDir: "dist", - distEntry: "splash.css", - }, - }, - }) - : undefined; - - const REPLUGGED_FOLDER_NAME = "replugged"; - const CONFIG_PATH = (() => { - switch (process.platform) { - case "win32": - return path.join(process.env.APPDATA || "", REPLUGGED_FOLDER_NAME); - case "darwin": - return path.join( - process.env.HOME || "", - "Library", - "Application Support", - REPLUGGED_FOLDER_NAME, - ); - default: - if (process.env.XDG_CONFIG_HOME) { - return path.join(process.env.XDG_CONFIG_HOME, REPLUGGED_FOLDER_NAME); + if (!noReload) { + await reload(manifest.id); + } } - return path.join(process.env.HOME || "", ".config", REPLUGGED_FOLDER_NAME); - } - })(); + }); + }, + }; - async function install() { - if (!noInstall) { - const dest = path.join(CONFIG_PATH, "themes", manifest.id); - if (existsSync(dest)) { - rmSync(dest, { recursive: true, force: true }); - } - cpSync("dist", dest, { recursive: true }); - console.log("Installed updated version"); + const plugins: esbuild.Plugin[] = [sassPlugin(), install]; + if (watch) plugins.push(logBuildPlugin); - if (!noReload) { - // @ts-expect-error - await reload(manifest.id, watch); - } - } - } + const common: esbuild.BuildOptions = { + absWorkingDir: directory, + bundle: true, + format: "esm", + logLevel: "info", + minify: production, + platform: "browser", + plugins, + sourcemap: !production, + target: `chrome${CHROME_VERSION}`, + }; - // @ts-expect-error - async function build(bundler) { - const { bundleGraph, buildTime } = await bundler.run(); - let bundles = bundleGraph.getBundles(); - console.log(`Built ${bundles.length} bundles in ${buildTime}ms!`); - install(); - } + const targets: Array> = []; - // @ts-expect-error - async function watch(bundler) { - // @ts-expect-error - await bundler.watch((err, event) => { - if (err) { - // fatal error - throw err; - } - if (!event) return; - - if (event.type === "buildSuccess") { - let bundles = event.bundleGraph.getBundles(); - console.log(`✨ Built ${bundles.length} bundles in ${event.buildTime}ms!`); - install(); - } else if (event.type === "buildFailure") { - console.log(event.diagnostics); - } - }); - } + if (main) { + targets.push( + esbuild.context({ + ...common, + entryPoints: [main], + outfile: "dist/main.css", + }), + ); - const fn = shouldWatch ? watch : build; - const promises = [mainBundler, splashBundler].filter(Boolean).map((bundler) => fn(bundler)); + manifest.main = "main.css"; + } - manifest.main = "main.css"; - manifest.splash = splash ? "splash.css" : undefined; + if (splash) { + targets.push( + esbuild.context({ + ...common, + entryPoints: [splash], + outfile: "dist/splash.css", + }), + ); - if (!existsSync("dist")) { - mkdirSync("dist"); + manifest.plaintextPatches = "splash.css"; } + if (!existsSync("dist")) mkdirSync("dist"); + writeFileSync("dist/manifest.json", JSON.stringify(manifest)); - await Promise.all(promises); + const contexts = await Promise.all(targets); + await handleContexts(contexts, watch); ws?.close(); } -// eslint-disable-next-line no-unused-vars +// eslint-disable-next-line @typescript-eslint/no-unused-vars const { argv } = yargs(hideBin(process.argv)) .scriptName("replugged") .usage("$0 [args]") @@ -536,10 +487,8 @@ const { argv } = yargs(hideBin(process.argv)) }, (argv) => { if (argv.addon === "plugin") { - // @ts-expect-error buildPlugin(argv); } else if (argv.addon === "theme") { - // @ts-expect-error buildTheme(argv); } else { console.log("Invalid addon type."); diff --git a/bin/release.mjs b/bin/release.mts similarity index 92% rename from bin/release.mjs rename to bin/release.mts index fbcebc7a8..fbe9ca89d 100644 --- a/bin/release.mjs +++ b/bin/release.mts @@ -1,6 +1,3 @@ -#!/usr/bin/env node -/* eslint-disable no-process-exit */ - import { existsSync, readFileSync, writeFileSync } from "fs"; import path from "path"; import prompts from "prompts"; @@ -10,11 +7,8 @@ import { execSync } from "child_process"; /** * Prompt a confirmation message and exit if the user does not confirm. - * - * @param {string} message - * @param {boolean} [initial] */ -async function confirmOrExit(message, initial = false) { +async function confirmOrExit(message: string, initial = false): Promise { const { doContinue } = await prompts( { type: "confirm", @@ -33,12 +27,8 @@ async function confirmOrExit(message, initial = false) { /** * Run a command and return the output. - * - * @param {string} command - * @param {boolean} [exit = true] Exit if the command fails - * @returns {string} */ -function runCommand(command, exit = true) { +function runCommand(command: string, exit = true): string { try { const result = execSync(command, { encoding: "utf8", @@ -46,24 +36,22 @@ function runCommand(command, exit = true) { }); return result; } catch (error) { - // @ts-expect-error + // @ts-expect-error not unknown if (!exit) return error.stdout; - // @ts-expect-error + // @ts-expect-error not unknown console.error(error.message); process.exit(1); } - throw new Error("Unreachable"); } -function onCancel() { +function onCancel(): void { console.log(chalk.red("Aborting")); process.exit(128); // SIGINT } -/** @type {string} */ -let root; +let root: string; -function getRootDir() { +function getRootDir(): string { if (root) return root; try { @@ -73,13 +61,13 @@ function getRootDir() { }).trim(); return root; } catch (error) { - // @ts-expect-error + // @ts-expect-error not unknown if (error.message.includes("not a git repository")) { console.log(chalk.red("You must run this command from within a git repository")); process.exit(1); } - // @ts-expect-error + // @ts-expect-error not unknown console.error(`Command failed with exit code ${error.status}: ${error.message}`); process.exit(1); } @@ -87,7 +75,7 @@ function getRootDir() { throw new Error("Unreachable"); } -export async function release() { +export async function release(): Promise { const directory = getRootDir(); const status = runCommand("git status --porcelain"); diff --git a/cspell.json b/cspell.json index e586926d8..f5f71c635 100644 --- a/cspell.json +++ b/cspell.json @@ -39,6 +39,7 @@ "lezer", "LOCALAPPDATA", "logname", + "metafile", "Millis", "notif", "notrack", diff --git a/package.json b/package.json index 01942d178..0e32b3e7c 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "eslint:fix": "eslint ./src ./scripts ./bin --fix", "lint": "pnpm run prettier:check && pnpm run eslint:check && pnpm run cspell:check && pnpm run typescript:check", "lint:fix": "pnpm run prettier:fix && pnpm run eslint:fix && pnpm run cspell:check && pnpm run typescript:check", + "postinstall": "tsx scripts/build-bin.mts", "prepublishOnly": "rm -rf dist; tsc --declaration --emitDeclarationOnly --noEmit false -p tsconfig.json --outDir dist; rm -rf dist/scripts; mv dist/src/* dist; rm -rf dist/src; cp src/*.d.ts dist", "postpublish": "rm -rf dist; npm run build", "docs": "typedoc src/renderer/replugged.ts --excludeExternals", @@ -80,13 +81,13 @@ "@electron/asar": "^3.2.4", "@lezer/highlight": "^1.1.6", "@octokit/rest": "^19.0.13", - "@parcel/config-default": "^2.9.3", - "@parcel/core": "^2.9.3", - "@parcel/transformer-sass": "^2.9.3", + "@types/esm": "^3.2.0", "adm-zip": "^0.5.10", "chalk": "^5.3.0", "codemirror": "^6.0.1", - "esbuild": "^0.16.17", + "esbuild": "^0.19.2", + "esbuild-sass-plugin": "^2.13.0", + "esm": "^3.2.25", "node-fetch": "^3.3.2", "prompts": "^2.4.2", "semver": "^7.5.4", @@ -97,7 +98,7 @@ "zod": "^3.22.2" }, "bin": { - "replugged": "bin/replugged.mjs" + "replugged": "bin.mjs" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 09c9bd05a..f944749f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,15 +29,9 @@ dependencies: '@octokit/rest': specifier: ^19.0.13 version: 19.0.13 - '@parcel/config-default': - specifier: ^2.9.3 - version: 2.9.3(@parcel/core@2.9.3) - '@parcel/core': - specifier: ^2.9.3 - version: 2.9.3 - '@parcel/transformer-sass': - specifier: ^2.9.3 - version: 2.9.3(@parcel/core@2.9.3) + '@types/esm': + specifier: ^3.2.0 + version: 3.2.0 adm-zip: specifier: ^0.5.10 version: 0.5.10 @@ -48,8 +42,14 @@ dependencies: specifier: ^6.0.1 version: 6.0.1(@lezer/common@1.0.4) esbuild: - specifier: ^0.16.17 - version: 0.16.17 + specifier: ^0.19.2 + version: 0.19.2 + esbuild-sass-plugin: + specifier: ^2.13.0 + version: 2.13.0(esbuild@0.19.2) + esm: + specifier: ^3.2.25 + version: 3.2.25 node-fetch: specifier: ^3.3.2 version: 3.3.2 @@ -183,10 +183,12 @@ packages: dependencies: '@babel/highlight': 7.22.10 chalk: 2.4.2 + dev: true /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/highlight@7.22.10: resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} @@ -195,6 +197,7 @@ packages: '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true /@bconnorwhite/module@2.0.2: resolution: {integrity: sha512-ck1me5WMgZKp06gnJrVKEkytpehTTQbvsAMbF1nGPeHri/AZNhj87++PSE2LOxmZqM0EtGMaqeLdx7Lw7SUnTA==} @@ -595,15 +598,6 @@ packages: get-tsconfig: 4.7.0 dev: true - /@esbuild/android-arm64@0.16.17: - resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -613,10 +607,10 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + /@esbuild/android-arm64@0.19.2: + resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true dev: false @@ -631,10 +625,10 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.16.17: - resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + /@esbuild/android-arm@0.19.2: + resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm] os: [android] requiresBuild: true dev: false @@ -649,11 +643,11 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.16.17: - resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + /@esbuild/android-x64@0.19.2: + resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + cpu: [x64] + os: [android] requiresBuild: true dev: false optional: true @@ -667,10 +661,10 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.16.17: - resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + /@esbuild/darwin-arm64@0.19.2: + resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm64] os: [darwin] requiresBuild: true dev: false @@ -685,11 +679,11 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.16.17: - resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + /@esbuild/darwin-x64@0.19.2: + resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + cpu: [x64] + os: [darwin] requiresBuild: true dev: false optional: true @@ -703,10 +697,10 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.16.17: - resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + /@esbuild/freebsd-arm64@0.19.2: + resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm64] os: [freebsd] requiresBuild: true dev: false @@ -721,11 +715,11 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.16.17: - resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + /@esbuild/freebsd-x64@0.19.2: + resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + cpu: [x64] + os: [freebsd] requiresBuild: true dev: false optional: true @@ -739,10 +733,10 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.16.17: - resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + /@esbuild/linux-arm64@0.19.2: + resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: false @@ -757,10 +751,10 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.16.17: - resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + /@esbuild/linux-arm@0.19.2: + resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm] os: [linux] requiresBuild: true dev: false @@ -775,10 +769,10 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.16.17: - resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + /@esbuild/linux-ia32@0.19.2: + resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} engines: {node: '>=12'} - cpu: [loong64] + cpu: [ia32] os: [linux] requiresBuild: true dev: false @@ -793,10 +787,10 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.16.17: - resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + /@esbuild/linux-loong64@0.19.2: + resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} engines: {node: '>=12'} - cpu: [mips64el] + cpu: [loong64] os: [linux] requiresBuild: true dev: false @@ -811,10 +805,10 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.16.17: - resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + /@esbuild/linux-mips64el@0.19.2: + resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} engines: {node: '>=12'} - cpu: [ppc64] + cpu: [mips64el] os: [linux] requiresBuild: true dev: false @@ -829,10 +823,10 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.16.17: - resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + /@esbuild/linux-ppc64@0.19.2: + resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} engines: {node: '>=12'} - cpu: [riscv64] + cpu: [ppc64] os: [linux] requiresBuild: true dev: false @@ -847,10 +841,10 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.16.17: - resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + /@esbuild/linux-riscv64@0.19.2: + resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} engines: {node: '>=12'} - cpu: [s390x] + cpu: [riscv64] os: [linux] requiresBuild: true dev: false @@ -865,10 +859,10 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.16.17: - resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + /@esbuild/linux-s390x@0.19.2: + resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} engines: {node: '>=12'} - cpu: [x64] + cpu: [s390x] os: [linux] requiresBuild: true dev: false @@ -883,11 +877,11 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.16.17: - resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + /@esbuild/linux-x64@0.19.2: + resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} engines: {node: '>=12'} cpu: [x64] - os: [netbsd] + os: [linux] requiresBuild: true dev: false optional: true @@ -901,11 +895,11 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.16.17: - resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + /@esbuild/netbsd-x64@0.19.2: + resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} engines: {node: '>=12'} cpu: [x64] - os: [openbsd] + os: [netbsd] requiresBuild: true dev: false optional: true @@ -919,11 +913,11 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.16.17: - resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + /@esbuild/openbsd-x64@0.19.2: + resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} engines: {node: '>=12'} cpu: [x64] - os: [sunos] + os: [openbsd] requiresBuild: true dev: false optional: true @@ -937,11 +931,11 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.16.17: - resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + /@esbuild/sunos-x64@0.19.2: + resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + cpu: [x64] + os: [sunos] requiresBuild: true dev: false optional: true @@ -955,10 +949,10 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.16.17: - resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + /@esbuild/win32-arm64@0.19.2: + resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm64] os: [win32] requiresBuild: true dev: false @@ -973,10 +967,10 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.16.17: - resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + /@esbuild/win32-ia32@0.19.2: + resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} engines: {node: '>=12'} - cpu: [x64] + cpu: [ia32] os: [win32] requiresBuild: true dev: false @@ -991,6 +985,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.19.2: + resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1050,6 +1053,7 @@ packages: /@lezer/common@0.15.12: resolution: {integrity: sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==} + dev: true /@lezer/common@1.0.4: resolution: {integrity: sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg==} @@ -1072,6 +1076,7 @@ packages: resolution: {integrity: sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==} dependencies: '@lezer/common': 0.15.12 + dev: true /@lezer/lr@1.3.10: resolution: {integrity: sha512-BZfVvf7Re5BIwJHlZXbJn9L8lus5EonxQghyn+ih8Wl36XMFBPTXC0KM0IdUtj9w/diPHsKlXVgL+AlX2jYJ0Q==} @@ -1089,6 +1094,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@lmdb/lmdb-darwin-x64@2.7.11: @@ -1096,6 +1102,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@lmdb/lmdb-linux-arm64@2.7.11: @@ -1103,6 +1110,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@lmdb/lmdb-linux-arm@2.7.11: @@ -1110,6 +1118,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@lmdb/lmdb-linux-x64@2.7.11: @@ -1117,6 +1126,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@lmdb/lmdb-win32-x64@2.7.11: @@ -1124,6 +1134,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@mischnic/json-sourcemap@0.1.0: @@ -1133,12 +1144,14 @@ packages: '@lezer/common': 0.15.12 '@lezer/lr': 0.15.8 json5: 2.2.3 + dev: true /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2: resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==} cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2: @@ -1146,6 +1159,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2: @@ -1153,6 +1167,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2: @@ -1160,6 +1175,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2: @@ -1167,6 +1183,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2: @@ -1174,6 +1191,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@nodelib/fs.scandir@2.1.5: @@ -1333,6 +1351,7 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/cache@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-Bj/H2uAJJSXtysG7E/x4EgTrE2hXmm7td/bc97K8M9N7+vQjxf7xb0ebgqe84ePVMkj4MVQSMEJkEucXVx4b0Q==} @@ -1345,12 +1364,14 @@ packages: '@parcel/logger': 2.9.3 '@parcel/utils': 2.9.3 lmdb: 2.7.11 + dev: true /@parcel/codeframe@2.9.3: resolution: {integrity: sha512-z7yTyD6h3dvduaFoHpNqur74/2yDWL++33rjQjIjCaXREBN6dKHoMGMizzo/i4vbiI1p9dDox2FIDEHCMQxqdA==} engines: {node: '>= 12.0.0'} dependencies: chalk: 4.1.2 + dev: true /@parcel/compressor-raw@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-jz3t4/ICMsHEqgiTmv5i1DJva2k5QRpZlBELVxfY+QElJTVe8edKJ0TiKcBxh2hx7sm4aUigGmp7JiqqHRRYmA==} @@ -1359,6 +1380,7 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/config-default@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-tqN5tF7QnVABDZAu76co5E6N8mA9n8bxiWdK4xYyINYFIEHgX172oRTqXTnhEMjlMrdmASxvnGlbaPBaVnrCTw==} @@ -1405,6 +1427,7 @@ packages: - srcset - terser - uncss + dev: true /@parcel/core@2.9.3: resolution: {integrity: sha512-4KlM1Zr/jpsqWuMXr2zmGsaOUs1zMMFh9vfCNKRZkptf+uk8I3sugHbNdo+F5B+4e2yMuOEb1zgAmvJLeuH6ww==} @@ -1435,6 +1458,7 @@ packages: msgpackr: 1.9.7 nullthrows: 1.1.1 semver: 7.5.4 + dev: true /@parcel/diagnostic@2.9.3: resolution: {integrity: sha512-6jxBdyB3D7gP4iE66ghUGntWt2v64E6EbD4AetZk+hNJpgudOOPsKTovcMi/i7I4V0qD7WXSF4tvkZUoac0jwA==} @@ -1442,14 +1466,17 @@ packages: dependencies: '@mischnic/json-sourcemap': 0.1.0 nullthrows: 1.1.1 + dev: true /@parcel/events@2.9.3: resolution: {integrity: sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==} engines: {node: '>= 12.0.0'} + dev: true /@parcel/fs-search@2.9.3: resolution: {integrity: sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==} engines: {node: '>= 12.0.0'} + dev: true /@parcel/fs@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-/PrRKgCRw22G7rNPSpgN3Q+i2nIkZWuvIOAdMG4KWXC4XLp8C9jarNaWd5QEQ75amjhQSl3oUzABzkdCtkKrgg==} @@ -1463,18 +1490,21 @@ packages: '@parcel/utils': 2.9.3 '@parcel/watcher': 2.3.0 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) + dev: true /@parcel/graph@2.9.3: resolution: {integrity: sha512-3LmRJmF8+OprAr6zJT3X2s8WAhLKkrhi6RsFlMWHifGU5ED1PFcJWFbOwJvSjcAhMQJP0fErcFIK1Ludv3Vm3g==} engines: {node: '>= 12.0.0'} dependencies: nullthrows: 1.1.1 + dev: true /@parcel/hash@2.9.3: resolution: {integrity: sha512-qlH5B85XLzVAeijgKPjm1gQu35LoRYX/8igsjnN8vOlbc3O8BYAUIutU58fbHbtE8MJPbxQQUw7tkTjeoujcQQ==} engines: {node: '>= 12.0.0'} dependencies: xxhash-wasm: 0.4.2 + dev: true /@parcel/logger@2.9.3: resolution: {integrity: sha512-5FNBszcV6ilGFcijEOvoNVG6IUJGsnMiaEnGQs7Fvc1dktTjEddnoQbIYhcSZL63wEmzBZOgkT5yDMajJ/41jw==} @@ -1482,12 +1512,14 @@ packages: dependencies: '@parcel/diagnostic': 2.9.3 '@parcel/events': 2.9.3 + dev: true /@parcel/markdown-ansi@2.9.3: resolution: {integrity: sha512-/Q4X8F2aN8UNjAJrQ5NfK2OmZf6shry9DqetUSEndQ0fHonk78WKt6LT0zSKEBEW/bB/bXk6mNMsCup6L8ibjQ==} engines: {node: '>= 12.0.0'} dependencies: chalk: 4.1.2 + dev: true /@parcel/namer-default@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-1ynFEcap48/Ngzwwn318eLYpLUwijuuZoXQPCsEQ21OOIOtfhFQJaPwXTsw6kRitshKq76P2aafE0BioGSqxcA==} @@ -1498,6 +1530,7 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/node-resolver-core@3.0.3(@parcel/core@2.9.3): resolution: {integrity: sha512-AjxNcZVHHJoNT/A99PKIdFtwvoze8PAiC3yz8E/dRggrDIOboUEodeQYV5Aq++aK76uz/iOP0tST2T8A5rhb1A==} @@ -1511,6 +1544,7 @@ packages: semver: 7.5.4 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/optimizer-css@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-RK1QwcSdWDNUsFvuLy0hgnYKtPQebzCb0vPPzqs6LhL+vqUu9utOyRycGaQffHCkHVQP6zGlN+KFssd7YtFGhA==} @@ -1525,6 +1559,7 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/optimizer-htmlnano@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-9g/KBck3c6DokmJfvJ5zpHFBiCSolaGrcsTGx8C3YPdCTVTI9P1TDCwUxvAr4LjpcIRSa82wlLCI+nF6sSgxKA==} @@ -1544,6 +1579,7 @@ packages: - srcset - terser - uncss + dev: true /@parcel/optimizer-image@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-530YzthE7kmecnNhPbkAK+26yQNt69pfJrgE0Ev0BZaM1Wu2+33nki7o8qvkTkikhPrurEJLGIXt1qKmbKvCbA==} @@ -1556,6 +1592,7 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) + dev: true /@parcel/optimizer-svgo@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-ytQS0wY5JJhWU4mL0wfhYDUuHcfuw+Gy2+JcnTm1t1AZXHlOTbU6EzRWNqBShsgXjvdrQQXizAe3B6GFFlFJVQ==} @@ -1567,6 +1604,7 @@ packages: svgo: 2.8.0 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/optimizer-swc@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-GQINNeqtdpL1ombq/Cpwi6IBk02wKJ/JJbYbyfHtk8lxlq13soenpwOlzJ5T9D2fdG+FUhai9NxpN5Ss4lNoAg==} @@ -1581,6 +1619,7 @@ packages: transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' + dev: true /@parcel/package-manager@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-NH6omcNTEupDmW4Lm1e4NUYBjdqkURxgZ4CNESESInHJe6tblVhNB8Rpr1ar7zDar7cly9ILr8P6N3Ei7bTEjg==} @@ -1597,6 +1636,7 @@ packages: '@parcel/utils': 2.9.3 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) semver: 7.5.4 + dev: true /@parcel/packager-css@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-mePiWiYZOULY6e1RdAIJyRoYqXqGci0srOaVZYaP7mnrzvJgA63kaZFFsDiEWghunQpMUuUjM2x/vQVHzxmhKQ==} @@ -1609,6 +1649,7 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/packager-html@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-0Ex+O0EaZf9APNERRNGgGto02hFJ6f5RQEvRWBK55WAV1rXeU+kpjC0c0qZvnUaUtXfpWMsEBkevJCwDkUMeMg==} @@ -1621,6 +1662,7 @@ packages: posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/packager-js@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-V5xwkoE3zQ3R+WqAWhA1KGQ791FvJeW6KonOlMI1q76Djjgox68hhObqcLu66AmYNhR2R/wUpkP18hP2z8dSFw==} @@ -1635,6 +1677,7 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/packager-raw@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-oPQTNoYanQ2DdJyL61uPYK2py83rKOT8YVh2QWAx0zsSli6Kiy64U3+xOCYWgDVCrHw9+9NpQMuAdSiFg4cq8g==} @@ -1643,6 +1686,7 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/packager-svg@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-p/Ya6UO9DAkaCUFxfFGyeHZDp9YPAlpdnh1OChuwqSFOXFjjeXuoK4KLT+ZRalVBo2Jo8xF70oKMZw4MVvaL7Q==} @@ -1654,6 +1698,7 @@ packages: posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/plugin@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-qN85Gqr2GMuxX1dT1mnuO9hOcvlEv1lrYrCxn7CJN2nUhbwcfG+LEvcrCzCOJ6XtIHm+ZBV9h9p7FfoPLvpw+g==} @@ -1662,6 +1707,7 @@ packages: '@parcel/types': 2.9.3(@parcel/core@2.9.3) transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/profiler@2.9.3: resolution: {integrity: sha512-pyHc9lw8VZDfgZoeZWZU9J0CVEv1Zw9O5+e0DJPDPHuXJYr72ZAOhbljtU3owWKAeW+++Q2AZWkbUGEOjI/e6g==} @@ -1670,6 +1716,7 @@ packages: '@parcel/diagnostic': 2.9.3 '@parcel/events': 2.9.3 chrome-trace-event: 1.0.3 + dev: true /@parcel/reporter-cli@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-pZiEvQpuXFuQBafMHxkDmwH8CnnK9sWHwa3bSbsnt385aUahtE8dpY0LKt+K1zfB6degKoczN6aWVj9WycQuZQ==} @@ -1692,6 +1739,7 @@ packages: '@parcel/utils': 2.9.3 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/reporter-tracer@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-9cXpKWk0m6d6d+4+TlAdOe8XIPaFEIKGWMWG+5SFAQE08u3olet4PSvd49F4+ZZo5ftRE7YI3j6xNbXvJT8KGw==} @@ -1713,6 +1761,7 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/runtime-browser-hmr@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-EgiDIDrVAWpz7bOzWXqVinQkaFjLwT34wsonpXAbuI7f7r00d52vNAQC9AMu+pTijA3gyKoJ+Q4NWPMZf7ACDA==} @@ -1722,6 +1771,7 @@ packages: '@parcel/utils': 2.9.3 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/runtime-js@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-EvIy+qXcKnB5qxHhe96zmJpSAViNVXHfQI5RSdZ2a7CPwORwhTI+zPNT9sb7xb/WwFw/WuTTgzT40b41DceU6Q==} @@ -1733,6 +1783,7 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/runtime-react-refresh@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-XBgryZQIyCmi6JwEfMUCmINB3l1TpTp9a2iFxmYNpzHlqj4Ve0saKaqWOVRLvC945ZovWIBzcSW2IYqWKGtbAA==} @@ -1744,6 +1795,7 @@ packages: react-refresh: 0.9.0 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/runtime-service-worker@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-qLJLqv1mMdWL7gyh8aKBFFAuEiJkhUUgLKpdn6eSfH/R7kTtb76WnOwqUrhvEI9bZFUM/8Pa1bzJnPpqSOM+Sw==} @@ -1754,12 +1806,14 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/source-map@2.1.1: resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} engines: {node: ^12.18.3 || >=14} dependencies: detect-libc: 1.0.3 + dev: true /@parcel/transformer-babel@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-pURtEsnsp3h6tOBDuzh9wRvVtw4PgIlqwAArIWdrG7iwqOUYv9D8ME4+ePWEu7MQWAp58hv9pTJtqWv4T+Sq8A==} @@ -1775,6 +1829,7 @@ packages: semver: 7.5.4 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/transformer-css@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-duWMdbEBBPjg3fQdXF16iWIdThetDZvCs2TpUD7xOlXH6kR0V5BJy8ONFT15u1RCqIV9hSNGaS3v3I9YRNY5zQ==} @@ -1789,6 +1844,7 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/transformer-html@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-0NU4omcHzFXA1seqftAXA2KNZaMByoKaNdXnLgBgtCGDiYvOcL+6xGHgY6pw9LvOh5um10KI5TxSIMILoI7VtA==} @@ -1805,6 +1861,7 @@ packages: srcset: 4.0.0 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/transformer-image@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-7CEe35RaPadQzLIuxzTtIxnItvOoy46hcbXtOdDt6lmVa4omuOygZYRIya2lsGIP4JHvAaALMb5nt99a1uTwJg==} @@ -1817,6 +1874,7 @@ packages: '@parcel/utils': 2.9.3 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) nullthrows: 1.1.1 + dev: true /@parcel/transformer-js@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-Z2MVVg5FYcPOfxlUwxqb5l9yjTMEqE3KI3zq2MBRUme6AV07KxLmCDF23b6glzZlHWQUE8MXzYCTAkOPCcPz+Q==} @@ -1835,6 +1893,7 @@ packages: nullthrows: 1.1.1 regenerator-runtime: 0.13.11 semver: 7.5.4 + dev: true /@parcel/transformer-json@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-yNL27dbOLhkkrjaQjiQ7Im9VOxmkfuuSNSmS0rA3gEjVcm07SLKRzWkAaPnyx44Lb6bzyOTWwVrb9aMmxgADpA==} @@ -1844,6 +1903,7 @@ packages: json5: 2.2.3 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/transformer-postcss@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-HoDvPqKzhpmvMmHqQhDnt8F1vH61m6plpGiYaYnYv2Om4HHi5ZIq9bO+9QLBnTKfaZ7ndYSefTKOxTYElg7wyw==} @@ -1859,6 +1919,7 @@ packages: semver: 7.5.4 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/transformer-posthtml@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-2fQGgrzRmaqbWf3y2/T6xhqrNjzqMMKksqJzvc8TMfK6f2kg3Ddjv158eaSW2JdkV39aY7tvAOn5f1uzo74BMA==} @@ -1873,6 +1934,7 @@ packages: semver: 7.5.4 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/transformer-raw@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-oqdPzMC9QzWRbY9J6TZEqltknjno+dY24QWqf8ondmdF2+W+/2mRDu59hhCzQrqUHgTq4FewowRZmSfpzHxwaQ==} @@ -1881,6 +1943,7 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/transformer-react-refresh-wrap@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-cb9NyU6oJlDblFIlzqIE8AkvRQVGl2IwJNKwD4PdE7Y6sq2okGEPG4hOw3k/Y9JVjM4/2pUORqvjSRhWwd9oVQ==} @@ -1891,17 +1954,7 @@ packages: react-refresh: 0.9.0 transitivePeerDependencies: - '@parcel/core' - - /@parcel/transformer-sass@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-i9abj9bKg3xCHghJyTM3rUVxIEn9n1Rl+DFdpyNAD8VZ52COfOshFDQOWNuhU1hEnJOFYCjnfcO0HRTsg3dWmg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - sass: 1.66.1 - transitivePeerDependencies: - - '@parcel/core' - dev: false + dev: true /@parcel/transformer-svg@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-ypmE+dzB09IMCdEAkOsSxq1dEIm2A3h67nAFz4qbfHbwNgXBUuy/jB3ZMwXN/cO0f7SBh/Ap8Jhq6vmGqB5tWw==} @@ -1917,6 +1970,7 @@ packages: semver: 7.5.4 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/types@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-NSNY8sYtRhvF1SqhnIGgGvJocyWt1K8Tnw5cVepm0g38ywtX6mwkBvMkmeehXkII4mSUn+frD9wGsydTunezvA==} @@ -1930,6 +1984,7 @@ packages: utility-types: 3.10.0 transitivePeerDependencies: - '@parcel/core' + dev: true /@parcel/utils@2.9.3: resolution: {integrity: sha512-cesanjtj/oLehW8Waq9JFPmAImhoiHX03ihc3JTWkrvJYSbD7wYKCDgPAM3JiRAqvh1LZ6P699uITrYWNoRLUg==} @@ -1943,6 +1998,7 @@ packages: '@parcel/source-map': 2.1.1 chalk: 4.1.2 nullthrows: 1.1.1 + dev: true /@parcel/watcher-android-arm64@2.3.0: resolution: {integrity: sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==} @@ -1950,6 +2006,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@parcel/watcher-darwin-arm64@2.3.0: @@ -1958,6 +2015,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@parcel/watcher-darwin-x64@2.3.0: @@ -1966,6 +2024,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@parcel/watcher-freebsd-x64@2.3.0: @@ -1974,6 +2033,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /@parcel/watcher-linux-arm-glibc@2.3.0: @@ -1982,6 +2042,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@parcel/watcher-linux-arm64-glibc@2.3.0: @@ -1990,6 +2051,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@parcel/watcher-linux-arm64-musl@2.3.0: @@ -1998,6 +2060,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@parcel/watcher-linux-x64-glibc@2.3.0: @@ -2006,6 +2069,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@parcel/watcher-linux-x64-musl@2.3.0: @@ -2014,6 +2078,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@parcel/watcher-win32-arm64@2.3.0: @@ -2022,6 +2087,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@parcel/watcher-win32-ia32@2.3.0: @@ -2030,6 +2096,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@parcel/watcher-win32-x64@2.3.0: @@ -2038,6 +2105,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@parcel/watcher@2.3.0: @@ -2062,6 +2130,7 @@ packages: '@parcel/watcher-win32-arm64': 2.3.0 '@parcel/watcher-win32-ia32': 2.3.0 '@parcel/watcher-win32-x64': 2.3.0 + dev: true /@parcel/workers@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-zRrDuZJzTevrrwElYosFztgldhqW6G9q5zOeQXfVQFkkEJCNfg36ixeiofKRU8uu2x+j+T6216mhMNB6HiuY+w==} @@ -2076,6 +2145,7 @@ packages: '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 nullthrows: 1.1.1 + dev: true /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -2128,6 +2198,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@swc/core-darwin-x64@1.3.80: @@ -2136,6 +2207,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm-gnueabihf@1.3.80: @@ -2144,6 +2216,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm64-gnu@1.3.80: @@ -2152,6 +2225,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-arm64-musl@1.3.80: @@ -2160,6 +2234,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-x64-gnu@1.3.80: @@ -2168,6 +2243,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-linux-x64-musl@1.3.80: @@ -2176,6 +2252,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@swc/core-win32-arm64-msvc@1.3.80: @@ -2184,6 +2261,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core-win32-ia32-msvc@1.3.80: @@ -2192,6 +2270,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core-win32-x64-msvc@1.3.80: @@ -2200,6 +2279,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@swc/core@1.3.80: @@ -2224,14 +2304,17 @@ packages: '@swc/core-win32-arm64-msvc': 1.3.80 '@swc/core-win32-ia32-msvc': 1.3.80 '@swc/core-win32-x64-msvc': 1.3.80 + dev: true /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.6.2 + dev: true /@swc/types@0.1.4: resolution: {integrity: sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==} + dev: true /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} @@ -2249,6 +2332,7 @@ packages: /@trysound/sax@0.2.0: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} + dev: true /@types/adm-zip@0.5.0: resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} @@ -2273,6 +2357,12 @@ packages: resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} dev: true + /@types/esm@3.2.0: + resolution: {integrity: sha512-aXemgVPnF1s0PQin04Ei8zTWaNwUdc4pmhZDg8LBW6QEl9kBWVItAUOLGUY5H5xduAmbL1pLGH1X/PN0+4R9tg==} + dependencies: + '@types/node': 18.17.11 + dev: false + /@types/highlightjs@9.12.2: resolution: {integrity: sha512-oW2pEKwshxwBW1nVUizWQg/tnhboRtKrUKnF2hd6l4BZ0shr5ZjQ4ra/82+NEH6uWeM8JjrMGCux5enQXOQbTA==} dev: true @@ -2515,6 +2605,7 @@ packages: /abortcontroller-polyfill@1.7.5: resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} + dev: true /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -2624,6 +2715,7 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -2660,6 +2752,7 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -2748,6 +2841,7 @@ packages: resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} dependencies: safe-buffer: 5.2.1 + dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2777,6 +2871,7 @@ packages: /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true /boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} @@ -2825,6 +2920,7 @@ packages: electron-to-chromium: 1.4.503 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) + dev: true /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -2892,6 +2988,7 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + dev: true /callsites@4.1.0: resolution: {integrity: sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==} @@ -2904,6 +3001,7 @@ packages: /caniuse-lite@1.0.30001523: resolution: {integrity: sha512-I5q5cisATTPZ1mc588Z//pj/Ox80ERYDfR71YnvY7raS/NOk8xXlZcB0sF7JdqaV//kOaa6aus7lRfpdnt1eBA==} + dev: true /chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} @@ -2923,6 +3021,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2930,6 +3029,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} @@ -2957,6 +3057,7 @@ packages: /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} + dev: true /chromium-pickle-js@0.2.0: resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} @@ -3049,6 +3150,7 @@ packages: /clone@2.1.2: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} + dev: true /code-point-at@1.1.0: resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} @@ -3073,6 +3175,7 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -3082,6 +3185,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -3111,6 +3215,7 @@ packages: /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} + dev: true /comment-json@4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} @@ -3176,6 +3281,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 + dev: true /crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} @@ -3320,6 +3426,7 @@ packages: domhandler: 4.3.1 domutils: 2.8.0 nth-check: 2.1.1 + dev: true /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} @@ -3327,16 +3434,19 @@ packages: dependencies: mdn-data: 2.0.14 source-map: 0.6.1 + dev: true /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} + dev: true /csso@4.2.0: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} dependencies: css-tree: 1.1.3 + dev: true /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -3440,6 +3550,7 @@ packages: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true + dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -3475,15 +3586,18 @@ packages: domelementtype: 2.3.0 domhandler: 4.3.1 entities: 2.2.0 + dev: true /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true /domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: true /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -3491,6 +3605,7 @@ packages: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 + dev: true /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} @@ -3514,16 +3629,19 @@ packages: /dotenv-expand@5.1.0: resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + dev: true /dotenv@7.0.0: resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} engines: {node: '>=6'} + dev: true /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} /electron-to-chromium@1.4.503: resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} + dev: true /elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -3544,15 +3662,18 @@ packages: /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true /entities@3.0.1: resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} engines: {node: '>=0.12'} + dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true /es-abstract@1.22.1: resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} @@ -3642,34 +3763,14 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.16.17: - resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.16.17 - '@esbuild/android-arm64': 0.16.17 - '@esbuild/android-x64': 0.16.17 - '@esbuild/darwin-arm64': 0.16.17 - '@esbuild/darwin-x64': 0.16.17 - '@esbuild/freebsd-arm64': 0.16.17 - '@esbuild/freebsd-x64': 0.16.17 - '@esbuild/linux-arm': 0.16.17 - '@esbuild/linux-arm64': 0.16.17 - '@esbuild/linux-ia32': 0.16.17 - '@esbuild/linux-loong64': 0.16.17 - '@esbuild/linux-mips64el': 0.16.17 - '@esbuild/linux-ppc64': 0.16.17 - '@esbuild/linux-riscv64': 0.16.17 - '@esbuild/linux-s390x': 0.16.17 - '@esbuild/linux-x64': 0.16.17 - '@esbuild/netbsd-x64': 0.16.17 - '@esbuild/openbsd-x64': 0.16.17 - '@esbuild/sunos-x64': 0.16.17 - '@esbuild/win32-arm64': 0.16.17 - '@esbuild/win32-ia32': 0.16.17 - '@esbuild/win32-x64': 0.16.17 + /esbuild-sass-plugin@2.13.0(esbuild@0.19.2): + resolution: {integrity: sha512-tpuoCPjcigaG+nKTEmDLBcmt81LADhwa5nGYA6memd56bhf27puRFlbQThvPWjypk51dsfSc30I18s4OdsmDag==} + peerDependencies: + esbuild: ^0.19.1 + dependencies: + esbuild: 0.19.2 + resolve: 1.22.4 + sass: 1.66.1 dev: false /esbuild@0.17.19: @@ -3702,6 +3803,36 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true + /esbuild@0.19.2: + resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.2 + '@esbuild/android-arm64': 0.19.2 + '@esbuild/android-x64': 0.19.2 + '@esbuild/darwin-arm64': 0.19.2 + '@esbuild/darwin-x64': 0.19.2 + '@esbuild/freebsd-arm64': 0.19.2 + '@esbuild/freebsd-x64': 0.19.2 + '@esbuild/linux-arm': 0.19.2 + '@esbuild/linux-arm64': 0.19.2 + '@esbuild/linux-ia32': 0.19.2 + '@esbuild/linux-loong64': 0.19.2 + '@esbuild/linux-mips64el': 0.19.2 + '@esbuild/linux-ppc64': 0.19.2 + '@esbuild/linux-riscv64': 0.19.2 + '@esbuild/linux-s390x': 0.19.2 + '@esbuild/linux-x64': 0.19.2 + '@esbuild/netbsd-x64': 0.19.2 + '@esbuild/openbsd-x64': 0.19.2 + '@esbuild/sunos-x64': 0.19.2 + '@esbuild/win32-arm64': 0.19.2 + '@esbuild/win32-ia32': 0.19.2 + '@esbuild/win32-x64': 0.19.2 + dev: false + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -3713,6 +3844,7 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -3854,6 +3986,11 @@ packages: - supports-color dev: true + /esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + dev: false + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4092,7 +4229,6 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} @@ -4207,6 +4343,7 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} @@ -4301,10 +4438,12 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-own-prop@2.0.0: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} @@ -4343,7 +4482,6 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} @@ -4392,6 +4530,7 @@ packages: posthtml: 0.16.6 svgo: 2.8.0 timsort: 0.3.0 + dev: true /htmlparser2@7.2.0: resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} @@ -4400,6 +4539,7 @@ packages: domhandler: 4.3.1 domutils: 2.8.0 entities: 3.0.1 + dev: true /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -4462,6 +4602,7 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} @@ -4596,6 +4737,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} @@ -4640,7 +4782,6 @@ packages: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 - dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -4727,6 +4868,7 @@ packages: /is-json@2.0.1: resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} + dev: true /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -4926,18 +5068,21 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 + dev: true /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4951,6 +5096,7 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: true /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -4995,6 +5141,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /lightningcss-darwin-x64@1.21.7: @@ -5003,6 +5150,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /lightningcss-freebsd-x64@1.21.7: @@ -5011,6 +5159,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /lightningcss-linux-arm-gnueabihf@1.21.7: @@ -5019,6 +5168,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /lightningcss-linux-arm64-gnu@1.21.7: @@ -5027,6 +5177,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /lightningcss-linux-arm64-musl@1.21.7: @@ -5035,6 +5186,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /lightningcss-linux-x64-gnu@1.21.7: @@ -5043,6 +5195,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /lightningcss-linux-x64-musl@1.21.7: @@ -5051,6 +5204,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /lightningcss-win32-x64-msvc@1.21.7: @@ -5059,6 +5213,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /lightningcss@1.21.7: @@ -5076,9 +5231,11 @@ packages: lightningcss-linux-x64-gnu: 1.21.7 lightningcss-linux-x64-musl: 1.21.7 lightningcss-win32-x64-msvc: 1.21.7 + dev: true /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true /listr-input@0.2.1: resolution: {integrity: sha512-oa8iVG870qJq+OuuMK3DjGqFcwsK1SDu+kULp9kEq09TY231aideIZenr3lFOQdASpAr6asuyJBbX62/a3IIhg==} @@ -5157,6 +5314,7 @@ packages: '@lmdb/lmdb-linux-arm64': 2.7.11 '@lmdb/lmdb-linux-x64': 2.7.11 '@lmdb/lmdb-win32-x64': 2.7.11 + dev: true /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -5273,6 +5431,7 @@ packages: /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true /meow@12.1.0: resolution: {integrity: sha512-SvSqzS5ktjGoySdCwxQI16iO/ID1LtxM03QvJ4FF2H5cCtXLN7YbfKBCL9btqXSSuJ5TNG4UH6wvWtXZuvgvrw==} @@ -5294,6 +5453,7 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 + dev: true /mimic-fn@1.2.0: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} @@ -5366,17 +5526,20 @@ packages: '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2 '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2 '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2 + dev: true optional: true /msgpackr@1.8.5: resolution: {integrity: sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==} optionalDependencies: msgpackr-extract: 3.0.2 + dev: true /msgpackr@1.9.7: resolution: {integrity: sha512-baUNaLvKQvVhzfWTNO07njwbZK1Lxjtb0P1JL6/EhXdLTHzR57/mZqqJC39TtQKvOmkJA4pcejS4dbk7BDgLLA==} optionalDependencies: msgpackr-extract: 3.0.2 + dev: true /mute-stream@0.0.7: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} @@ -5408,9 +5571,11 @@ packages: /node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} + dev: true /node-addon-api@7.0.0: resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} + dev: true /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} @@ -5440,15 +5605,18 @@ packages: /node-gyp-build-optional-packages@5.0.6: resolution: {integrity: sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==} hasBin: true + dev: true /node-gyp-build-optional-packages@5.0.7: resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} hasBin: true requiresBuild: true + dev: true optional: true /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} @@ -5554,9 +5722,11 @@ packages: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 + dev: true /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + dev: true /number-is-nan@1.0.1: resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} @@ -5686,6 +5856,7 @@ packages: /ordered-binary@1.4.1: resolution: {integrity: sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==} + dev: true /org-regex@1.0.0: resolution: {integrity: sha512-7bqkxkEJwzJQUAlyYniqEZ3Ilzjh0yoa62c7gL6Ijxj5bEpPL+8IE1Z0PFj0ywjjXQcdrwR51g9MIcLezR0hKQ==} @@ -5844,6 +6015,7 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true /parent-module@2.0.0: resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} @@ -5872,6 +6044,7 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -5899,14 +6072,15 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + dev: true /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -5928,24 +6102,28 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true /posthtml-parser@0.10.2: resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} engines: {node: '>=12'} dependencies: htmlparser2: 7.2.0 + dev: true /posthtml-parser@0.11.0: resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} engines: {node: '>=12'} dependencies: htmlparser2: 7.2.0 + dev: true /posthtml-render@3.0.0: resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} engines: {node: '>=12'} dependencies: is-json: 2.0.1 + dev: true /posthtml@0.16.6: resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} @@ -5953,6 +6131,7 @@ packages: dependencies: posthtml-parser: 0.11.0 posthtml-render: 3.0.0 + dev: true /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -6026,6 +6205,7 @@ packages: /react-error-overlay@6.0.9: resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} + dev: true /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -6034,6 +6214,7 @@ packages: /react-refresh@0.9.0: resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} engines: {node: '>=0.10.0'} + dev: true /read-file-safe@1.0.10: resolution: {integrity: sha512-qW25fd2uMX3dV6Ui/R0jYK1MhTpjx8FO/VHaHTXzwWsGnkNwLRcqYfCXd9qDM+NZ273DPUvP2RaimYuLSu1K/g==} @@ -6095,6 +6276,7 @@ packages: /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: true /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} @@ -6152,6 +6334,7 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + dev: true /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} @@ -6176,7 +6359,6 @@ packages: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} @@ -6275,6 +6457,7 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -6388,6 +6571,7 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -6414,10 +6598,12 @@ packages: /srcset@4.0.0: resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} engines: {node: '>=12'} + dev: true /stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true /standalone-electron-types@1.0.0: resolution: {integrity: sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==} @@ -6567,12 +6753,14 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: true /supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} @@ -6585,7 +6773,6 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /svgo@2.8.0: resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} @@ -6599,6 +6786,7 @@ packages: csso: 4.2.0 picocolors: 1.0.0 stable: 0.1.8 + dev: true /symbol-observable@1.2.0: resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} @@ -6633,6 +6821,7 @@ packages: /timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} + dev: true /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} @@ -6661,6 +6850,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -6693,6 +6883,7 @@ packages: /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + dev: true /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -6832,6 +7023,7 @@ packages: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} @@ -6865,6 +7057,7 @@ packages: /utility-types@3.10.0: resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} engines: {node: '>= 4'} + dev: true /vali-date@1.0.0: resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==} @@ -6912,6 +7105,7 @@ packages: /weak-lru-cache@1.2.2: resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} + dev: true /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} @@ -7058,6 +7252,7 @@ packages: /xxhash-wasm@0.4.2: resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==} + dev: true /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} diff --git a/scripts/build-bin.mts b/scripts/build-bin.mts new file mode 100644 index 000000000..3c31be376 --- /dev/null +++ b/scripts/build-bin.mts @@ -0,0 +1,28 @@ +import esbuild from "esbuild"; +import { readFileSync } from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +const NODE_VERSION = "14"; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); + +const packageJson = JSON.parse(readFileSync(path.join(dirname, "..", "package.json"), "utf-8")); +const packageNames = Object.keys(packageJson.dependencies); + +const context = await esbuild.context({ + absWorkingDir: path.join(dirname, ".."), + bundle: true, + minify: true, + format: "esm", + logLevel: "info", + metafile: true, + entryPoints: ["bin/index.mts"], + platform: "node", + target: `node${NODE_VERSION}`, + outfile: "bin.mjs", + external: packageNames, +}); + +await context.rebuild(); +context.dispose(); diff --git a/scripts/build.mts b/scripts/build.mts index b8d0c4b5f..10640b352 100644 --- a/scripts/build.mts +++ b/scripts/build.mts @@ -11,6 +11,7 @@ import { rmSync, writeFileSync, } from "fs"; +import { logBuildPlugin } from "src/util.mjs"; const NODE_VERSION = "14"; const CHROME_VERSION = "91"; @@ -51,6 +52,8 @@ const preBundle: esbuild.Plugin = { const plugins: esbuild.Plugin[] = []; +if (!watch) plugins.push(logBuildPlugin); + if (production) { rmSync("dist", { recursive: true, force: true }); plugins.push(preBundle); @@ -66,13 +69,13 @@ const common: esbuild.BuildOptions = { sourcemap: !production, format: "cjs" as esbuild.Format, logLevel: "info", - watch, plugins, + metafile: true, }; -Promise.all([ +const contexts = await Promise.all([ // Main - esbuild.build({ + esbuild.context({ ...common, entryPoints: ["src/main/index.ts"], platform: "node", @@ -81,7 +84,7 @@ Promise.all([ external: ["electron"], }), // Preload - esbuild.build({ + esbuild.context({ ...common, entryPoints: ["src/preload.ts"], platform: "node", @@ -90,7 +93,7 @@ Promise.all([ external: ["electron"], }), // Renderer - esbuild.build({ + esbuild.context({ ...common, entryPoints: ["src/renderer/index.ts"], platform: "browser", @@ -99,3 +102,13 @@ Promise.all([ format: "esm", }), ]); +await Promise.all( + contexts.map(async (context) => { + if (watch) { + await context.watch(); + } else { + await context.rebuild().catch(() => {}); + context.dispose(); + } + }), +); diff --git a/src/util.mts b/src/util.mts index 1fe485cd7..99a1f8a85 100644 --- a/src/util.mts +++ b/src/util.mts @@ -1,6 +1,8 @@ +import esbuild from "esbuild"; import { execSync } from "child_process"; import { chownSync, existsSync, mkdirSync, statSync, writeFileSync } from "fs"; -import { join } from "path"; +import path, { join } from "path"; +import chalk from "chalk"; const REPLUGGED_FOLDER_NAME = "replugged"; export const configPathFn = (): string => { @@ -79,3 +81,67 @@ if (!existsSync(QUICK_CSS_FILE)) { chownSync(QUICK_CSS_FILE, REAL_UID, REAL_GID); } } + +export const formatBytes = (bytes: number): string => { + if (bytes === 0) return "0b"; + + const k = 1024; + const dm = 1; + const sizes = ["b", "kb", "mb", "gb"]; + const i = Math.floor(Math.log(bytes) / Math.log(k)); + + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))}${sizes[i]}`; +}; + +export const logBuildPlugin: esbuild.Plugin = { + name: "logBuild", + setup: (build) => { + let start: number; + + build.onStart(() => { + start = Date.now(); + }); + build.onEnd((result) => { + const time = Date.now() - start; + const files = result.metafile?.outputs || {}; + + const fileData = Object.entries(files) + .sort(([a], [b]) => { + const aIsMap = a.endsWith(".map"); + const bIsMap = b.endsWith(".map"); + if (aIsMap && !bIsMap) return 1; + if (!aIsMap && bIsMap) return -1; + + return 0; + }) + .map(([file, { bytes }]) => { + const { sep } = path; + const dirname = path.dirname(file); + const basename = path.basename(file); + + const coloredName = [dirname, sep, chalk.bold(basename)].join(""); + + const sizeText = formatBytes(bytes); + const isBigFile = bytes > Math.pow(1024, 2) && !file.endsWith(".map"); // 1mb + const coloredSize = isBigFile ? chalk.yellow(sizeText) : chalk.cyan(sizeText); + const suffix = isBigFile ? chalk.yellow(" ⚠️") : ""; + + return { + name: coloredName, + size: coloredSize, + suffix, + }; + }); + const maxNameLength = Math.max(...fileData.map(({ name }) => name.length)); + const maxSizeLength = Math.max(...fileData.map(({ size }) => size.length)); + + console.log(""); + fileData.forEach(({ name, size, suffix }) => { + console.log(` ${name.padEnd(maxNameLength + 1)} ${size.padStart(maxSizeLength)}${suffix}`); + }); + console.log(""); + + console.log(`⚡ ${chalk.green(`Done in ${time.toLocaleString()}ms`)}`); + }); + }, +}; diff --git a/tsconfig.json b/tsconfig.json index 6a2e2f36d..1130d2a66 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -112,5 +112,5 @@ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "exclude": ["dist", "docs"] + "exclude": ["dist", "docs", "bin.mjs"] } From ff7e806dc6c71b47662961a16bc5911a2c06ede3 Mon Sep 17 00:00:00 2001 From: LoneWeeb <73281112+Tharki-God@users.noreply.github.com> Date: Fri, 15 Sep 2023 03:00:49 +0530 Subject: [PATCH 02/36] Slash command api (#501) --- cspell.json | 1 + pnpm-lock.yaml | 70 +-- src/renderer/apis/commands.ts | 256 ++++++++++- src/renderer/coremods/commands/commands.ts | 418 ++++++++++++++++++ src/renderer/coremods/commands/index.ts | 291 ++++++++++++ .../coremods/commands/plaintextPatches.ts | 14 + src/renderer/managers/coremods.ts | 4 + src/renderer/modules/common/constants.ts | 4 + src/renderer/modules/common/i18n.ts | 2 +- src/renderer/modules/common/messages.ts | 52 ++- src/renderer/modules/injector.ts | 43 +- src/renderer/replugged.ts | 1 - src/types/coremods/commands.ts | 97 ++++ src/types/discord.ts | 136 +++++- src/types/index.ts | 11 +- src/types/util.ts | 6 - 16 files changed, 1318 insertions(+), 88 deletions(-) create mode 100644 src/renderer/coremods/commands/commands.ts create mode 100644 src/renderer/coremods/commands/index.ts create mode 100644 src/renderer/coremods/commands/plaintextPatches.ts create mode 100644 src/types/coremods/commands.ts diff --git a/cspell.json b/cspell.json index f5f71c635..2e4895344 100644 --- a/cspell.json +++ b/cspell.json @@ -29,6 +29,7 @@ "fontawesome", "Fonticons", "getent", + "gifv", "globstar", "gpgsign", "groupstart", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f944749f8..cc3c374b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,10 +117,10 @@ devDependencies: version: 17.0.24 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.1.6) + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': specifier: ^5.62.0 - version: 5.62.0(eslint@8.48.0)(typescript@5.1.6) + version: 5.62.0(eslint@8.48.0)(typescript@5.2.2) cspell: specifier: ^6.31.3 version: 6.31.3 @@ -165,10 +165,10 @@ devDependencies: version: 3.13.1 typedoc: specifier: ^0.23.28 - version: 0.23.28(typescript@5.1.6) + version: 0.23.28(typescript@5.2.2) typescript: specifier: ^5.1.6 - version: 5.1.6 + version: 5.2.2 packages: @@ -2473,7 +2473,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.1.6): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2485,23 +2485,23 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.48.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.1.6) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.48.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.1.6): + /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.2.2): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2513,10 +2513,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) debug: 4.3.4 eslint: 8.48.0 - typescript: 5.1.6 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -2529,7 +2529,7 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.48.0)(typescript@5.1.6): + /@typescript-eslint/type-utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2539,12 +2539,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.48.0 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -2554,7 +2554,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2569,13 +2569,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2586,7 +2586,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -2643,8 +2643,8 @@ packages: uri-js: 4.4.1 dev: true - /all-package-names@2.0.720: - resolution: {integrity: sha512-+7AsuNLAVbpHsj+qxf/p0kSqj3uW29AOsSLrS8LdikXREkZichjCOiTTr7JQj39KUlVqQsJ6NzxhnizK0N8weA==} + /all-package-names@2.0.721: + resolution: {integrity: sha512-g7KDA6eNNzY07X39kfiotxns4etbl3JTe9T+lVS+ki0xcQPPyMFNuiM1JHi2rSdJiukhauzKsCMqT/htI6ma0A==} hasBin: true dependencies: commander-version: 1.1.0 @@ -3720,8 +3720,8 @@ packages: which-typed-array: 1.1.11 dev: true - /es-iterator-helpers@1.0.13: - resolution: {integrity: sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==} + /es-iterator-helpers@1.0.14: + resolution: {integrity: sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==} dependencies: asynciterator.prototype: 1.0.0 call-bind: 1.0.2 @@ -3892,7 +3892,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - es-iterator-helpers: 1.0.13 + es-iterator-helpers: 1.0.14 eslint: 8.48.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 @@ -4877,7 +4877,7 @@ packages: /is-name-taken@2.0.0: resolution: {integrity: sha512-W+FUWF5g7ONVJTx3rldZeVizmPzrMMUdscpSQ96vyYerx+4b2NcqaujLJJDWruGzE0FjzGZO9RFIipOGxx/WIw==} dependencies: - all-package-names: 2.0.720 + all-package-names: 2.0.721 package-name-conflict: 1.0.3 validate-npm-package-name: 3.0.0 dev: true @@ -6852,14 +6852,14 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /tsutils@3.21.0(typescript@5.1.6): + /tsutils@3.21.0(typescript@5.2.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.1.6 + typescript: 5.2.2 dev: true /tsx@3.12.7: @@ -6946,7 +6946,7 @@ packages: dependencies: is-typedarray: 1.0.0 - /typedoc@0.23.28(typescript@5.1.6): + /typedoc@0.23.28(typescript@5.2.2): resolution: {integrity: sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==} engines: {node: '>= 14.14'} hasBin: true @@ -6957,7 +6957,7 @@ packages: marked: 4.3.0 minimatch: 7.4.6 shiki: 0.14.3 - typescript: 5.1.6 + typescript: 5.2.2 dev: true /types-eslintrc@1.0.3: @@ -6977,8 +6977,8 @@ packages: types-json: 1.2.2 dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true dev: true diff --git a/src/renderer/apis/commands.ts b/src/renderer/apis/commands.ts index ca761bb8a..fc13ba012 100644 --- a/src/renderer/apis/commands.ts +++ b/src/renderer/apis/commands.ts @@ -1,31 +1,251 @@ -import type { RepluggedCommand } from "../../types"; +import type { Channel, Guild } from "discord-types/general"; +import type { + AnyRepluggedCommand, + CommandOptionReturn, + CommandOptions, + GetCommandOption, + GetCommandOptions, + GetValueType, + RepluggedCommand, + RepluggedCommandResult, + RepluggedCommandSection, +} from "../../types"; +import { ApplicationCommandOptionType } from "../../types"; +import { constants, i18n, messages, users } from "../modules/common"; +import type { Store } from "../modules/common/flux"; import { Logger } from "../modules/logger"; +import { getByStoreName } from "../modules/webpack"; -const commandsLogger = Logger.api("Commands"); +const logger = Logger.api("Commands"); -class CommandsAPI extends EventTarget { - public commands = new Map(); +interface CommandsAndSection { + section: RepluggedCommandSection; + commands: Map; +} + +export const commandAndSections = new Map(); - public registerCommand(command: RepluggedCommand): void { - if (this.commands.has(command.name)) { - commandsLogger.error(`Command “${command.name}” is already registered!`); - return; +export const defaultSection: RepluggedCommandSection = Object.freeze({ + id: "replugged", + name: "Replugged", + type: 1, + icon: "https://cdn.discordapp.com/attachments/1000955992068079716/1004196106055454820/Replugged-Logo.png", +}); + +export class CommandInteraction { + public options: T[]; + public channel: Channel; + public guild: Guild; + public constructor(props: { options: T[]; channel: Channel; guild: Guild }) { + const UploadAttachmentStore = getByStoreName< + Store & { + getUpload: ( + channelId: string, + optionName: string, + draftType: 0, + ) => { uploadedFilename?: string; item?: { file: File } }; + } + >("UploadAttachmentStore")!; + this.options = props.options; + this.channel = props.channel; + this.guild = props.guild; + for (const option of this.options.filter( + (o) => o.type === ApplicationCommandOptionType.Attachment, + )) { + const { uploadedFilename, item } = + UploadAttachmentStore.getUpload(props.channel.id, option.name, 0) ?? {}; + option.value = { uploadedFilename, file: item?.file }; } + } - this.commands.set(command.name, command); - this.dispatchEvent(new CustomEvent("rpCommandAdded", { detail: { command } })); + public getValue( + name: K, + defaultValue?: D, + ): GetValueType, D> { + return (this.options.find((o) => o.name === name)?.value ?? defaultValue) as GetValueType< + GetCommandOption, + D + >; } +} + +/** + * @internal + * @hidden + */ +async function executeCommand( + cmdExecutor: + | (( + interaction: CommandInteraction>, + ) => Promise | RepluggedCommandResult) + | undefined, + args: Array>, + currentInfo: { guild: Guild; channel: Channel }, + command: RepluggedCommand, +): Promise { + try { + const currentChannelId = currentInfo.channel.id; + const loadingMessage = messages.createBotMessage({ + channelId: currentChannelId, + content: "", + loggingName: "Replugged", + }); + + Object.assign(loadingMessage.author, { + username: "Replugged", + avatar: "replugged", + }); - public unregisterCommand(name: string): void { - if (this.commands.has(name)) { - this.dispatchEvent( - new CustomEvent("rpCommandRemoved", { detail: { command: this.commands.get(name) } }), - ); - this.commands.delete(name); + Object.assign(loadingMessage, { + flags: constants.MessageFlags.EPHEMERAL + constants.MessageFlags.LOADING, // adding loading too + state: "SENDING", // Keep it a little faded + interaction: { + // eslint-disable-next-line @typescript-eslint/naming-convention + name_localized: command.displayName, + name: command.name, + type: command.type, + id: command.id, + user: users.getCurrentUser(), + }, + // eslint-disable-next-line @typescript-eslint/naming-convention + interaction_data: { + name: command.displayName, + }, + type: 20, + }); + messages.receiveMessage(currentChannelId, loadingMessage, true); + const interaction = new CommandInteraction({ options: args, ...currentInfo }); + const result = await cmdExecutor?.(interaction); + messages.dismissAutomatedMessage(loadingMessage); + + if ((!result?.result && !result?.embeds) || !currentChannelId) return; + + if (result.send) { + void messages.sendMessage(currentChannelId, { + content: result.result!, + invalidEmojis: [], + validNonShortcutEmojis: [], + tts: false, + }); } else { - commandsLogger.error(`Command “${name}” is not registered!`); + const botMessage = messages.createBotMessage({ + channelId: currentChannelId, + content: result.result || "", + embeds: result.embeds || [], + loggingName: "Replugged", + }); + + Object.assign(botMessage.author, { + username: "Replugged", + avatar: "replugged", + }); + + Object.assign(botMessage, { + interaction: { + // eslint-disable-next-line @typescript-eslint/naming-convention + name_localized: command.displayName, + name: command.name, + type: command.type, + id: command.id, + user: users.getCurrentUser(), + }, + // eslint-disable-next-line @typescript-eslint/naming-convention + interaction_data: { + name: command.displayName, + }, + type: 20, + }); + messages.receiveMessage(currentChannelId, botMessage, true); } + } catch (error) { + logger.error(error); + const currentChannelId = currentInfo.channel.id; + const botMessage = messages.createBotMessage?.({ + channelId: currentChannelId, + content: i18n.Messages.REPLUGGED_COMMAND_ERROR_GENERIC, + embeds: [], + loggingName: "Replugged", + }); + if (!botMessage) return; + + Object.assign(botMessage.author, { + username: "Replugged", + avatar: "replugged", + }); + + Object.assign(botMessage, { + interaction: { + // eslint-disable-next-line @typescript-eslint/naming-convention + name_localized: command.displayName, + name: command.name, + type: command.type, + id: command.id, + user: users.getCurrentUser(), + }, + // eslint-disable-next-line @typescript-eslint/naming-convention + interaction_data: { + name: command.displayName, + }, + type: 20, + }); + + messages?.receiveMessage?.(currentChannelId, botMessage, true); } } -export default new CommandsAPI(); +export class CommandManager { + #section: RepluggedCommandSection; + #unregister: Array<() => void>; + public constructor() { + this.#section = defaultSection; + this.#section.type ??= 1; + this.#unregister = []; + } + + /** + * Code to register an slash command + * @param cmd Slash Command to be registered + * @returns An Callback to unregister the slash command + */ + public registerCommand(command: RepluggedCommand): () => void { + if (!commandAndSections.has(this.#section.id)) { + commandAndSections.set(this.#section.id, { + section: this.#section, + commands: new Map(), + }); + } + const currentSection = commandAndSections.get(this.#section.id); + command.applicationId = currentSection?.section.id; + command.displayName ??= command.name; + command.displayDescription ??= command.description; + command.type = 2; + command.id ??= command.name; + + command.execute ??= (args, currentInfo) => { + void executeCommand(command.executor, args ?? [], currentInfo ?? {}, command); + }; + + command.options?.map((option) => { + option.serverLocalizedName ??= option.displayName; + option.displayName ??= option.name; + option.displayDescription ??= option.description; + + return option; + }); + + currentSection?.commands.set(command.id, command as AnyRepluggedCommand); + + const uninject = (): void => { + void currentSection?.commands.delete(command.id!); + this.#unregister = this.#unregister.filter((u) => u !== uninject); + }; + this.#unregister.push(uninject); + return uninject; + } + /** + * Code to unregister all slash commands registered with this class + */ + public unregisterAllCommands(): void { + for (const unregister of this.#unregister) unregister?.(); + } +} diff --git a/src/renderer/coremods/commands/commands.ts b/src/renderer/coremods/commands/commands.ts new file mode 100644 index 000000000..214b27d61 --- /dev/null +++ b/src/renderer/coremods/commands/commands.ts @@ -0,0 +1,418 @@ +import { Messages } from "@common/i18n"; +import { Injector, plugins, themes } from "@replugged"; +import { ApplicationCommandOptionType } from "../../../types"; + +const injector = new Injector(); + +export function loadCommands(): void { + injector.utils.registerSlashCommand({ + name: Messages.REPLUGGED_COMMAND_ENABLE_NAME, + description: Messages.REPLUGGED_COMMAND_ENABLE_DESC, + options: [ + { + name: "addon", + displayName: Messages.REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME, + description: Messages.REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC, + type: ApplicationCommandOptionType.String, + required: true, + get choices() { + const choices = []; + + const disabledPlugins = Array.from(plugins.plugins.values()).filter((plugin) => + plugins.getDisabled().includes(plugin.manifest.id), + ); + + const disabledThemes = Array.from(themes.themes.values()).filter((theme) => + themes.getDisabled().includes(theme.manifest.id), + ); + + choices.push( + ...disabledPlugins + .map((plugin) => ({ + name: plugin.manifest.name, + displayName: `${Messages.REPLUGGED_PLUGIN}: ${plugin.manifest.name}`, + value: plugin.manifest.id, + })) + .sort((a, b) => a.name.localeCompare(b.name)), + ); + choices.push( + ...disabledThemes + .map((theme) => ({ + name: theme.manifest.name, + displayName: `${Messages.REPLUGGED_THEME}: ${theme.manifest.name}`, + value: theme.manifest.id, + })) + .sort((a, b) => a.name.localeCompare(b.name)), + ); + + return choices; + }, + }, + ], + executor: async (interaction) => { + try { + const addonId = interaction.getValue("addon"); + if (plugins.plugins.has(addonId)) { + await plugins.enable(addonId); + } else { + themes.enable(addonId); + } + return { + send: false, + embeds: [ + { + color: 0x1bbb1b, + title: Messages.REPLUGGED_COMMAND_SUCCESS_GENERIC, + description: Messages.REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED.format({ + type: plugins.plugins.get(addonId) + ? Messages.REPLUGGED_PLUGIN + : Messages.REPLUGGED_THEME, + name: + plugins.plugins.get(addonId)?.manifest?.name ?? + themes.themes.get(addonId)?.manifest?.name, + }), + }, + ], + }; + } catch (err) { + return { + send: false, + embeds: [ + { + color: 0xdd2d2d, + title: Messages.REPLUGGED_COMMAND_ERROR_GENERIC, + description: err as string, + }, + ], + }; + } + }, + }); + injector.utils.registerSlashCommand({ + name: Messages.REPLUGGED_COMMAND_DISABLE_NAME, + description: Messages.REPLUGGED_COMMAND_DISABLE_DESC, + options: [ + { + name: "addon", + displayName: Messages.REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME, + description: Messages.REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC, + type: ApplicationCommandOptionType.String, + required: true, + get choices() { + const choices = []; + + const enabledPlugins = Array.from(plugins.plugins.values()).filter( + (plugin) => !plugins.getDisabled().includes(plugin.manifest.id), + ); + + const enabledThemes = Array.from(themes.themes.values()).filter( + (theme) => !themes.getDisabled().includes(theme.manifest.id), + ); + + choices.push( + ...enabledPlugins + .map((plugin) => ({ + name: plugin.manifest.name, + displayName: `${Messages.REPLUGGED_PLUGIN}: ${plugin.manifest.name}`, + value: plugin.manifest.id, + })) + .sort((a, b) => a.name.localeCompare(b.name)), + ); + choices.push( + ...enabledThemes + .map((theme) => ({ + name: theme.manifest.name, + displayName: `${Messages.REPLUGGED_THEME}: ${theme.manifest.name}`, + value: theme.manifest.id, + })) + .sort((a, b) => a.name.localeCompare(b.name)), + ); + + return choices; + }, + }, + ], + executor: async (interaction) => { + try { + const addonId = interaction.getValue("addon"); + if (plugins.plugins.has(addonId)) { + await plugins.disable(addonId); + } else { + themes.disable(addonId); + } + return { + send: false, + embeds: [ + { + color: 0x1bbb1b, + title: Messages.REPLUGGED_COMMAND_SUCCESS_GENERIC, + description: Messages.REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED.format({ + type: plugins.plugins.get(addonId) + ? Messages.REPLUGGED_PLUGIN + : Messages.REPLUGGED_THEME, + name: + plugins.plugins.get(addonId)?.manifest?.name ?? + themes.themes.get(addonId)?.manifest?.name, + }), + }, + ], + }; + } catch (err) { + return { + send: false, + embeds: [ + { + color: 0xdd2d2d, + title: Messages.REPLUGGED_COMMAND_ERROR_GENERIC, + description: err as string, + }, + ], + }; + } + }, + }); + injector.utils.registerSlashCommand({ + name: Messages.REPLUGGED_COMMAND_RELOAD_NAME, + description: Messages.REPLUGGED_COMMAND_RELOAD_DESC, + options: [ + { + name: "addon", + displayName: Messages.REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME, + description: Messages.REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC, + type: ApplicationCommandOptionType.String, + required: true, + get choices() { + const choices = []; + + const enabledPlugins = Array.from(plugins.plugins.values()); + const enabledThemes = Array.from(themes.themes.values()); + + choices.push( + ...enabledPlugins + .map((plugin) => ({ + name: plugin.manifest.name, + displayName: `${Messages.REPLUGGED_PLUGIN}: ${plugin.manifest.name}`, + value: plugin.manifest.id, + })) + .sort((a, b) => a.name.localeCompare(b.name)), + ); + choices.push( + ...enabledThemes + .map((theme) => ({ + name: theme.manifest.name, + displayName: `${Messages.REPLUGGED_THEME}: ${theme.manifest.name}`, + value: theme.manifest.id, + })) + .sort((a, b) => a.name.localeCompare(b.name)), + ); + + return choices; + }, + }, + ], + executor: async (interaction) => { + try { + const addonId = interaction.getValue("addon"); + if (plugins.plugins.has(addonId)) { + await plugins.reload(addonId); + } else { + themes.reload(addonId); + } + return { + send: false, + embeds: [ + { + color: 0x1bbb1b, + title: Messages.REPLUGGED_COMMAND_SUCCESS_GENERIC, + description: Messages.REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED.format({ + type: plugins.plugins.get(addonId) + ? Messages.REPLUGGED_PLUGIN + : Messages.REPLUGGED_THEME, + name: + plugins.plugins.get(addonId)?.manifest?.name ?? + themes.themes.get(addonId)?.manifest?.name, + }), + }, + ], + }; + } catch (err) { + return { + send: false, + embeds: [ + { + color: 0xdd2d2d, + title: Messages.REPLUGGED_COMMAND_ERROR_GENERIC, + description: err as string, + }, + ], + }; + } + }, + }); + injector.utils.registerSlashCommand({ + name: Messages.REPLUGGED_COMMAND_LIST_NAME, + description: Messages.REPLUGGED_COMMAND_LIST_DESC, + options: [ + { + name: "send", + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME, + description: Messages.REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC, + type: ApplicationCommandOptionType.Boolean, + required: false, + }, + { + name: "type", + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME, + description: Messages.REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC, + type: ApplicationCommandOptionType.String, + required: true, + choices: [ + { + name: Messages.REPLUGGED_THEME, + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME, + value: "theme", + }, + { + name: Messages.REPLUGGED_PLUGIN, + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN, + value: "plugin", + }, + ], + }, + { + name: "version", + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME, + description: Messages.REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC, + type: ApplicationCommandOptionType.Boolean, + required: false, + }, + { + name: "status", + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME, + description: Messages.REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC, + type: ApplicationCommandOptionType.String, + required: false, + choices: [ + { + name: Messages.REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED, + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED, + value: "enabled", + }, + { + name: Messages.REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED, + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED, + value: "disabled", + }, + { + name: Messages.REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH, + displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH, + value: "default", + }, + ], + }, + ], + executor: (interaction) => { + try { + const send = interaction.getValue("send", false); + const addonType = interaction.getValue("type"); + const version = interaction.getValue("version", true); + const listType = interaction.getValue("status", "default"); + + const generateListString = ( + items: Array<{ name: string; version: string }>, + typeName: string, + ): string => + `## ${typeName} (${items.length})${items.length ? ":\n•" : ""} ${items + .map((item) => (version ? `${item.name} (v${item.version})` : item.name)) + .join("\n• ")}`; + + switch (addonType) { + case "plugin": { + const allPlugins = Array.from(plugins.plugins.values()) + .map((p) => p.manifest) + .sort((a, b) => a.name.localeCompare(b.name)); + const enablePlugins = allPlugins.filter((p) => !plugins.getDisabled().includes(p.id)); + const disabledPlugins = allPlugins.filter((p) => plugins.getDisabled().includes(p.id)); + + const enabledString = generateListString( + enablePlugins, + Messages.REPLUGGED_COMMAND_LIST_HEADER_ENABLED.format({ + type: Messages.REPLUGGED_PLUGINS, + }), + ); + const disabledString = generateListString( + disabledPlugins, + Messages.REPLUGGED_COMMAND_LIST_HEADER_DISABLED.format({ + type: Messages.REPLUGGED_PLUGINS, + }), + ); + + const result = + listType === "enabled" + ? enabledString + : listType === "disabled" + ? disabledString + : `${enabledString}\n\n${disabledString}`; + + return { + send, + result, + }; + } + case "theme": { + const allThemes = Array.from(themes.themes.values()) + .map((t) => t.manifest) + .sort((a, b) => a.name.localeCompare(b.name)); + const enableThemes = allThemes.filter((t) => !plugins.getDisabled().includes(t.id)); + const disabledThemes = allThemes.filter((t) => plugins.getDisabled().includes(t.id)); + + const enabledString = generateListString( + enableThemes, + Messages.REPLUGGED_COMMAND_LIST_HEADER_ENABLED.format({ + type: Messages.REPLUGGED_THEMES, + }), + ); + const disabledString = generateListString( + disabledThemes, + Messages.REPLUGGED_COMMAND_LIST_HEADER_DISABLED.format({ + type: Messages.REPLUGGED_THEMES, + }), + ); + + const result = + listType === "enabled" + ? enabledString + : listType === "disabled" + ? disabledString + : `${enabledString}\n\n${disabledString}`; + + return { + send, + result, + }; + } + default: + return { + send: false, + result: Messages.REPLUGGED_COMMAND_LIST_ERROR_SPECIFY, + }; + } + } catch (err) { + return { + send: false, + embeds: [ + { + color: 0xdd2d2d, + title: Messages.REPLUGGED_COMMAND_ERROR_GENERIC, + description: err as string, + }, + ], + }; + } + }, + }); +} + +export function unloadCommands(): void { + injector.uninjectAll(); +} diff --git a/src/renderer/coremods/commands/index.ts b/src/renderer/coremods/commands/index.ts new file mode 100644 index 000000000..34f33b857 --- /dev/null +++ b/src/renderer/coremods/commands/index.ts @@ -0,0 +1,291 @@ +import type { AnyRepluggedCommand, RepluggedCommandSection } from "../../../types"; +import { Injector } from "../../modules/injector"; +import { Logger } from "../../modules/logger"; +import { + filters, + getExportsForProps, + getFunctionKeyBySource, + waitForModule, + waitForProps, +} from "../../modules/webpack"; + +import { commandAndSections, defaultSection } from "../../apis/commands"; +import { loadCommands, unloadCommands } from "./commands"; + +const logger = Logger.api("Commands"); +const injector = new Injector(); + +interface ApplicationCommandSearchStoreMod { + [key: string]: (...args: unknown[]) => { + sectionDescriptors: RepluggedCommandSection[]; + commands: AnyRepluggedCommand[]; + filteredSectionId: string; + activeSections: RepluggedCommandSection[]; + commandsByActiveSection: Array<{ + section: RepluggedCommandSection; + data: AnyRepluggedCommand[]; + }>; + }; +} + +interface ApplicationCommandSearchStore { + getChannelState: (...args: unknown[]) => { + applicationSections: RepluggedCommandSection[]; + applicationCommands: AnyRepluggedCommand[]; + }; + getApplicationSections: (...args: unknown[]) => RepluggedCommandSection[]; + useSearchManager: (...args: unknown[]) => unknown; + getQueryCommands: (...args: [string, string, string]) => AnyRepluggedCommand[]; +} + +async function injectRepluggedBotIcon(): Promise { + // Adds Avatar for replugged to default avatar to be used by system bot just like clyde + // Ain't removing it on stop because we have checks here + const DefaultAvatars = await waitForProps<{ + BOT_AVATARS: Record; + }>("BOT_AVATARS"); + if (DefaultAvatars?.BOT_AVATARS) { + DefaultAvatars.BOT_AVATARS.replugged = defaultSection.icon; + } else { + logger.error("Error while injecting custom icon for slash command replies."); + } +} + +async function injectRepluggedSectionIcon(): Promise { + // Patches the function which gets icon URL for slash command sections + // makes it return the custom url if it's our section + const AssetsUtils = await waitForProps<{ + getApplicationIconURL: (args: { id: string; icon: string }) => string; + }>("getApplicationIconURL"); + injector.after(AssetsUtils, "getApplicationIconURL", ([section], res) => + commandAndSections.has(section.id) ? commandAndSections.get(section.id)?.section.icon : res, + ); +} + +async function injectApplicationCommandSearchStore(): Promise { + // The module which contains the store + const ApplicationCommandSearchStoreMod = await waitForModule( + filters.bySource("ApplicationCommandSearchStore"), + ); + const storeModFnKey = getFunctionKeyBySource( + ApplicationCommandSearchStoreMod, + "APPLICATION_COMMAND_SEARCH_STORE_UPDATE", + ); + + // Base handler function for ApplicationCommandSearchStore which is ran to get the info in store + // commands are mainly added here + injector.after(ApplicationCommandSearchStoreMod, storeModFnKey!, (_, res) => { + const commandAndSectionsArray = Array.from(commandAndSections.values()).filter( + (commandAndSection) => commandAndSection.commands.size, + ); + if (!res || !commandAndSectionsArray.length) return res; + if ( + !Array.isArray(res.sectionDescriptors) || + !commandAndSectionsArray.every((commandAndSection) => + res.sectionDescriptors.some((section) => section.id === commandAndSection.section.id), + ) + ) { + const sectionsToAdd = commandAndSectionsArray + .map((commandAndSection) => commandAndSection.section) + .filter((section) => !res.sectionDescriptors.includes(section)); + if (res.sectionDescriptors.some?.((section) => section?.id === "-2")) { + res.sectionDescriptors.splice(1, 0, ...sectionsToAdd); + } else { + res.sectionDescriptors = Array.isArray(res.sectionDescriptors) + ? [...sectionsToAdd, ...res.sectionDescriptors] + : sectionsToAdd; + } + } + if ( + res.filteredSectionId === null || + commandAndSectionsArray.some( + (commandAndSection) => res.filteredSectionId === commandAndSection.section.id, + ) + ) { + const sectionsToAdd = commandAndSectionsArray + .map((commandAndSection) => commandAndSection.section) + .filter( + (section) => + (res.filteredSectionId == null || res.filteredSectionId === section.id) && + !res.activeSections.includes(section), + ); + if (res.activeSections.some?.((section) => section?.id === "-2")) { + res.activeSections.splice(1, 0, ...sectionsToAdd); + } else { + res.activeSections = Array.isArray(res.activeSections) + ? [...sectionsToAdd, ...res.activeSections] + : sectionsToAdd; + } + + const commandsBySectionToAdd = commandAndSectionsArray + .filter( + (commandAndSection) => + (res.filteredSectionId !== null + ? res.filteredSectionId === commandAndSection.section.id + : true) && + !res.commandsByActiveSection.some( + (activeCommandAndSection) => + activeCommandAndSection.section.id === commandAndSection.section.id, + ), + ) + .map((commandAndSection) => ({ + section: commandAndSection.section, + data: Array.from(commandAndSection.commands.values()), + })); + + if ( + res.commandsByActiveSection.some?.( + (activeCommandAndSections) => activeCommandAndSections?.section?.id === "-2", + ) + ) { + res.commandsByActiveSection.splice(1, 0, ...commandsBySectionToAdd); + } else { + res.commandsByActiveSection = Array.isArray(res.commandsByActiveSection) + ? [...commandsBySectionToAdd, ...res.commandsByActiveSection] + : commandsBySectionToAdd; + } + } + if ( + !Array.isArray(res.commands) || + commandAndSectionsArray.some((commandAndSection) => + Array.from(commandAndSection.commands.values()).some( + (command) => !res.commands.includes(command), + ), + ) + ) { + const commandsToAdd = commandAndSectionsArray + .map((commandAndSection) => Array.from(commandAndSection.commands.values())) + .flat(10); + res.commands = Array.isArray(res.commands) + ? [...res.commands.filter((command) => !commandsToAdd.includes(command)), ...commandsToAdd] + : commandsToAdd; + } + return res; + }); + + // The store itself + const ApplicationCommandSearchStore = getExportsForProps( + ApplicationCommandSearchStoreMod, + ["getApplicationSections", "getChannelState", "getQueryCommands"], + )!; + + // Channel state gets update with each character entered in text box and search so we patch this to keep our custom section + // even after updates happen + injector.after(ApplicationCommandSearchStore, "getChannelState", (_, res) => { + const commandAndSectionsArray = Array.from(commandAndSections.values()).filter( + (commandAndSection) => commandAndSection.commands.size, + ); + if (!res || !commandAndSectionsArray.length) return res; + if ( + !Array.isArray(res.applicationSections) || + !commandAndSectionsArray.every((commandAndSection) => + res.applicationSections?.some((section) => section.id === commandAndSection.section.id), + ) + ) { + const sectionsToAdd = commandAndSectionsArray.map( + (commandAndSection) => commandAndSection.section, + ); + res.applicationSections = Array.isArray(res.applicationSections) + ? [...sectionsToAdd, ...res.applicationSections] + : sectionsToAdd; + } + if ( + !Array.isArray(res.applicationCommands) || + commandAndSectionsArray.some((commandAndSection) => + Array.from(commandAndSection.commands.values()).some( + (command) => !res.applicationCommands.includes(command), + ), + ) + ) { + const commandsToAdd = commandAndSectionsArray + .map((commandAndSection) => Array.from(commandAndSection.commands.values())) + .flat(10); + res.applicationCommands = Array.isArray(res.applicationCommands) + ? [ + ...commandsToAdd, + ...res.applicationCommands.filter((command) => !commandsToAdd.includes(command)), + ] + : commandsToAdd; + } + return res; + }); + + // Makes sure if our custom section is included or not + // Add it if not + injector.after(ApplicationCommandSearchStore, "getApplicationSections", (_, res) => { + res ??= []; + const commandAndSectionsArray = Array.from(commandAndSections.values()).filter( + (commandAndSection) => commandAndSection.commands.size, + ); + if (!res || !commandAndSectionsArray.length) return; + if ( + !commandAndSectionsArray.every((commandAndSection) => + res.some((section) => section.id === commandAndSection.section.id), + ) + ) { + const sectionsToAdd = commandAndSectionsArray + .map((commandAndSection) => commandAndSection.section) + .filter((section) => res.some((existingSections) => section.id === existingSections.id)); + res = [...res, ...sectionsToAdd]; + } + return res; + }); + + // Slash command search patched to return our slash commands too + // only those which match tho + injector.after(ApplicationCommandSearchStore, "getQueryCommands", ([_, __, query], res) => { + if (!query || query.startsWith("/")) return res; + + res ??= []; + const commandsToAdd = Array.from(commandAndSections.values()) + .filter((commandAndSection) => commandAndSection.commands.size) + .map((commandAndSection) => Array.from(commandAndSection.commands.values())) + .flat(10); + for (const command of commandsToAdd) { + const exists = res.some((c) => c.id === command.id); + + if (exists || !command.name.includes(query)) { + continue; + } + + try { + res.unshift(command); + } catch { + res = [command, ...res]; + } + } + + return res; + }); +} + +async function injectProfileFetch(): Promise { + const mod = await waitForModule< + Record< + string, + ( + id: string, + avatar: string, + { guildId, channelId }: { guildId: string; channelId: string }, + ) => Promise + > + >(filters.bySource(".preloadUserBanner,"), { raw: true }); + const fnKey = getFunctionKeyBySource(mod.exports, ".apply(this"); + injector.instead(mod.exports, fnKey!, (args, res) => { + if (args[1] === defaultSection.icon) { + return; + } + return res(...args); + }); +} +export async function start(): Promise { + await injectRepluggedBotIcon(); + await injectRepluggedSectionIcon(); + await injectApplicationCommandSearchStore(); + await injectProfileFetch(); + loadCommands(); +} +export function stop(): void { + injector.uninjectAll(); + unloadCommands(); +} diff --git a/src/renderer/coremods/commands/plaintextPatches.ts b/src/renderer/coremods/commands/plaintextPatches.ts new file mode 100644 index 000000000..0b80980c4 --- /dev/null +++ b/src/renderer/coremods/commands/plaintextPatches.ts @@ -0,0 +1,14 @@ +import type { PlaintextPatch } from "src/types"; + +export default [ + { + //disables api request to find commands if its added by replugged + find: "filteredSectionId:null", + replacements: [ + { + match: /\w+\({applicationId:(\w+)}/, + replace: (suffix, id) => `${id} == "replugged"||${suffix}`, + }, + ], + }, +] as PlaintextPatch[]; diff --git a/src/renderer/managers/coremods.ts b/src/renderer/managers/coremods.ts index 39771892a..40f9e72f0 100644 --- a/src/renderer/managers/coremods.ts +++ b/src/renderer/managers/coremods.ts @@ -9,6 +9,7 @@ import { default as messagePopover } from "../coremods/messagePopover/plaintextP import { default as notices } from "../coremods/notices/plaintextPatches"; import { default as contextMenu } from "../coremods/contextMenu/plaintextPatches"; import { default as languagePlaintext } from "../coremods/language/plaintextPatches"; +import { default as commandsPlaintext } from "../coremods/commands/plaintextPatches"; import { Logger } from "../modules/logger"; const logger = Logger.api("Coremods"); @@ -31,6 +32,7 @@ export namespace coremods { export let language: Coremod; export let rpc: Coremod; export let watcher: Coremod; + export let commands: Coremod; export let welcome: Coremod; } @@ -53,6 +55,7 @@ export async function startAll(): Promise { coremods.language = await import("../coremods/language"); coremods.rpc = await import("../coremods/rpc"); coremods.watcher = await import("../coremods/watcher"); + coremods.commands = await import("../coremods/commands"); coremods.welcome = await import("../coremods/welcome"); await Promise.all( Object.entries(coremods).map(async ([name, mod]) => { @@ -79,5 +82,6 @@ export function runPlaintextPatches(): void { notices, contextMenu, languagePlaintext, + commandsPlaintext, ].forEach(patchPlaintext); } diff --git a/src/renderer/modules/common/constants.ts b/src/renderer/modules/common/constants.ts index cbb28e3aa..99d9f286d 100644 --- a/src/renderer/modules/common/constants.ts +++ b/src/renderer/modules/common/constants.ts @@ -50,6 +50,10 @@ export const GuildFeatures = getExportsForProps>(Constant "VERIFIED", "ANIMATED_BANNER", ])!; +export const MessageFlags = getExportsForProps>(Constants, [ + "EPHEMERAL", + "LOADING", +])!; export const Routes = getExportsForProps>(Constants, ["INDEX", "LOGIN"])!; export const UserFlags = getExportsForProps>(Constants, [ "STAFF", diff --git a/src/renderer/modules/common/i18n.ts b/src/renderer/modules/common/i18n.ts index 93bb8e682..00a004de9 100644 --- a/src/renderer/modules/common/i18n.ts +++ b/src/renderer/modules/common/i18n.ts @@ -181,7 +181,7 @@ interface IntlMessageObject { plainFormat: (values?: string | IntlMessageValues) => string; } -type Message = string & IntlMessageObject; +export type Message = string & IntlMessageObject; type Messages = Record; export interface I18n extends EventEmitter { diff --git a/src/renderer/modules/common/messages.ts b/src/renderer/modules/common/messages.ts index c706bd05d..0030ce04a 100644 --- a/src/renderer/modules/common/messages.ts +++ b/src/renderer/modules/common/messages.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { waitForProps } from "../webpack"; - -import type { Channel, Message, MessageAttachment } from "discord-types/general"; +import type { Channel, Message, MessageAttachment, User } from "discord-types/general"; import { virtualMerge } from "src/renderer/util"; +import type { APIEmbed } from "src/types"; +import { filters, getFunctionBySource, waitForModule, waitForProps } from "../webpack"; export enum ActivityActionTypes { JOIN = 1, @@ -414,14 +414,58 @@ export interface MessageActions { _tryFetchMessagesCached: (options: FetchMessagesCachedOptions) => boolean; } -export type Messages = PartialMessageStore & MessageActions; +interface CreateBotMessageOptions { + channelId: string; + content: string; + embeds?: APIEmbed[]; + loggingName?: string; +} + +interface CreateMessageOptions { + channelId: string; + content: string; + tts?: boolean; + type?: number; + messageReference?: MessageReference; + allowedMentions?: AllowedMentions; + author: User; + flags?: number; + nonce?: string; +} + +interface UserServer { + id: string; + username: string; + avatar: string | null; + discriminator: string; + bot: boolean | undefined; + global_name: string | null; +} + +interface MessageUtils { + createBotMessage: (options: CreateBotMessageOptions) => Message; + createMessage: (options: CreateMessageOptions) => Message; + createNonce: () => string; + userRecordToServer: (user: User) => UserServer; +} const MessageStore = await waitForProps("getMessage", "getMessages"); +const MessageUtilsMod = await waitForModule(filters.bySource('username:"Clyde"')); +const MessageUtils = { + createBotMessage: getFunctionBySource(MessageUtilsMod, 'username:"Clyde"'), + createMessage: getFunctionBySource(MessageUtilsMod, "createMessage"), + createNonce: getFunctionBySource(MessageUtilsMod, "fromTimestamp"), + userRecordToServer: getFunctionBySource(MessageUtilsMod, "global_name:"), +} as MessageUtils; + +export type Messages = PartialMessageStore & MessageActions & MessageUtils; + export default virtualMerge( await waitForProps("sendMessage", "editMessage", "deleteMessage"), { getMessage: MessageStore.getMessage, getMessages: MessageStore.getMessages, }, + MessageUtils, ); diff --git a/src/renderer/modules/injector.ts b/src/renderer/modules/injector.ts index f01aa1524..3acc310bb 100644 --- a/src/renderer/modules/injector.ts +++ b/src/renderer/modules/injector.ts @@ -1,9 +1,11 @@ -import type { ObjectExports } from "../../types/webpack"; -import type { AnyFunction } from "../../types/util"; -import type { GetButtonItem } from "../../types/coremods/message"; +import type { CommandOptions, RepluggedCommand } from "src/types"; import type { ContextMenuTypes, GetContextItem } from "../../types/coremods/contextMenu"; -import { addButton } from "../coremods/messagePopover"; +import type { GetButtonItem } from "../../types/coremods/message"; +import type { AnyFunction } from "../../types/util"; +import type { ObjectExports } from "../../types/webpack"; +import { CommandManager } from "../apis/commands"; import { addContextMenuItem } from "../coremods/contextMenu"; +import { addButton } from "../coremods/messagePopover"; enum InjectionTypes { Before, @@ -217,7 +219,7 @@ function after< */ export class Injector { #uninjectors = new Set<() => void>(); - + #slashCommandManager = new CommandManager(); /** * Run code before a native module * @param obj Module to inject to @@ -361,6 +363,37 @@ export class Injector { this.#uninjectors.add(uninjector); return uninjector; }, + + /** + * A utility function to add a custom slash command. + * @param cmd The slash command to add to register + * @returns A callback to de-register the command + * + * @example + * ``` + * import { Injector, components, types } from "replugged"; + * + * const injector = new Injector(); + * + * export function start() { + * injector.utils.registerSlashCommand({ + * name: "use", + * description: "a command meant to be used", + * usage: "/use", + * executor: (interaction) => {}, + * }) + * } + * + * export function stop() { + * injector.uninjectAll(); + * } + * ``` + */ + registerSlashCommand: (cmd: RepluggedCommand) => { + const uninjector = this.#slashCommandManager.registerCommand(cmd); + this.#uninjectors.add(uninjector); + return uninjector; + }, }; /** diff --git a/src/renderer/replugged.ts b/src/renderer/replugged.ts index baa5ee924..534e0d7ec 100644 --- a/src/renderer/replugged.ts +++ b/src/renderer/replugged.ts @@ -22,7 +22,6 @@ export * as components from "./modules/components"; export * as i18n from "./modules/i18n"; export { default as notices } from "./apis/notices"; -export { default as commands } from "./apis/commands"; export * as settings from "./apis/settings"; /** diff --git a/src/types/coremods/commands.ts b/src/types/coremods/commands.ts new file mode 100644 index 000000000..47ccf4035 --- /dev/null +++ b/src/types/coremods/commands.ts @@ -0,0 +1,97 @@ +import type { Channel, Guild } from "discord-types/general"; +import type { ValueOf } from "type-fest"; +import { CommandInteraction } from "../../renderer/apis/commands"; +import type { + APIEmbed, + CommandChoices, + CommandOptionReturn, + CommandOptions, + StringOptions, +} from "../discord"; +import { ApplicationCommandOptionType } from "../discord"; + +interface OptionTypeMapping { + [ApplicationCommandOptionType.String]: string; + [ApplicationCommandOptionType.Integer]: number; + [ApplicationCommandOptionType.Boolean]: boolean; + [ApplicationCommandOptionType.User]: string; // its user id + [ApplicationCommandOptionType.Channel]: string; // its channel id + [ApplicationCommandOptionType.Role]: string; // its role id + [ApplicationCommandOptionType.Mentionable]: string; // id of whatever can be mentioned. usually channel/user/role + [ApplicationCommandOptionType.Number]: number; + [ApplicationCommandOptionType.Attachment]: { uploadedFilename: string; file: File }; +} + +type GetConditionallyOptional = Required extends true + ? T + : T | undefined; + +type GetType = GetConditionallyOptional< + T extends StringOptions + ? T["choices"] extends CommandChoices + ? T["choices"][number]["value"] + : OptionTypeMapping[T["type"]] + : OptionTypeMapping[T["type"]], + T["required"] +>; + +export type GetCommandOption = Extract< + T, + { name: K } +>; + +export type GetCommandOptions = ValueOf<{ + [K in T["name"]]: { + focused?: boolean; + name: K; + type: T["type"]; + value: GetType>; + }; +}>; + +export type GetValueType = undefined extends T["value"] + ? Exclude | D + : T["value"]; + +export interface InexecutableRepluggedCommand { + applicationId?: string; + type?: number; + id?: string; + name: string; + displayName?: string; + description: string; + displayDescription?: string; + usage?: string; + options?: readonly T[]; +} + +export type RepluggedCommand = InexecutableRepluggedCommand & + ( + | { + executor: ( + interaction: CommandInteraction>, + ) => Promise | RepluggedCommandResult; + execute?: never; + } + | { + execute: ( + args: Array>, + currentInfo: { channel: Channel; guild: Guild }, + ) => Promise | void; + executor?: never; + } + ); + +export type AnyRepluggedCommand = RepluggedCommand; + +export interface RepluggedCommandResult { + send: boolean; + result?: string; + embeds?: APIEmbed[]; +} +export interface RepluggedCommandSection { + id: string; + name: string; + type?: 1; + icon: string; +} diff --git a/src/types/discord.ts b/src/types/discord.ts index 791c24649..0fe4ae8e0 100644 --- a/src/types/discord.ts +++ b/src/types/discord.ts @@ -1,26 +1,144 @@ -export interface CommandOptions { - type: number; +export enum ApplicationCommandOptionType { + String = 3, + Integer = 4, + Boolean = 5, + User = 6, + Channel = 7, + Role = 8, + Mentionable = 9, + Number = 10, + Attachment = 11, +} + +interface BaseCommandOptions { + type: T; name: string; displayName?: string; description: string; displayDescription?: string; + serverLocalizedName?: string; required?: boolean; - choices?: Array<{ - name: string; - values: string | number; - }>; - options?: CommandOptions[]; +} + +export interface CommandChoices { + name: string; + displayName: string; + value: string | number; +} + +export interface CommandOptionAutocompleteAndChoices { + autocomplete?: boolean; + choices?: CommandChoices[]; + focused?: boolean; +} + +export interface StringOptions + extends CommandOptionAutocompleteAndChoices, + BaseCommandOptions { + /* eslint-disable @typescript-eslint/naming-convention */ + min_length?: number; + max_length?: number; + /* eslint-enable @typescript-eslint/naming-convention */ +} + +export interface NumberOptions + extends CommandOptionAutocompleteAndChoices, + BaseCommandOptions { /* eslint-disable @typescript-eslint/naming-convention */ - channel_types?: number[]; min_value?: number; max_value?: number; /* eslint-enable @typescript-eslint/naming-convention */ - autocomplete?: boolean; } +export interface ChannelOptions extends BaseCommandOptions { + /* eslint-disable @typescript-eslint/naming-convention */ + channel_types?: readonly number[]; +} + +export interface OtherCommandOptions + extends BaseCommandOptions< + | ApplicationCommandOptionType.Attachment + | ApplicationCommandOptionType.Boolean + | ApplicationCommandOptionType.Mentionable + | ApplicationCommandOptionType.Role + | ApplicationCommandOptionType.User + > {} + +export interface CommandOptionReturn { + name: string; + type: ApplicationCommandOptionType; + value: T; +} + +export type CommandOptions = StringOptions | NumberOptions | ChannelOptions | OtherCommandOptions; + export interface ConnectedAccount { type: string; name: string; id: string; verified: boolean; } + +export enum MessageEmbedTypes { + IMAGE = "image", + VIDEO = "video", + LINK = "link", + ARTICLE = "article", + TWEET = "tweet", + RICH = "rich", + GIFV = "gifv", + APPLICATION_NEWS = "application_news", + AUTO_MODERATION_MESSAGE = "auto_moderation_message", + AUTO_MODERATION_NOTIFICATION = "auto_moderation_notification", + TEXT = "text", + POST_PREVIEW = "post_preview", + GIFT = "gift", + SAFETY_POLICY_NOTICE = "safety_policy_notice", +} + +export interface APIEmbed { + title?: string; + type?: MessageEmbedTypes; + description?: string; + url?: string; + timestamp?: string; + color?: number; + footer?: { + text: string; + icon_url?: string; + proxy_icon_url?: string; + }; + image?: { + url: string; + proxy_url?: string; + height?: number; + width?: number; + }; + thumbnail?: { + url: string; + proxy_url?: string; + width?: number; + height?: number; + }; + video?: { + url?: string; + proxy_url?: string; + height?: number; + width?: number; + }; + provider?: { + name?: string; + url?: string; + }; + author?: { + name: string; + url?: string; + icon_url?: string; + proxy_icon_url?: string; + }; + fields?: Array<{ + name: string; + value: string; + inline?: boolean; + }>; +} diff --git a/src/types/index.ts b/src/types/index.ts index 37ea7a987..022d3c3e4 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,5 +1,5 @@ import type { WebContents } from "electron"; -import type { CommandOptions, ConnectedAccount } from "./discord"; +import type { ConnectedAccount } from "./discord"; import type { PluginManifest, ThemeManifest } from "./addon"; export type RepluggedWebContents = WebContents & { @@ -47,14 +47,6 @@ export interface RepluggedAnnouncement { }; } -export interface RepluggedCommand { - name: string; - description: string; - usage: string; - executor: (args: unknown) => void; - options: CommandOptions; -} - export interface RepluggedConnection { type: string; name: string; @@ -95,3 +87,4 @@ export * from "./installer"; export * from "./coremods/message"; export * from "./coremods/settings"; export * from "./coremods/contextMenu"; +export * from "./coremods/commands"; diff --git a/src/types/util.ts b/src/types/util.ts index 6b9265990..c3629d001 100644 --- a/src/types/util.ts +++ b/src/types/util.ts @@ -2,9 +2,3 @@ export type AnyFunction = (...args: any[]) => unknown; export type UnknownFunction = (...args: unknown[]) => unknown; export type ObjectKey = { [K in keyof O]: O[K] extends T ? K : never }[keyof O & string]; - -export type ReactComponent

= React.ComponentType< - React.PropsWithChildren

> ->; - -export type ObjectWithProps

= Record; From 5b42ddb32b3b32b858534fac37dab192d1e78f91 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Fri, 15 Sep 2023 22:22:03 -0500 Subject: [PATCH 03/36] Typedef improvements --- src/types/coremods/commands.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/types/coremods/commands.ts b/src/types/coremods/commands.ts index 47ccf4035..9c8445925 100644 --- a/src/types/coremods/commands.ts +++ b/src/types/coremods/commands.ts @@ -84,11 +84,12 @@ export type RepluggedCommand = InexecutableRepluggedCo export type AnyRepluggedCommand = RepluggedCommand; -export interface RepluggedCommandResult { - send: boolean; - result?: string; +export type RepluggedCommandResult = { + send?: boolean; + result?: string | null; embeds?: APIEmbed[]; -} +} | null; + export interface RepluggedCommandSection { id: string; name: string; From 138a89de9f7cb7d83c8a77042d88e9a50041c7bb Mon Sep 17 00:00:00 2001 From: Alyxia Sother Date: Sun, 24 Sep 2023 18:26:00 +0200 Subject: [PATCH 04/36] Implement splash themes (#560) * Remove unnecessary splashrenderer modules * Move splash ignition to the main ignition * Implement better splash detection method * Remove splash quickcss & Load proper splash theme * i18n: update translations from weblate * Implement splash themes --------- Co-authored-by: EastArctica --- i18n/es-ES.json | 9 ++- i18n/fi.json | 6 +- i18n/ja.json | 101 ++++++++++++++++++++++++++++-- i18n/pl.json | 11 +++- src/main/index.ts | 2 +- src/renderer/index.ts | 13 +++- src/renderer/managers/ignition.ts | 14 +++++ src/renderer/managers/themes.ts | 55 ++++++++++++++-- src/renderer/modules/logger.ts | 9 ++- src/types/addon.ts | 2 +- 10 files changed, 201 insertions(+), 21 deletions(-) diff --git a/i18n/es-ES.json b/i18n/es-ES.json index c1d583c39..4a621062d 100644 --- a/i18n/es-ES.json +++ b/i18n/es-ES.json @@ -104,14 +104,14 @@ "REPLUGGED_UPDATES_OPTS_DEBUG_REVISION": "Revisión:", "REPLUGGED_UPDATES_OPTS_DEBUG_REPLUGGED_PATH": "Ruta de Replugged", "REPLUGGED_UPDATES_OPTS_DEBUG_DISCORD_PATH": "Ruta de Discord", - "REPLUGGED_COMMAND_ENABLE_DESC": "Habilita un complemento/tema", + "REPLUGGED_COMMAND_ENABLE_DESC": "Habilita un complemento o tema", "REPLUGGED_NOTICES_WELCOME_NEW_USER": "¡Bienvenido! Replugged se ha inyectado correctamente a tu cliente de Discord. ¡Únete a nuestro servidor de Discord para anuncios, soporte y mas!", "REPLUGGED_BUTTON_GOT_IT": "Entendido", "REPLUGGED_BUTTON_INSTALLER_INSTALLED": "{type} Instalado", "REPLUGGED_BUTTON_INSTALLER_DOWNLOAD": "Descargar {type}", "REPLUGGED_CANCEL": "Cancelar", "REPLUGGED_CONFIRM": "Confirmar", - "REPLUGGED_COMMAND_RELOAD_DESC": "Recarga un complemento/tema", + "REPLUGGED_COMMAND_RELOAD_DESC": "Recarga un complemento o tema", "REPLUGGED_OK": "OK", "REPLUGGED_COMMAND_DISABLE_DESC": "Deshabilitar un complemento o tema", "REPLUGGED_UPDATES_UPDATER": "Actualizador", @@ -213,5 +213,8 @@ "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "enviar", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "tipo", "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "versión", - "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "estado" + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "estado", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Ha ocurrido un error, por favor intente mas tarde. Si el problema persiste, contacte al equipo de Replugged.", + "REPLUGGED_COMMAND_RELOAD_NAME": "recargar", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Incluir el numero de versión en la lista" } diff --git a/i18n/fi.json b/i18n/fi.json index 9832f19c8..6fc032514 100644 --- a/i18n/fi.json +++ b/i18n/fi.json @@ -212,5 +212,9 @@ "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} ladattiin uudelleen!", "REPLUGGED_COMMAND_LIST_NAME": "lista", "REPLUGGED_COMMAND_LIST_DESC": "Listaa kaikki pluginit ja teemat", - "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "lähetä" + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "lähetä", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Jos lähteessä on useita lisäosia, valitse mikä asennetaan", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_STORE": "Kauppa", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Onnistui" } diff --git a/i18n/ja.json b/i18n/ja.json index 6bc7b96d3..a6f31c370 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -38,8 +38,8 @@ "REPLUGGED_UPDATES_FORCE": "強制アップデート", "REPLUGGED_UPDATES_LAST_CHECKED": "最後の確認: {date}", "REPLUGGED_UPDATES_OPEN_UPDATER": "アップデーターを開く", - "REPLUGGED_UPDATES_OPTS_AUTO": "バックグラウンドで自動的にアップデートする", - "REPLUGGED_UPDATES_OPTS_AUTO_DESC": "Repluggedはバックグラウンドでアップデートをダウンロードし、インストールすることができるので、あまり迷惑をかけることはありません。ただし、再読み込みが必要な場合や、競合が発生した場合は、ユーザーによる操作が必要になります。", + "REPLUGGED_UPDATES_OPTS_AUTO": "アップデートを自動的に確認する", + "REPLUGGED_UPDATES_OPTS_AUTO_DESC": "Replugged はバックグラウンドでアップデートを確認し、アップデートがあればアラートを表示します。アップデートを選択するまで、インストールされません。公式アドオンのみが自動的にチェックされます。", "REPLUGGED_UPDATES_OPTS_CHANGE_LOGS": "チェンジログを開く", "REPLUGGED_UPDATES_OPTS_CHANGE_LOGS_DESC": "チェンジログを見逃した、またはもう一度見たい?", "REPLUGGED_UPDATES_OPTS_CONCURRENCY": "アップデートの同時実行数制限", @@ -47,7 +47,7 @@ "REPLUGGED_UPDATES_OPTS_DEBUG": "デバッグ情報", "REPLUGGED_UPDATES_OPTS_DEBUG_DESC": "一部の統計でトラブルシューティングやフレックスに役立つと思われます。", "REPLUGGED_UPDATES_OPTS_INTERVAL": "アップデートチェック間隔", - "REPLUGGED_UPDATES_OPTS_INTERVAL_DESC": "Repluggedがアップデートを確認する頻度(分)。最低10分です。", + "REPLUGGED_UPDATES_OPTS_INTERVAL_DESC": "Repluggedがアップデートを確認する頻度。最低10分。", "REPLUGGED_UPDATES_OPTS_RELEASE": "リリースチャンネルを変更する", "REPLUGGED_UPDATES_OPTS_RELEASE_DESC": "安定版ブランチと開発版ブランチのどちらかを選択することができます。安定版ブランチでは、メジャーアップデート、セキュリティアップデート、クリティカルアップデートのみが行われます。よくわからない場合は、安定版ブランチのままにしてください。", "REPLUGGED_UPDATES_OPTS_RELEASE_DEVELOP_BTN": "開発版ブランチに切り替える", @@ -56,7 +56,7 @@ "REPLUGGED_UPDATES_OPTS_RELEASE_STABLE_BTN": "安定版ブランチに切り替える", "REPLUGGED_UPDATES_OPTS_RELEASE_SWITCH": "切り替え", "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED": "アップデート確認のトーストを表示する", - "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED_DESC": "クライアント上にオーバーレイを表示し、アップデートを確認中であることを示し、アップデートが見つかった場合は、アップデートを促すようにします。バックグラウンドでの更新が無効の場合のみ適用されます。", + "REPLUGGED_UPDATES_OPTS_TOAST_ENABLED_DESC": "アップデートがチェックされていることを示すオーバーレイをクライアント上に表示して、アップデートが見つかった場合はアップデートを促します。バックグラウンドでのアップデートが無効の場合のみ適用されます。", "REPLUGGED_UPDATES_UPDATE": "今すぐアップデート", "REPLUGGED_UPDATES_UPDATING": "Repluggedをアップデートしています…", "REPLUGGED_UPDATES_UPDATING_ITEM": "アップデートしています…", @@ -73,7 +73,7 @@ "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name}は既にインストールされています。", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "正しくコマンドを実行できませんでした:", "REPLUGGED_ERROR_CHECK_CONSOLE": "詳細はコンソールを確認してください。", - "REPLUGGED_NOTICES_WELCOME_NEW_USER": "ようこそ! Replugged はあなたのDiscordクライアントに正常に導入されました。気軽に私たちのDiscord サーバーに参加すると、アナウンスやサポートなどを得る事が出来ます!", + "REPLUGGED_NOTICES_WELCOME_NEW_USER": "ようこそ!Replugged はあなたのDiscordクライアントに正常に導入されました。気軽に私たちのDiscord サーバーに参加すると、アナウンスやサポートなどを得る事が出来ます!", "REPLUGGED_UPDATES_OPTS_DEBUG_RELEASE_CHANNEL": "リリースチャンネル:", "REPLUGGED_UPDATES_OPTS_DEBUG_PLUGINS_SHOW_LESS": "表示を少なくする", "REPLUGGED_PLUGIN_EMBED_COPY": "リンクをコピー", @@ -153,5 +153,94 @@ "REPLUGGED_PLUGIN_INSTALL_RELOAD_PROMPT_BODY": "{name} を正しく動作させるには再読み込みが必要です。今すぐ再読み込みしますか?", "REPLUGGED_RELOAD": "再読み込み", "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_FAILED": "{name}のインストールに失敗しました。", - "REPLUGGED_INSTALLER_INSTALL_PROMPT_BODY": "{name} {authors}をインストールしますか?" + "REPLUGGED_INSTALLER_INSTALL_PROMPT_BODY": "{name} {authors}をインストールしますか?", + "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "{type} {name} は無効化されました!", + "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} はリロードされました!", + "REPLUGGED_DEVELOPER_MODE_WARNING": "現在、開発者モードで Replugged を実行しているため、Replugged 自体のアップデートができません。[本番モードに切り替えてください。]({url})", + "REPLUGGED_ADDON_BROWSE": "{type}を見る", + "REPLUGGED_SETTINGS_ADDON_EMBEDS_DESC": "チャットでストア/インストールリンクが共有されたときに、アドオンの情報が記載されたカードを表示するようにします。", + "REPLUGGED_SETTINGS_TRANSPARENT": "透明なウィンドウ", + "REPLUGGED_ADDON_NOT_REVIEWED": "未審査の{type}", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_WINDOWS": "****警告: **** これにより **ウィンドウスナップ** が機能しなくなります。モニターの解像度の関係でウィンドウの上下が切れている場合や、開発者ツールを開いてドッキングしている場合など、背景が黒くなる場合があります。", + "REPLUGGED_ADDON_NOT_REVIEWED_DESC": "この{type}は Replugged チームによってレビューされておらず、あなたのコンピュータに損害を与える可能性があります。自己責任で使用してください。", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_LINUX": "****警告: **** **ハードウェアアクセラレーション** を **オフ** にする必要があるかもしれません。モニターの解像度の関係でウィンドウの上下が切れている場合や、開発者ツールを開いてドッキングしている場合など、背景が黒くなる場合があります。", + "REPLUGGED_SETTINGS_QUICKCSS_AUTO_APPLY": "Quick CSS を自動的に適用", + "REPLUGGED_I18N": "Replugged 翻訳", + "REPLUGGED_SETTINGS_QUICKCSS_AUTO_APPLY_DESC": "入力中に Quick CSS の変更を自動的に適用します。", + "REPLUGGED_SETTINGS_DEV_COMPANION": "Dev Companion を再接続", + "REPLUGGED_SETTINGS_DEV_COMPANION_DESC": "Dev Companion coremod を VSCode 拡張機能に再接続します。", + "REPLUGGED_SETTINGS_DEV_COMPANION_RECONNECT": "再接続", + "REPLUGGED_SETTINGS_ADVANCED": "高度な設定", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS": "React DevTools を有効化", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS_DESC": "React DevTools 拡張機能をロードし、React ツリーの検査とデバッグをより簡単に行えるようにします。**再起動が必要**", + "REPLUGGED_VIEW_UPDATES": "{count, number} 個のアップデートを見る", + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "プラグイン: {name}", + "REPLUGGED_SETTINGS_REACT_DEVTOOLS_FAILED": "React DevTools のダウンロードに失敗しました。", + "REPLUGGED_INSTALLER_OPEN_STORE": "ストアで見る", + "REPLUGGED_SETTINGS_ADDON_EMBEDS": "アドオンの埋め込みの表示", + "REPLUGGED_SNIPPET_LINE1": "Snippet from #css-snippets applied the {date, date, medium} at {date, time, medium}", + "REPLUGGED_RESTART": "再起動", + "REPLUGGED_SETTINGS_RESTART_TITLE": "再起動", + "REPLUGGED_ADDON_AUTHORS_ONE": "作者: {author1}", + "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "アドオン", + "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "有効にするアドオンを選択してください", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "ソースからインストールするアドオンの ID", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "アドオン", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "無効にするアドオンを選択してください", + "REPLUGGED_COMMAND_ERROR_GENERIC": "問題が発生しました。後でもう一度お試しください。この問題が解決しない場合は、Replugged チームまでご連絡ください。", + "REPLUGGED_COMMAND_ENABLE_NAME": "enable", + "REPLUGGED_COMMAND_INSTALL_NAME": "install", + "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} は有効化されました!", + "REPLUGGED_COMMAND_INSTALL_DESC": "プラグイン/テーマをインストールする", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "アドオンをインストールするソース", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "ソースに複数のアドオンがある場合は、インストールするアドオンを指定してください", + "REPLUGGED_COMMAND_DISABLE_NAME": "disable", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "addon", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "source", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "アドオン", + "REPLUGGED_COMMAND_LIST_NAME": "list", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "リロードするアドオンを選択してください", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "チャットにリストを公開する", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "send", + "REPLUGGED_COMMAND_LIST_DESC": "プラグイン/テーマのリスト", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "type", + "REPLUGGED_COMMAND_RELOAD_NAME": "reload", + "REPLUGGED_SETTINGS_BADGES_DESC": "ユーザーのプロフィールに Replugged のカスタムバッジを表示します。", + "REPLUGGED_STORE": "ストア", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC": "表示するアドオンの種類", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "リストにバージョンを含める", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "有効なアドオン、無効なアドオン、またはその両方を表示するかどうか", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "version", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "status", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "有効", + "REPLUGGED_UPDATES_UPDATE_TO": "{version} にアップデート", + "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Discordウィンドウを透明にします、主にテーマ設定に便利です。**再起動が必要**", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "成功", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "テーマをリスト", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "プラグインをリスト", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "無効", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "両方", + "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "有効な{type}", + "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "無効な{type}", + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "プラグインかテーマのどちらのリストを送信するかを指定する必要があります", + "REPLUGGED_TOAST_INSTALLER_ADDON_FETCH_INFO_FAILED": "アドオン情報の取得に失敗しました。", + "REPLUGGED_TOAST_INSTALLER_ADDON_CANCELED_INSTALL": "インストールはキャンセルされました。", + "REPLUGGED_ADDON_AUTHORS_MANY": "作者: {author1}, {author2}, {author3}, 他 {count, number} 人", + "REPLUGGED_UPDATES_TOAST_FAILED_ONE": "アップデート失敗!", + "REPLUGGED_UPDATES_TOAST_SUCCESS_ALL": "アップデートは正常に完了しました。", + "REPLUGGED_QUICKCSS_FOLDER_OPEN": "Quick CSS フォルダーを開く", + "REPLUGGED_UPDATES_UPDATE_NOUN": "アップデート", + "REPLUGGED_VERSION": "Replugged {version, select, dev {[DEV MODE]} other {v{version}}}", + "REPLUGGED_SETTINGS_BADGES": "Replugged バッジを有効化", + "REPLUGGED_ADDON_AUTHORS_TWO": "作者: {author1}, {author2}", + "REPLUGGED_ADDON_AUTHORS_THREE": "作者: {author1}, {author2}, {author3}", + "REPLUGGED_CONFIRM_INSTALL": "インストール", + "REPLUGGED_TOAST_INSTALLER_ADDON_LOAD_FAILED": "{name}はインストールされましたが、ロードできませんでした。", + "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_SUCCESS": "{name}が正常にインストールされました。", + "REPLUGGED_UPDATES_UPDATE_ALL": "すべてアップデート", + "REPLUGGED_UPDATES_TOAST_NO_NEW": "新しいアップデートはありません。", + "REPLUGGED_UPDATES_TOAST_FAILED_ALL": "アップデート失敗!", + "REPLUGGED_UPDATES_TOAST_SUCCESS_ONE": "アップデートは正常に完了しました。", + "REPLUGGED_UPDATES_TOAST_NEW": "{count, number} 個のアップデートがあります!" } diff --git a/i18n/pl.json b/i18n/pl.json index f0ba78670..2b8a788c1 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -233,5 +233,14 @@ "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Wyświetl wtyczki", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Wyświetl motywy", "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Sukces", - "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Wtyczka: {name}" + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Wtyczka: {name}", + "REPLUGGED_COMMAND_INSTALL_NAME": "zainstaluj", + "REPLUGGED_COMMAND_INSTALL_DESC": "Zainstaluj wtyczkę lub motyw", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "dodatek", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Identyfikator dodatku do zainstalowania ze źródła", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "źródło", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Źródło, z którego ma zostać zainstalowany dodatek", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "identyfikator", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Jeśli źródło zawiera wiele dodatków, określ, który z nich ma zostać zainstalowany", + "REPLUGGED_STORE": "Sklep" } diff --git a/src/main/index.ts b/src/main/index.ts index f14be6c8c..c0842a060 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -53,7 +53,7 @@ class BrowserWindow extends electron.BrowserWindow { // opts.webPreferences.contextIsolation = false; // shrug } else { // Splash Screen on macOS (Host 0.0.262+) & Windows (Host 0.0.293 / 1.0.17+) - // opts.webPreferences.preload = join(__dirname, './preloadSplash.js'); + opts.webPreferences.preload = join(__dirname, "./preload.js"); } } diff --git a/src/renderer/index.ts b/src/renderer/index.ts index 462457742..ccce42626 100644 --- a/src/renderer/index.ts +++ b/src/renderer/index.ts @@ -2,5 +2,14 @@ import * as replugged from "./replugged"; window.replugged = replugged; -await replugged.plugins.loadAll(); -await replugged.ignition.ignite(); +type DiscordSplashWindow = Window & { + DiscordSplash?: object; +}; + +// Splash screen +if ((window as DiscordSplashWindow).DiscordSplash) { + await replugged.ignition.startSplash(); +} else { + await replugged.plugins.loadAll(); + await replugged.ignition.ignite(); +} diff --git a/src/renderer/managers/ignition.ts b/src/renderer/managers/ignition.ts index 7bc4ed9b5..00184aa1c 100644 --- a/src/renderer/managers/ignition.ts +++ b/src/renderer/managers/ignition.ts @@ -90,3 +90,17 @@ export async function ignite(): Promise { await componentsReady(); await start(); } + +export async function startSplash(): Promise { + log("Ignition", "Start", void 0, "Igniting Replugged Splash Screen..."); + const startTime = performance.now(); + + await themes.loadMissing().then(themes.loadAllSplash); + + log( + "Ignition", + "Start", + void 0, + `Finished igniting Replugged Splash Screen in ${performance.now() - startTime}ms`, + ); +} diff --git a/src/renderer/managers/themes.ts b/src/renderer/managers/themes.ts index fe6b09a25..19ba23a04 100644 --- a/src/renderer/managers/themes.ts +++ b/src/renderer/managers/themes.ts @@ -2,6 +2,7 @@ import { loadStyleSheet } from "../util"; import type { RepluggedTheme } from "../../types"; import type { AddonSettings } from "src/types/addon"; import { init } from "../apis/settings"; +import * as logger from "../modules/logger"; const themeElements = new Map(); @@ -37,31 +38,67 @@ export function unload(id: string): void { } /** - * Load a theme, adding its stylesheet to the DOM + * Load a theme's main variant, adding its stylesheet to the DOM * @param id Theme ID (RDNN) */ export function load(id: string): void { if (!themes.has(id)) { throw new Error(`Theme not found: ${id}`); } - unload(id); const theme = themes.get(id)!; + if (!theme.manifest.main) { + logger.error("Manager", `Theme ${id} does not have a main variant.`); + return; + } + unload(id); + const el = loadStyleSheet(`replugged://theme/${theme.path}/${theme.manifest.main}`); themeElements.set(id, el); } /** - * Load all themes, adding their stylesheets to the DOM. Disabled themes are not loaded. + * Load a theme's splash variant, adding its stylesheet to the DOM + * @param id Theme ID (RDNN) + */ +export function loadSplash(id: string): void { + if (!themes.has(id)) { + throw new Error(`Theme not found: ${id}`); + } + + const theme = themes.get(id)!; + if (!theme.manifest.splash) { + logger.error("Manager", `Theme ${id} does not have a splash variant.`); + return; + } + unload(id); + + const el = loadStyleSheet(`replugged://theme/${theme.path}/${theme.manifest.splash}`); + themeElements.set(id, el); +} + +/** + * Load all themes' main variants, adding their stylesheets to the DOM. Disabled themes are not loaded. */ export function loadAll(): void { for (const id of themes.keys()) { - if (!disabled.includes(id)) { + if (!disabled.includes(id) && themes.get(id)?.manifest?.main) { load(id); } } } +/** + * Load all themes' splash variants, adding their stylesheets to the DOM. Disabled themes are not loaded. + */ +export function loadAllSplash(): void { + for (const id of themes.keys()) { + if (!disabled.includes(id) && themes.get(id)?.manifest?.splash) { + loadSplash(id); + } + } +} + /** * Unload all themes, removing their stylesheets from the DOM */ @@ -92,13 +129,21 @@ export async function list(): Promise { } /** - * Reload a theme to apply changes + * Reload a theme's main variant to apply changes */ export function reload(id: string): void { unload(id); load(id); } +/** + * Reload a theme's splash variant to apply changes + */ +export function reloadSplash(id: string): void { + unload(id); + loadSplash(id); +} + export function enable(id: string): void { if (!themes.has(id)) { throw new Error(`Theme "${id}" does not exist.`); diff --git a/src/renderer/modules/logger.ts b/src/renderer/modules/logger.ts index d9202d971..8a0ad0670 100644 --- a/src/renderer/modules/logger.ts +++ b/src/renderer/modules/logger.ts @@ -2,7 +2,14 @@ const blurple = "#5865F2"; -export type LoggerType = "Plugin" | "Coremod" | "API" | "Ignition" | "CommonModules" | "Components"; +export type LoggerType = + | "Plugin" + | "Coremod" + | "API" + | "Ignition" + | "CommonModules" + | "Components" + | "Manager"; const repluggedPrefix = (type: LoggerType, name: string): string => `%c[Replugged:${type}:${name}]`; diff --git a/src/types/addon.ts b/src/types/addon.ts index c95134ffb..b29ce9751 100644 --- a/src/types/addon.ts +++ b/src/types/addon.ts @@ -52,7 +52,7 @@ export interface RepluggedEntity { export const theme = common.extend({ type: z.literal("replugged-theme"), - main: z.string(), + main: z.string().optional(), splash: z.string().optional(), }); From 0223891c55df9f0880e264d375bb49c4c2954332 Mon Sep 17 00:00:00 2001 From: pog who? <54505527+E-boi@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:48:02 -0700 Subject: [PATCH 05/36] Support for monorepos (#550) * monorepos support!! * oop remove this * fixes * final touches * Apply suggestions from code review :shipit: Co-authored-by: Federico Di Leo <38290480+FedeIlLeone@users.noreply.github.com> --------- Co-authored-by: Alyxia Sother Co-authored-by: Federico Di Leo <38290480+FedeIlLeone@users.noreply.github.com> --- bin/index.mts | 123 +++++++++++++++++++++++++++++++++++------------- bin/mono.mts | 82 ++++++++++++++++++++++++++++++++ bin/release.mts | 31 +++++++----- 3 files changed, 192 insertions(+), 44 deletions(-) create mode 100644 bin/mono.mts diff --git a/bin/index.mts b/bin/index.mts index a57ced5d8..4b31335c3 100755 --- a/bin/index.mts +++ b/bin/index.mts @@ -20,18 +20,19 @@ import { release } from "./release.mjs"; import { logBuildPlugin } from "../src/util.mjs"; import { sassPlugin } from "esbuild-sass-plugin"; import { fileURLToPath } from "url"; +import { AddonType, getAddonFolder, isMonoRepo, selectAddon } from "./mono.mjs"; interface BaseArgs { watch?: boolean; noInstall?: boolean; production?: boolean; noReload?: boolean; + addon?: string; } type Args = ArgumentsCamelCase | BaseArgs; -const directory = process.cwd(); -const manifestPath = path.join(directory, "manifest.json"); +export const directory = process.cwd(); const dirname = path.dirname(fileURLToPath(import.meta.url)); const packageJson = JSON.parse(readFileSync(path.resolve(dirname, "package.json"), "utf-8")); @@ -213,20 +214,34 @@ async function reload(id: string): Promise { }); } -async function bundleAddon(buildFn: (args: Args) => Promise): Promise { - if (existsSync("dist")) { - rmSync("dist", { recursive: true }); +function bundleAddons(buildFn: (args: Args) => Promise, type: AddonType): void { + const addons = getAddonFolder(type); + + addons.forEach((addon) => bundleAddon(buildFn, addon, type)); +} + +async function bundleAddon( + buildFn: (args: Args) => Promise, + addon?: string, + type?: AddonType, +): Promise { + const manifestPath = addon + ? path.join(directory, type!, addon, "manifest.json") + : path.join(directory, "manifest.json"); + const manifest = JSON.parse(readFileSync(manifestPath, "utf-8")); + const distPath = addon ? `dist/${manifest.id}` : "dist"; + if (existsSync(distPath)) { + rmSync(distPath, { recursive: true }); } - await buildFn({ watch: false, noInstall: true, production: true }); + await buildFn({ watch: false, noInstall: true, production: true, addon }); - const manifest = JSON.parse(readFileSync("dist/manifest.json", "utf-8")); const outputName = `bundle/${manifest.id}`; if (!existsSync("bundle")) { mkdirSync("bundle"); } - asar.createPackage("dist", `${outputName}.asar`); - copyFileSync("dist/manifest.json", `${outputName}.json`); + asar.createPackage(distPath, `${outputName}.asar`); + copyFileSync(`${distPath}/manifest.json`, `${outputName}.json`); console.log(`Bundled ${manifest.name}`); } @@ -268,8 +283,22 @@ const CONFIG_PATH = (() => { })(); const CHROME_VERSION = "91"; -async function buildPlugin({ watch, noInstall, production, noReload }: Args): Promise { - let manifest = JSON.parse(readFileSync(manifestPath.toString(), "utf-8")); +function buildAddons(buildFn: (args: Args) => Promise, args: Args, type: AddonType): void { + const addons = getAddonFolder(type); + + addons.forEach((addon) => { + buildFn({ ...args, addon }); + }); +} + +async function buildPlugin({ watch, noInstall, production, noReload, addon }: Args): Promise { + const manifestPath = addon + ? path.join(directory, "plugins", addon, "manifest.json") + : path.join(directory, "manifest.json"); + const manifest = JSON.parse(readFileSync(manifestPath.toString(), "utf-8")); + const distPath = addon ? `dist/${manifest.id}` : "dist"; + const folderPath = addon ? path.join(directory, "plugins", addon) : directory; + const globalModules: esbuild.Plugin = { name: "globalModules", setup: (build) => { @@ -315,7 +344,7 @@ async function buildPlugin({ watch, noInstall, production, noReload }: Args): Pr if (!noInstall) { const dest = path.join(CONFIG_PATH, "plugins", manifest.id); if (existsSync(dest)) rmSync(dest, { recursive: true, force: true }); - cpSync("dist", dest, { recursive: true }); + cpSync(distPath, dest, { recursive: true }); console.log("Installed updated version"); if (!noReload) { @@ -347,8 +376,8 @@ async function buildPlugin({ watch, noInstall, production, noReload }: Args): Pr targets.push( esbuild.context({ ...common, - entryPoints: [manifest.renderer], - outfile: "dist/renderer.js", + entryPoints: [path.join(folderPath, manifest.renderer)], + outfile: `${distPath}/renderer.js`, }), ); @@ -359,17 +388,17 @@ async function buildPlugin({ watch, noInstall, production, noReload }: Args): Pr targets.push( esbuild.context({ ...common, - entryPoints: [manifest.plaintextPatches], - outfile: "dist/plaintextPatches.js", + entryPoints: [path.join(folderPath, manifest.plaintextPatches)], + outfile: `${distPath}/plaintextPatches.js`, }), ); manifest.plaintextPatches = "plaintextPatches.js"; } - if (!existsSync("dist")) mkdirSync("dist"); + if (!existsSync(distPath)) mkdirSync(distPath, { recursive: true }); - writeFileSync("dist/manifest.json", JSON.stringify(manifest)); + writeFileSync(`${distPath}/manifest.json`, JSON.stringify(manifest)); const contexts = await Promise.all(targets); await handleContexts(contexts, watch); @@ -377,11 +406,18 @@ async function buildPlugin({ watch, noInstall, production, noReload }: Args): Pr ws?.close(); } -async function buildTheme({ watch, noInstall, production, noReload }: Args): Promise { - let manifest = JSON.parse(readFileSync(manifestPath.toString(), "utf-8")); +async function buildTheme({ watch, noInstall, production, noReload, addon }: Args): Promise { + const manifestPath = addon + ? path.join(directory, "themes", addon, "manifest.json") + : "manifest.json"; + const manifest = JSON.parse(readFileSync(manifestPath.toString(), "utf-8")); + const distPath = addon ? `dist/${manifest.id}` : "dist"; + const folderPath = addon ? path.join(directory, "themes", addon) : directory; - const main = manifest.main || "src/main.css"; - const splash = manifest.splash || (existsSync("src/splash.css") ? "src/splash.css" : undefined); + const main = path.join(folderPath, manifest.main || "src/main.css"); + const splash = existsSync(path.join(folderPath, manifest.splash || "src/main.css")) + ? path.join(folderPath, manifest.splash || "src/main.css") + : undefined; const install: esbuild.Plugin = { name: "install", @@ -390,7 +426,7 @@ async function buildTheme({ watch, noInstall, production, noReload }: Args): Pro if (!noInstall) { const dest = path.join(CONFIG_PATH, "themes", manifest.id); if (existsSync(dest)) rmSync(dest, { recursive: true, force: true }); - cpSync("dist", dest, { recursive: true }); + cpSync(distPath, dest, { recursive: true }); console.log("Installed updated version"); if (!noReload) { @@ -423,7 +459,7 @@ async function buildTheme({ watch, noInstall, production, noReload }: Args): Pro esbuild.context({ ...common, entryPoints: [main], - outfile: "dist/main.css", + outfile: `${distPath}/main.css`, }), ); @@ -435,16 +471,16 @@ async function buildTheme({ watch, noInstall, production, noReload }: Args): Pro esbuild.context({ ...common, entryPoints: [splash], - outfile: "dist/splash.css", + outfile: `${distPath}/splash.css`, }), ); manifest.plaintextPatches = "splash.css"; } - if (!existsSync("dist")) mkdirSync("dist"); + if (!existsSync(distPath)) mkdirSync(distPath, { recursive: true }); - writeFileSync("dist/manifest.json", JSON.stringify(manifest)); + writeFileSync(`${distPath}/manifest.json`, JSON.stringify(manifest)); const contexts = await Promise.all(targets); await handleContexts(contexts, watch); @@ -484,12 +520,25 @@ const { argv } = yargs(hideBin(process.argv)) describe: "Don't reload the addon in Discord after building.", default: false, }); + yargs.option("all", { + type: "boolean", + describe: "Build all addons in a monorepo.", + default: false, + }); }, - (argv) => { + async (argv) => { if (argv.addon === "plugin") { - buildPlugin(argv); + if (argv.all && isMonoRepo) return buildAddons(buildPlugin, argv, "plugins"); + else { + const plugin = isMonoRepo ? await selectAddon("plugins") : undefined; + buildPlugin({ ...argv, addon: plugin?.name }); + } } else if (argv.addon === "theme") { - buildTheme(argv); + if (argv.all && isMonoRepo) return buildAddons(buildTheme, argv, "themes"); + else { + const theme = isMonoRepo ? await selectAddon("themes") : undefined; + buildTheme({ ...argv, addon: theme?.name }); + } } else { console.log("Invalid addon type."); } @@ -505,11 +554,19 @@ const { argv } = yargs(hideBin(process.argv)) describe: "Either a plugin or theme", }); }, - (argv) => { + async (argv) => { if (argv.addon === "plugin") { - bundleAddon(buildPlugin); + if (argv.all && isMonoRepo) return bundleAddons(buildPlugin, "plugins"); + else { + const addon = isMonoRepo ? await selectAddon("plugins") : undefined; + bundleAddon(buildPlugin, addon?.name); + } } else if (argv.addon === "theme") { - bundleAddon(buildTheme); + if (argv.all && isMonoRepo) return bundleAddons(buildTheme, "themes"); + else { + const addon = isMonoRepo ? await selectAddon("themes") : undefined; + bundleAddon(buildTheme, addon?.name); + } } else { console.log("Invalid addon type."); } diff --git a/bin/mono.mts b/bin/mono.mts new file mode 100644 index 000000000..693107b4a --- /dev/null +++ b/bin/mono.mts @@ -0,0 +1,82 @@ +#!/usr/bin/env node + +import { existsSync, readdirSync } from "fs"; +import path from "path"; +import { directory } from "./index.mjs"; +import prompts from "prompts"; +import { onCancel } from "./release.mjs"; + +export const isMonoRepo = + existsSync(path.join(process.cwd(), "plugins")) || existsSync(path.join(process.cwd(), "themes")); + +export type AddonType = "plugins" | "themes"; + +export function getAddonFolder(type: AddonType): string[] { + if (!existsSync(path.join(directory, type))) return []; + const folder = readdirSync(path.join(directory, type), { withFileTypes: true }); + + folder.filter((dirent) => dirent.isDirectory()); + + return folder.map((direct) => direct.name); +} + +interface SelectedAddon { + type: AddonType; + name: string; +} + +export async function selectAddon(type: AddonType | "all"): Promise { + if (type !== "all") { + const folder = getAddonFolder(type as AddonType); + + const { addon } = await prompts( + { + type: "select", + name: "addon", + message: "Select an addon", + choices: folder.map((folderName) => ({ + title: folderName, + value: { type, name: folderName }, + })), + }, + { onCancel }, + ); + + return addon; + } else { + const plugins: string[] = []; + const themes: string[] = []; + + if (existsSync(path.join(directory, "plugins"))) { + readdirSync(path.join(directory, "plugins"), { withFileTypes: true }).forEach((dirent) => { + if (dirent.isDirectory()) plugins.push(dirent.name); + }); + } + if (existsSync(path.join(directory, "themes"))) { + readdirSync(path.join(directory, "themes"), { withFileTypes: true }).forEach((dirent) => { + if (dirent.isDirectory()) themes.push(dirent.name); + }); + } + + const { addon } = await prompts( + { + type: "select", + name: "addon", + message: "Select an addon", + choices: [ + ...plugins.map((plugin) => ({ + title: `${plugin} (plugin)`, + value: { type: "plugins", name: plugin }, + })), + ...themes.map((theme) => ({ + title: `${theme} (theme)`, + value: { type: "themes", name: theme }, + })), + ], + }, + { onCancel }, + ); + + return addon; + } +} diff --git a/bin/release.mts b/bin/release.mts index fbe9ca89d..9343e6ee0 100644 --- a/bin/release.mts +++ b/bin/release.mts @@ -4,6 +4,7 @@ import prompts from "prompts"; import semver from "semver"; import chalk from "chalk"; import { execSync } from "child_process"; +import { isMonoRepo, selectAddon } from "./mono.mjs"; /** * Prompt a confirmation message and exit if the user does not confirm. @@ -44,7 +45,7 @@ function runCommand(command: string, exit = true): string { } } -function onCancel(): void { +export function onCancel(): void { console.log(chalk.red("Aborting")); process.exit(128); // SIGINT } @@ -82,7 +83,10 @@ export async function release(): Promise { const isClean = !status.trim(); if (!isClean) await confirmOrExit("Working directory is not clean. Continue?"); - const manifestPath = path.resolve(directory, "manifest.json"); + const addon = isMonoRepo ? await selectAddon("all") : null; + const manifestPath = addon + ? path.resolve(directory, addon.type, addon.name, "manifest.json") + : path.resolve(directory, "manifest.json"); if (!existsSync(manifestPath)) { console.log(chalk.red("manifest.json not found")); process.exit(1); @@ -96,15 +100,15 @@ export async function release(): Promise { process.exit(1); } - const packagePath = path.resolve(directory, "package.json"); - if (!existsSync(packagePath)) { + const packagePath = addon ? null : path.resolve(directory, "package.json"); + if (!isMonoRepo && !existsSync(packagePath!)) { console.log(chalk.red("package.json not found")); process.exit(1); } - const packageText = readFileSync(packagePath, "utf8"); + const packageText = packagePath ? readFileSync(packagePath, "utf8") : null; let packageJson; try { - packageJson = JSON.parse(packageText); + packageJson = packagePath ? JSON.parse(packageText!) : null; } catch { console.log(chalk.red("package.json is not valid JSON")); process.exit(1); @@ -189,14 +193,15 @@ export async function release(): Promise { // Update manifest.json and package.json manifest.version = nextVersion; - packageJson.version = nextVersion; + if (packageJson) packageJson.version = nextVersion; // Write manifest.json and package.json (indent with 2 spaces and keep trailing newline) writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`); - writeFileSync(packagePath, `${JSON.stringify(packageJson, null, 2)}\n`); + if (packageJson) writeFileSync(packagePath!, `${JSON.stringify(packageJson, null, 2)}\n`); // Stage changes - runCommand("git add manifest.json package.json"); + if (isMonoRepo) runCommand(`git add ${path.join(addon!.type, addon!.name, "manifest.json")}`); + else runCommand("git add manifest.json package.json"); // Commit changes const { message } = await prompts( @@ -204,7 +209,9 @@ export async function release(): Promise { type: "text", name: "message", message: "Commit message", - initial: `Release v${nextVersion}`, + initial: isMonoRepo + ? `[${manifest.name}] Release v${nextVersion}` + : `Release v${nextVersion}`, validate: (value) => { if (!value.trim()) return "Commit message is required"; @@ -222,7 +229,9 @@ export async function release(): Promise { type: "text", name: "tagName", message: "Tag name", - initial: `v${nextVersion}`, + initial: isMonoRepo + ? `v${nextVersion}-${manifest.name.replace(" ", "_")}` + : `v${nextVersion}`, validate: (value) => { if (!value.trim()) return "Tag name is required"; From 85a987adae46e6ac9d66cd3bf03b2b1d91df2627 Mon Sep 17 00:00:00 2001 From: Federico Di Leo <38290480+FedeIlLeone@users.noreply.github.com> Date: Tue, 26 Sep 2023 15:54:29 +0200 Subject: [PATCH 06/36] feat(ErrorBoundary): add error stack and plugin name (#553) * feat(ErrorBoundary): add error stack and plugin name * feat(ErrorBoundary): plugin name i18n * feat(ErrorBoundary): wrap collapsible in an ErrorBoundary * fix(ErrorBoundary): style arrow flex --------- Co-authored-by: Albert Portnoy --- .../modules/components/ErrorBoundary.css | 45 ++++++++++++- .../modules/components/ErrorBoundary.tsx | 65 +++++++++++++++++-- 2 files changed, 105 insertions(+), 5 deletions(-) diff --git a/src/renderer/modules/components/ErrorBoundary.css b/src/renderer/modules/components/ErrorBoundary.css index 217456682..be2f0294d 100644 --- a/src/renderer/modules/components/ErrorBoundary.css +++ b/src/renderer/modules/components/ErrorBoundary.css @@ -4,7 +4,18 @@ font-weight: bold; color: var(--header-primary); text-align: center; - margin-bottom: 24px; + margin-bottom: 16px; +} + +.replugged-error-boundary h3 { + font-size: 14px; + font-family: var(--font-primary); + font-weight: 500; + color: var(--header-primary); +} + +.replugged-error-boundary .replugged-error-boundary-plugin { + margin-bottom: 8px; } .replugged-error-boundary p { @@ -15,3 +26,35 @@ text-align: center; margin: 0px; } + +.replugged-error-boundary-collapsible { + color: var(--header-primary); + background-color: var(--background-secondary-alt); + border-radius: 8px; + transition: background-color 0.1s ease; + padding: 8px 12px; + margin-top: 16px; +} + +.replugged-error-boundary-collapsible:active { + background-color: var(--background-accent); +} + +.replugged-error-boundary-collapsible-header { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + cursor: pointer; +} + +.replugged-error-boundary-collapsible-stack { + background-color: var(--background-secondary); + color: var(--text-normal); + border-radius: 5px; + border: 1px solid var(--background-tertiary); + margin: 10px 0px; + padding: 12px; + user-select: text; + white-space: pre-wrap; +} diff --git a/src/renderer/modules/components/ErrorBoundary.tsx b/src/renderer/modules/components/ErrorBoundary.tsx index 6d9c7af7d..035a902ff 100644 --- a/src/renderer/modules/components/ErrorBoundary.tsx +++ b/src/renderer/modules/components/ErrorBoundary.tsx @@ -1,20 +1,54 @@ import { Messages } from "@common/i18n"; import React from "@common/react"; +import { plugins } from "@replugged"; import { Logger } from "../logger"; import "./ErrorBoundary.css"; const logger = new Logger("Components", "ErrorBoundary"); +function CollapsibleErrorStack(props: { stack: string }): React.ReactElement { + const { stack } = props; + + const [open, setOpen] = React.useState(false); + + const message = stack.split("\n")[0]; + + return ( +

+
setOpen(!open)}> +

{message}

+ + + +
+
+
+ {stack} +
+
+
+ ); +} + export interface ErrorProps { children: React.ReactNode; silent?: boolean; - onError?: (error: unknown, errorInfo: unknown) => void; + onError?: (error: Error, errorInfo: React.ErrorInfo) => void; /** Element to show if the error boundary is triggered */ fallback?: React.ReactNode; } export interface ErrorState { hasError: boolean; + error?: Error; + pluginName?: string; } export type ErrorBoundaryType = React.ComponentClass; @@ -25,11 +59,22 @@ export default class ErrorBoundary extends React.Component

{Messages.REPLUGGED_SETTINGS_ERROR_HEADER}

+ {pluginName && ( +

+ {Messages.REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME?.format?.({ name: pluginName })} +

+ )}

{Messages.REPLUGGED_SETTINGS_ERROR_SUB_HEADER}

+ {error?.stack && ( + }> + + + )} ) ); From df1ec926c54ef960efc5a34ef5a3a3084e11f1e0 Mon Sep 17 00:00:00 2001 From: Colin <63314105+colin273@users.noreply.github.com> Date: Tue, 26 Sep 2023 09:56:13 -0400 Subject: [PATCH 07/36] Support sub-imports from replugged package (#555) * Support sub-imports from replugged * Move create-import-wrappers.mts to the right spot * Support importing React from "react" * Export directly in import path Co-authored-by: Albert Portnoy * rm -rf in postpublish Co-authored-by: Albert Portnoy * Add top-level .d.ts to gitignore * Add types wrapper and reject non-type dist imports * Suggest correct pattern for dist imports * Add line break to "unsupported import" error message Co-authored-by: Alyxia Sother --------- Co-authored-by: Albert Portnoy Co-authored-by: Alyxia Sother --- .gitignore | 1 + bin/index.mts | 27 ++++++++++++++--------- package.json | 7 +++--- scripts/create-import-wrappers.mts | 35 ++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 13 deletions(-) create mode 100644 scripts/create-import-wrappers.mts diff --git a/.gitignore b/.gitignore index cf7bd98b8..792c93ddd 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ config.json /docs /*.asar /bin.mjs +/*.d.ts diff --git a/bin/index.mts b/bin/index.mts index 4b31335c3..553c5fc6a 100755 --- a/bin/index.mts +++ b/bin/index.mts @@ -302,23 +302,30 @@ async function buildPlugin({ watch, noInstall, production, noReload, addon }: Ar const globalModules: esbuild.Plugin = { name: "globalModules", setup: (build) => { - build.onResolve({ filter: /^replugged.+$/ }, (args) => { + build.onResolve({ filter: /^replugged(\/\w+)?$/ }, (args) => { if (args.kind !== "import-statement") return undefined; + if (args.path.includes("dist")) { + return { + errors: [ + { + text: `Unsupported import from dist: ${args.path}\nImport from either the top level of this module ("replugged") or a top-level subpath (e.g. "replugged/common") instead.`, + }, + ], + }; + } + return { - errors: [ - { - text: `Importing from a path (${args.path}) is not supported. Instead, please import from "replugged" and destructure the required modules.`, - }, - ], + path: args.path, + namespace: "replugged", }; }); - build.onResolve({ filter: /^replugged$/ }, (args) => { + build.onResolve({ filter: /^react$/ }, (args) => { if (args.kind !== "import-statement") return undefined; return { - path: args.path, + path: "replugged/common/React", namespace: "replugged", }; }); @@ -328,9 +335,9 @@ async function buildPlugin({ watch, noInstall, production, noReload, addon }: Ar filter: /.*/, namespace: "replugged", }, - () => { + (loadArgs) => { return { - contents: "module.exports = window.replugged", + contents: `module.exports = window.${loadArgs.path.replaceAll("/", ".")}`, }; }, ); diff --git a/package.json b/package.json index ce98e61d3..71656f048 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "lint": "pnpm run prettier:check && pnpm run eslint:check && pnpm run cspell:check && pnpm run typescript:check", "lint:fix": "pnpm run prettier:fix && pnpm run eslint:fix && pnpm run cspell:check && pnpm run typescript:check", "postinstall": "tsx scripts/build-bin.mts", - "prepublishOnly": "rm -rf dist; tsc --declaration --emitDeclarationOnly --noEmit false -p tsconfig.json --outDir dist; rm -rf dist/scripts; mv dist/src/* dist; rm -rf dist/src; cp src/*.d.ts dist", - "postpublish": "rm -rf dist; npm run build", + "prepublishOnly": "rm -rf dist; tsc --declaration --emitDeclarationOnly --noEmit false -p tsconfig.json --outDir dist; rm -rf dist/scripts; mv dist/src/* dist; rm -rf dist/src; cp src/*.d.ts dist; tsx scripts/create-import-wrappers.mts", + "postpublish": "rm -rf *.d.ts; rm -rf dist; npm run build", "docs": "typedoc src/renderer/replugged.ts --excludeExternals", "docs:watch": "pnpm run docs --watch" }, @@ -70,7 +70,8 @@ }, "files": [ "dist", - "bin" + "bin", + "*.d.ts" ], "dependencies": { "@codemirror/lang-css": "^6.2.1", diff --git a/scripts/create-import-wrappers.mts b/scripts/create-import-wrappers.mts new file mode 100644 index 000000000..7855cfe60 --- /dev/null +++ b/scripts/create-import-wrappers.mts @@ -0,0 +1,35 @@ +import { writeFileSync } from "node:fs"; +import { basename, join } from "node:path"; + +type LocationsRegistry = + | string[] + | { + [x: string]: LocationsRegistry; + }; + +const locations = { + renderer: { + modules: ["logger", "webpack", "i18n", "injector", "common", "components"], + apis: ["commands", "notices", "settings"], + util: ["."], + }, + types: ["."], +}; + +function createWrappers(currentPath: string[], subpaths: LocationsRegistry): void { + if (Array.isArray(subpaths)) { + for (const subpath of subpaths) { + const fullPath = join(...currentPath, subpath); + const dtsContents = `export * from "./${fullPath}";`; + writeFileSync(`${basename(fullPath)}.d.ts`, dtsContents); + } + } else { + for (const subpath in subpaths) { + currentPath.push(subpath); + createWrappers(currentPath, subpaths[subpath]); + currentPath.pop(); + } + } +} + +createWrappers(["./dist"], locations); From 16e85399a4f2c6b553e1c77e1124470a53693d4e Mon Sep 17 00:00:00 2001 From: Weblate Date: Sat, 30 Sep 2023 12:06:45 +0000 Subject: [PATCH 08/36] i18n: update translations from weblate Co-authored-by: TTtie Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/cs/ Translation: Replugged/Replugged --- i18n/cs.json | 56 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/i18n/cs.json b/i18n/cs.json index 993f88a99..0d1c22543 100644 --- a/i18n/cs.json +++ b/i18n/cs.json @@ -67,7 +67,7 @@ "REPLUGGED_PLUGIN_EMBED_COPIED": "Zkopírováno!", "REPLUGGED_PLUGIN_EMBED_WHATISTHIS": "Co to je?", "REPLUGGED_PLUGIN_EMBED_WHATISTHIS_CONTENT": "Toto je funkce Repluggedu. Umožňuje ti instalovat pluginy a motivy přímo z chatu.\nJednoduše zmáčkni instalační tlačítko v embedu.", - "REPLUGGED_COMMAND_ENABLE_DESC": "Povolí plugin/motiv", + "REPLUGGED_COMMAND_ENABLE_DESC": "Povolí plugin nebo motiv", "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name} je již nainstalován.", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "Nastala chyba při spouštění příkazu:", "REPLUGGED_ERROR_CHECK_CONSOLE": "Zkontroluj konzoli pro více informací.", @@ -119,8 +119,8 @@ "REPLUGGED_CANCEL": "Zrušit", "REPLUGGED_CONFIRM": "Potvrdit", "REPLUGGED_OK": "OK", - "REPLUGGED_COMMAND_DISABLE_DESC": "Zakáže plugin/motiv", - "REPLUGGED_COMMAND_RELOAD_DESC": "Znovu načte plugin/motiv", + "REPLUGGED_COMMAND_DISABLE_DESC": "Zakáže plugin nebo motiv", + "REPLUGGED_COMMAND_RELOAD_DESC": "Znovu načte plugin nebo motiv", "REPLUGGED_SETTINGS_ERROR_COMPONENT_STACK": "Component stack:", "REPLUGGED_ADDON_DELETE": "Odstranit {type}", "REPLUGGED_ADDON_PAGE_OPEN": "Otevřít {type} stránku", @@ -194,5 +194,53 @@ "REPLUGGED_INSTALLER_OPEN_STORE": "Zobrazit v Obchodě", "REPLUGGED_SETTINGS_ADDON_EMBEDS": "Zobrazit vložený obsash přídavných modulů", "REPLUGGED_SETTINGS_ADDON_EMBEDS_DESC": "Zobrazit kartu s informacemi pro přídavný modul když je v chatu sdílen instalační odkaz.", - "REPLUGGED_SETTINGS_REACT_DEVTOOLS": "Povolit React DevTools" + "REPLUGGED_SETTINGS_REACT_DEVTOOLS": "Povolit React DevTools", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_WINDOWS": "****VAROVÁNÍ:**** Povolení tohoto nastavení znefukční **přichycování oken**. V některých případech uvidíš černé pozadí, například když je část okna odříznuta nahoře nebo dole kvůli rozlišení monitoru nebo když jsou otevřené a ukotvené vývojářské nástroje.", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Nastala chyba, prosím, zkus to znovu později. Pokud tento problém přetrvává, kontaktuj prosím tým Replugged.", + "REPLUGGED_COMMAND_ENABLE_NAME": "povolit", + "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "doplněk", + "REPLUGGED_COMMAND_LIST_NAME": "seznam", + "REPLUGGED_COMMAND_LIST_DESC": "Vypíše všechny pluginy nebo motivy", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "odeslat", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "typ", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Ukáže doplňky, které jsou povolené, zakázané, nebo obojí", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "Povolené", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Všechny", + "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "Povolené {type}", + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Plugin: {name}", + "REPLUGGED_SETTINGS_TRANSPARENT": "Průhledné okno", + "REPLUGGED_COMMAND_INSTALL_NAME": "instalovat", + "REPLUGGED_COMMAND_INSTALL_DESC": "Nainstaluje plugin nebo motiv", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "doplněk", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Identifikátor doplňku k instalaci ze zdroje", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "zdroj", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Zdroj, ze kterého bude doplněk nainstalován", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Pokud má zdroj vícero doplňků, určuje, který nainstalovat", + "REPLUGGED_STORE": "Obchod", + "REPLUGGED_SETTINGS_RESTART_TITLE": "Vyžadován restart", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Úspěch", + "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "Vyber, který doplněk povolit", + "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} byl povolen!", + "REPLUGGED_COMMAND_DISABLE_NAME": "zakázat", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "doplněk", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "Vyber, který doplněk zakázat", + "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "{type} {name} byl zakázán!", + "REPLUGGED_COMMAND_RELOAD_NAME": "přenačíst", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "doplněk", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "Vyber, který doplněk znovu načíst", + "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} byl znovu načten!", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Odešle seznam veřejně do chatu", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC": "Jaký typ doplňku vypsat", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Vypsat pluginy", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Vypsat motivy", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "verze", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Zahrne do seznamu čísla verzí", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "stav", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "Zakázané", + "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "Zakázané {type}", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_LINUX": "****VAROVÁNÍ:**** Je možné, že bude nutné **vypnout hardwarovou akceleraci**. V některých případech uvidíš černé pozadí, například když je část okna odříznuta nahoře nebo dole kvůli rozlišení monitoru nebo když jsou otevřené a ukotvené vývojářské nástroje.", + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Musíš specifikovat, jestli mám poslat seznam pluginů, nebo motivů", + "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Zprůhlední okno Discordu, užitečné zejména pro tvorbu motivů. **Vyžaduje restart**.", + "REPLUGGED_RESTART": "Restartovat" } From 86e6325f2d52d4037150477487806421363d33f1 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 3 Oct 2023 13:06:46 +0000 Subject: [PATCH 09/36] i18n: update translations from weblate Co-authored-by: ags816710 Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/en_GB/ Translation: Replugged/Replugged --- i18n/en-GB.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/i18n/en-GB.json b/i18n/en-GB.json index e10d6af88..5437bdf00 100644 --- a/i18n/en-GB.json +++ b/i18n/en-GB.json @@ -233,5 +233,14 @@ "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Whether to show addons that are enabled, disabled or both", "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "Enabled", "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "Disabled", - "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Plugin: {name}" + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Plugin: {name}", + "REPLUGGED_COMMAND_INSTALL_NAME": "install", + "REPLUGGED_COMMAND_INSTALL_DESC": "Install a plugin or theme", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "addon", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Identifier of the addon to install from the source", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "source", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Source to install the addon from", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "If the source has multiple addons, specify which one to install", + "REPLUGGED_STORE": "Store" } From 3eff4ad310699e1b94675865eec1396f067cc70c Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 3 Oct 2023 21:06:46 +0000 Subject: [PATCH 10/36] i18n: update translations from weblate Co-authored-by: Fede Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/it/ Translation: Replugged/Replugged --- i18n/it.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/i18n/it.json b/i18n/it.json index a5b2d991d..a41dcc968 100644 --- a/i18n/it.json +++ b/i18n/it.json @@ -233,5 +233,14 @@ "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Completato", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN": "Elenca plugin", "REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME": "Elenca temi", - "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Plugin: {name}" + "REPLUGGED_SETTINGS_ERROR_PLUGIN_NAME": "Plugin: {name}", + "REPLUGGED_COMMAND_INSTALL_NAME": "installa", + "REPLUGGED_COMMAND_INSTALL_DESC": "Installa un plugin o un tema", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "addon", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "sorgente", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Identificatore dell'addon da installare dalla sorgente", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC": "Sorgente da cui installare l'addon", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME": "id", + "REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC": "Se la sorgente ha più addon, specifica quale installare", + "REPLUGGED_STORE": "Store" } From 9d9d793d76cfbd431763bf8eebedddde841cb2c4 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 3 Oct 2023 23:06:46 +0000 Subject: [PATCH 11/36] i18n: update translations from weblate Co-authored-by: TTtie Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/cs/ Translation: Replugged/Replugged --- i18n/cs.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/i18n/cs.json b/i18n/cs.json index 0d1c22543..d4cdc828c 100644 --- a/i18n/cs.json +++ b/i18n/cs.json @@ -9,7 +9,7 @@ "REPLUGGED_BADGES_BOOSTER": "Booster serveru Replugged", "REPLUGGED_GENERAL_SETTINGS": "Obecná nastavení", "REPLUGGED_I18N_CONTRIBUTE": "Chceš pomoct s překladem Replugged? Jdi na náš [Weblate]({weblateUrl})!", - "REPLUGGED_I18N_TRANSLATED_PERCENTAGE": "Replugged: {translated,number}% přeloženo", + "REPLUGGED_I18N_TRANSLATED_PERCENTAGE": "Replugged: {translated,number} % přeloženo", "REPLUGGED_LINK_NOW": "Propojit účet", "REPLUGGED_PLUGINS": "Pluginy", "REPLUGGED_QUICKCSS": "Rychlé nastavení CSS", @@ -23,7 +23,7 @@ "REPLUGGED_SETTINGS_NO_CLYDE": "Vyměnit Clyde", "REPLUGGED_SETTINGS_NO_CLYDE_DESC": "Zamění [Clyde]({clydeUrl}) v příkazech Repluggedu za bohatou nabídku avatarů a uživatelských jmen vybranou vývojáři plug-inů - ve výchozím nastavení \"Replugged\".", "REPLUGGED_SETTINGS_OVERLAY": "Nástroje pro vývojáře v překrytí", - "REPLUGGED_SETTINGS_OVERLAY_DESC": "Otevře okno s vývjoářskými nástroji, které ti umožní zjistit, co se děje v herním překrytí Discordu.", + "REPLUGGED_SETTINGS_OVERLAY_DESC": "Otevře okno s vývojářskými nástroji, které ti umožní zjistit, co se děje v herním překrytí Discordu.", "REPLUGGED_SETTINGS_RESTART": "Toto nastavení vyžaduje restart Discordu, aby se projevilo. Chceš restartovat Discord nyní?", "REPLUGGED_SNIPPET_APPLIED": "Snippet použit", "REPLUGGED_SNIPPET_APPLY": "Použít snippet", @@ -174,12 +174,12 @@ "REPLUGGED_UPDATES_TOAST_FAILED_ONE": "Aktualizace selhala!", "REPLUGGED_UPDATES_TOAST_FAILED_ALL": "Některé aktualizace selhaly!", "REPLUGGED_UPDATES_TOAST_SUCCESS_ONE": "Aktualizace proběhla úspěšně.", - "REPLUGGED_UPDATES_TOAST_NEW": "{count, plural, one {Nalezena # aktualizace!} few {Nalezeno # aktualizací} other {Nalezeno # aktualizací}}!", + "REPLUGGED_UPDATES_TOAST_NEW": "{count, plural, one {Nalezena # aktualizace} few {Nalezeno # aktualizací} other {Nalezeno # aktualizací}}!", "REPLUGGED_PLUGIN_INSTALL_RELOAD_PROMPT_BODY": "{name} potřebuje přenačtení pro jeho správné fungování. Přenačíst nyní?", "REPLUGGED_RELOAD": "Přenačíst", "REPLUGGED_I18N": "Překlady Replugged", "REPLUGGED_DEVELOPER_MODE_WARNING": "Momentálně máš Replugged spuštěný ve vývojářském režimu, ve kterém se není schopný sám aktualizovat. [Přepnutí do běžného režimu]({url}).", - "REPLUGGED_VIEW_UPDATES": "Zobrazuji {count, plural, =1 {# aktualizaci} =2 {# aktualizace} =3 {# aktualizace} =4 {# aktualizace} other {# aktualizací}}", + "REPLUGGED_VIEW_UPDATES": "Zobrazuji {count, plural, one {# aktualizaci} few {# aktualizace} other {# aktualizací}}", "REPLUGGED_ADDON_BROWSE": "Procházet {type}", "REPLUGGED_ADDON_NOT_REVIEWED": "Nerecenzovaný {type}", "REPLUGGED_ADDON_NOT_REVIEWED_DESC": "Tento {type} nebyl zkontrolován týmem Replugged a mohl by poškodit váš počítač. Používáte jej na vlastní nebezpečí.", @@ -188,7 +188,7 @@ "REPLUGGED_SETTINGS_DEV_COMPANION": "Znovu připojit Vývojářského Pomocníka", "REPLUGGED_SETTINGS_DEV_COMPANION_DESC": "Znovu připojí coremod Vývojářský Pomocník k rozšíření pro VSCode.", "REPLUGGED_SETTINGS_DEV_COMPANION_RECONNECT": "Znovu Připojit", - "REPLUGGED_SETTINGS_ADVANCED": "Pokročilé Nastavení", + "REPLUGGED_SETTINGS_ADVANCED": "Pokročilá nastavení", "REPLUGGED_SETTINGS_REACT_DEVTOOLS_DESC": "Načte rozšíření React DevTools, které vám dovolí prohlédnout strom React a jednoduššeji debugovat. **Vyžaduje restart**.", "REPLUGGED_SETTINGS_REACT_DEVTOOLS_FAILED": "Nepodařilo se stáhnout React DevTools.", "REPLUGGED_INSTALLER_OPEN_STORE": "Zobrazit v Obchodě", From aeda065dd44f45e93c6280b2f7b421b550a43a3d Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 4 Oct 2023 04:06:46 +0000 Subject: [PATCH 12/36] i18n: update translations from weblate Co-authored-by: Le-Who Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/ru/ Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/uk/ Translation: Replugged/Replugged --- i18n/ru.json | 42 ++++++++++++++++++++++++++++++++++++++---- i18n/uk.json | 10 ++++++++-- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/i18n/ru.json b/i18n/ru.json index d104eb3d0..b92e22d0d 100644 --- a/i18n/ru.json +++ b/i18n/ru.json @@ -67,8 +67,8 @@ "REPLUGGED_PLUGIN_EMBED_WHATISTHIS": "Что это?", "REPLUGGED_PLUGIN_EMBED_WHATISTHIS_CONTENT": "Это функция Replugged. Она позволяет тебе устанавливать плагины или темы прямо из чата.\nПросто нажми на кнопку установки в сообщении.", "REPLUGGED_PLUGIN_EMBED_COPY": "Копировать Ссылку", - "REPLUGGED_COMMAND_ENABLE_DESC": "Включить плагин/тему", - "REPLUGGED_COMMAND_RELOAD_DESC": "Перезагрузить плагин/тему", + "REPLUGGED_COMMAND_ENABLE_DESC": "Включить плагин или тему", + "REPLUGGED_COMMAND_RELOAD_DESC": "Перезагрузить плагин или тему", "REPLUGGED_NOTICES_WELCOME_NEW_USER": "Добро пожаловать! Replugged был успешно внедрен в ваш клиент Discord. Не стесняйтесь присоединяться к нашему серверу Discord для объявлений, поддержки и многого другого!", "REPLUGGED_UPDATES_OPTS_DEBUG_CATEGORY_SYSTEM_DISCORD": "Система / Discord", "REPLUGGED_UPDATES_OPTS_DEBUG_ARCH": "Архитектура:", @@ -82,7 +82,7 @@ "REPLUGGED_CANCEL": "Отмена", "REPLUGGED_CONFIRM": "Подтвердить", "REPLUGGED_OK": "ОК", - "REPLUGGED_COMMAND_DISABLE_DESC": "Отключить плагин/тему", + "REPLUGGED_COMMAND_DISABLE_DESC": "Отключить плагин или тему", "REPLUGGED_BUTTON_INSTALLER_DOWNLOAD": "Скачать {type}", "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name} уже установлен.", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "Произошла ошибка во время исполнения команнды:", @@ -196,5 +196,39 @@ "REPLUGGED_SETTINGS_ADDON_EMBEDS_DESC": "Посмотреть в хранилище.", "REPLUGGED_SETTINGS_ADDON_EMBEDS": "Показывать карточку с информацией об аддоне, при отправке ссылки на хранилище/установку в чате", "REPLUGGED_RESTART": "Перезагрузить", - "REPLUGGED_SETTINGS_RESTART_TITLE": "Требуется перезагрузка" + "REPLUGGED_SETTINGS_RESTART_TITLE": "Требуется перезагрузка", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_WINDOWS": "****ПРЕДУПРЕЖДЕНИЕ:**** Это приведет к нарушению **привязки окна**. В некоторых случаях может появиться черный фон, например, когда окно обрезается сверху или снизу из-за разрешения монитора, или когда инструменты разработки открыты и пристыкованы.", + "REPLUGGED_SETTINGS_TRANSPARENT_ISSUES_LINUX": "****ПРЕДУПРЕЖДЕНИЕ:**** **Аппаратное ускорение** может потребоваться **отключить**. В некоторых случаях может появиться черный фон, например, когда окно обрезается сверху или снизу из-за разрешения монитора, или когда инструменты разработки открыты и пристыкованы.", + "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Делает окно Discord прозрачным, полезно в создании тем. **Требуется перезапуск**.", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Что-то пошло не так, повторите попытку позже. Если проблема остается, обратитесь к команде Replugged.", + "REPLUGGED_COMMAND_ENABLE_NAME": "включить", + "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "дополнение", + "REPLUGGED_COMMAND_ADDONS_OPTION_ADDON_DESC": "Выберите, какое дополнение включить", + "REPLUGGED_COMMAND_ENABLE_MESSAGE_ENABLED": "{type} {name} был включен!", + "REPLUGGED_COMMAND_DISABLE_NAME": "отключить", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "дополнение", + "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "Выберите, какое дополнение отключить", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_NAME": "дополнение", + "REPLUGGED_COMMAND_RELOAD_OPTION_ADDON_DESC": "Выберите, какое дополнение перезагрузить", + "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "{type} {name} было отключено!", + "REPLUGGED_COMMAND_RELOAD_NAME": "перезагрузить", + "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} перезагружен!", + "REPLUGGED_COMMAND_LIST_NAME": "список", + "REPLUGGED_COMMAND_LIST_DESC": "Список всех плагинов и тем", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_NAME": "отправить", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_NAME": "тип", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_ENABLED": "Включенные", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_DISABLED": "Отключенные", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_CHOICE_BOTH": "Все", + "REPLUGGED_COMMAND_LIST_HEADER_ENABLED": "Включено {type}", + "REPLUGGED_COMMAND_LIST_HEADER_DISABLED": "Отключено {type}", + "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Необходимо указать, отправлять список плагинов или тем", + "REPLUGGED_SETTINGS_TRANSPARENT": "Прозрачное окно", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Успех", + "REPLUGGED_COMMAND_LIST_OPTION_SEND_DESC": "Поделиться списком в чате", + "REPLUGGED_COMMAND_LIST_OPTION_TYPE_DESC": "Какой тип дополнений показать", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_NAME": "версия", + "REPLUGGED_COMMAND_LIST_OPTION_VERSION_DESC": "Включить номер версий в список", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_NAME": "статус", + "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Показывать ли включенные, отключенные или все дополнения" } diff --git a/i18n/uk.json b/i18n/uk.json index c2ca9133f..140b4f1c9 100644 --- a/i18n/uk.json +++ b/i18n/uk.json @@ -197,7 +197,7 @@ "REPLUGGED_SETTINGS_ADDON_EMBEDS_DESC": "Показувати картку з інформацією про аддон коли посилання в магазин чи встановлення поширено в чаті.", "REPLUGGED_RESTART": "Перезавантажити", "REPLUGGED_SETTINGS_RESTART_TITLE": "Потрібне перезавантаження", - "REPLUGGED_COMMAND_ERROR_GENERIC": "Щось пішло не так, спробуйте пізніше. Якщо проблема не зникне, зверніться до команли Replugged.", + "REPLUGGED_COMMAND_ERROR_GENERIC": "Щось пішло не так, спробуйте пізніше. Якщо проблема не зникне, зверніться до команди Replugged.", "REPLUGGED_COMMAND_ENABLE_OPTION_ADDON_NAME": "аддон", "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_NAME": "аддон", "REPLUGGED_COMMAND_DISABLE_OPTION_ADDON_DESC": "Виберіть, який аддон вимкнути", @@ -227,5 +227,11 @@ "REPLUGGED_COMMAND_LIST_OPTION_STATUS_DESC": "Чи показувати ввімкнуті, вимкнені або всі аддони", "REPLUGGED_COMMAND_LIST_ERROR_SPECIFY": "Вам потрібно вказати, чи відправити список плагінінів або список тем", "REPLUGGED_SETTINGS_TRANSPARENT": "Прозоре вікно", - "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Робить вікно Discord прозорим, що є доволі корисним для створення тем. **Потрібне перезавантаження**." + "REPLUGGED_SETTINGS_TRANSPARENT_DESC": "Робить вікно Discord прозорим, що є доволі корисним для створення тем. **Потрібне перезавантаження**.", + "REPLUGGED_COMMAND_INSTALL_NAME": "встановити", + "REPLUGGED_COMMAND_INSTALL_DESC": "Встановити плагін чи тему", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME": "аддон", + "REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC": "Ідентифікатор доповнення для встановлення з джерела", + "REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME": "джерело", + "REPLUGGED_COMMAND_SUCCESS_GENERIC": "Успіх" } From 35870f8045fc7c0a9eeead7ff960ab731a98a61e Mon Sep 17 00:00:00 2001 From: Penguin-Spy Date: Wed, 4 Oct 2023 17:07:39 -0700 Subject: [PATCH 13/36] Call injected callbacks with the this keyword set (#543) * call injected callbacks with the this keyword set * don't mark the self param as depreciated --- src/renderer/modules/injector.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/modules/injector.ts b/src/renderer/modules/injector.ts index f01aa1524..06169ef3f 100644 --- a/src/renderer/modules/injector.ts +++ b/src/renderer/modules/injector.ts @@ -99,7 +99,7 @@ function replaceMethod, U extends keyof T & str const injectionsForProp = objInjections.injections.get(funcName)!; for (const b of injectionsForProp.before) { - const newArgs = b(args, this); + const newArgs = b.call(this, args, this); if (Array.isArray(newArgs)) { args = newArgs; } @@ -111,7 +111,7 @@ function replaceMethod, U extends keyof T & str res = originalFunc.apply(this, args); } else { for (const i of injectionsForProp.instead) { - const newResult = i(args, originalFunc, this); + const newResult = i.call(this, args, originalFunc, this); if (newResult !== void 0) { res = newResult; } @@ -119,7 +119,7 @@ function replaceMethod, U extends keyof T & str } for (const a of injectionsForProp.after) { - const newResult = a(args, res, this); + const newResult = a.call(this, args, res, this); if (newResult !== void 0) { res = newResult; } From 2e147afc156ddb0723a4055c4c298dcf50ffba10 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 6 Oct 2023 08:06:47 +0000 Subject: [PATCH 14/36] i18n: update translations from weblate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: La prière Translate-URL: https://i18n.replugged.dev/projects/replugged/replugged/ja/ Translation: Replugged/Replugged --- i18n/ja.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/i18n/ja.json b/i18n/ja.json index a6f31c370..de014e2e8 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -70,7 +70,7 @@ "REPLUGGED_CONFIRM": "確認", "REPLUGGED_OK": "OK", "REPLUGGED_COMMAND_DISABLE_DESC": "プラグイン/テーマを無効にする", - "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name}は既にインストールされています。", + "REPLUGGED_ERROR_ALREADY_INSTALLED": "{name} は既にインストールされています。", "REPLUGGED_ERROR_AN_ERROR_OCCURRED_COMMAND": "正しくコマンドを実行できませんでした:", "REPLUGGED_ERROR_CHECK_CONSOLE": "詳細はコンソールを確認してください。", "REPLUGGED_NOTICES_WELCOME_NEW_USER": "ようこそ!Replugged はあなたのDiscordクライアントに正常に導入されました。気軽に私たちのDiscord サーバーに参加すると、アナウンスやサポートなどを得る事が出来ます!", @@ -127,7 +127,7 @@ "REPLUGGED_ADDON_RELOAD": "{type} を再読み込み", "REPLUGGED_ADDON_SETTINGS": "{type} の設定を開く", "REPLUGGED_ADDON_UNINSTALL_PROMPT_BODY": "本当にこの{type}をアンインストールしますか?これは元に戻せません。", - "REPLUGGED_ADDON_UNINSTALL": "{name}をアンインストール", + "REPLUGGED_ADDON_UNINSTALL": "{name} をアンインストール", "REPLUGGED_ADDONS_FOLDER_OPEN": "{type}フォルダーを開く", "REPLUGGED_ADDONS_LOAD_MISSING": "不足している{type}を読み込む", "REPLUGGED_ADDONS_TITLE_COUNT": "{type} ({count, number})", @@ -135,13 +135,13 @@ "REPLUGGED_NO_ADDONS_INSTALLED": "{type}はインストールされていません。", "REPLUGGED_QUICKCSS_CHANGES_APPLY": "変更を適用", "REPLUGGED_SEARCH_FOR_ADDON": "{type}を検索", - "REPLUGGED_TOAST_ADDON_DISABLE_SUCCESS": "無効な{name}", - "REPLUGGED_TOAST_ADDON_ENABLE_SUCCESS": "有効な{name}", - "REPLUGGED_TOAST_ADDON_RELOAD_FAILED": "{name}の再読み込みに失敗しました", - "REPLUGGED_TOAST_ADDON_RELOAD_SUCCESS": "{name}を再読み込みしました", - "REPLUGGED_TOAST_ADDON_TOGGLE_FAILED": "{name}の切り替えに失敗しました", - "REPLUGGED_TOAST_ADDON_UNINSTALL_FAILED": "{name}のアンインストールに失敗しました", - "REPLUGGED_TOAST_ADDON_UNINSTALL_SUCCESS": "{name}をアンインストールしました", + "REPLUGGED_TOAST_ADDON_DISABLE_SUCCESS": "{name} を無効化しました", + "REPLUGGED_TOAST_ADDON_ENABLE_SUCCESS": "{name} を無効化しました", + "REPLUGGED_TOAST_ADDON_RELOAD_FAILED": "{name} の再読み込みに失敗しました", + "REPLUGGED_TOAST_ADDON_RELOAD_SUCCESS": "{name} を再読み込みしました", + "REPLUGGED_TOAST_ADDON_TOGGLE_FAILED": "{name} の切り替えに失敗しました", + "REPLUGGED_TOAST_ADDON_UNINSTALL_FAILED": "{name} のアンインストールに失敗しました", + "REPLUGGED_TOAST_ADDON_UNINSTALL_SUCCESS": "{name} をアンインストールしました", "REPLUGGED_TOAST_ADDONS_LOAD_MISSING_FAILED": "不足している{type}の読み込みに失敗しました", "REPLUGGED_TOAST_ADDONS_LOAD_MISSING_SUCCESS": "不足している{type}を読み込みました", "REPLUGGED_TOAST_PROFILE_FETCH_FAILED": "ユーザープロフィールの取得に失敗しました", @@ -152,8 +152,8 @@ "REPLUGGED_LIST_RESULTS": "{count, number}個一致しました", "REPLUGGED_PLUGIN_INSTALL_RELOAD_PROMPT_BODY": "{name} を正しく動作させるには再読み込みが必要です。今すぐ再読み込みしますか?", "REPLUGGED_RELOAD": "再読み込み", - "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_FAILED": "{name}のインストールに失敗しました。", - "REPLUGGED_INSTALLER_INSTALL_PROMPT_BODY": "{name} {authors}をインストールしますか?", + "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_FAILED": "{name} のインストールに失敗しました。", + "REPLUGGED_INSTALLER_INSTALL_PROMPT_BODY": "{name} {authors} をインストールしますか?", "REPLUGGED_COMMAND_DISABLE_MESSAGE_ENABLED": "{type} {name} は無効化されました!", "REPLUGGED_COMMAND_RELOAD_MESSAGE_ENABLED": "{type} {name} はリロードされました!", "REPLUGGED_DEVELOPER_MODE_WARNING": "現在、開発者モードで Replugged を実行しているため、Replugged 自体のアップデートができません。[本番モードに切り替えてください。]({url})", @@ -236,8 +236,8 @@ "REPLUGGED_ADDON_AUTHORS_TWO": "作者: {author1}, {author2}", "REPLUGGED_ADDON_AUTHORS_THREE": "作者: {author1}, {author2}, {author3}", "REPLUGGED_CONFIRM_INSTALL": "インストール", - "REPLUGGED_TOAST_INSTALLER_ADDON_LOAD_FAILED": "{name}はインストールされましたが、ロードできませんでした。", - "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_SUCCESS": "{name}が正常にインストールされました。", + "REPLUGGED_TOAST_INSTALLER_ADDON_LOAD_FAILED": "{name} はインストールされましたが、ロードできませんでした。", + "REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_SUCCESS": "{name} が正常にインストールされました。", "REPLUGGED_UPDATES_UPDATE_ALL": "すべてアップデート", "REPLUGGED_UPDATES_TOAST_NO_NEW": "新しいアップデートはありません。", "REPLUGGED_UPDATES_TOAST_FAILED_ALL": "アップデート失敗!", From 3f63280342caec390869910bcfee2026c256dc35 Mon Sep 17 00:00:00 2001 From: LoneWeeb <73281112+Tharki-God@users.noreply.github.com> Date: Mon, 9 Oct 2023 22:58:38 +0530 Subject: [PATCH 15/36] correct strings (#569) use correct strings made for the command --- src/renderer/coremods/commands/commands.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/coremods/commands/commands.ts b/src/renderer/coremods/commands/commands.ts index 214b27d61..55881747b 100644 --- a/src/renderer/coremods/commands/commands.ts +++ b/src/renderer/coremods/commands/commands.ts @@ -268,12 +268,12 @@ export function loadCommands(): void { required: true, choices: [ { - name: Messages.REPLUGGED_THEME, + name: Messages.REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME, displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_THEME, value: "theme", }, { - name: Messages.REPLUGGED_PLUGIN, + name: Messages.REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN, displayName: Messages.REPLUGGED_COMMAND_LIST_OPTION_TYPE_CHOICE_PLUGIN, value: "plugin", }, From 11f35d91cebd304e09788aac7de8ac1d5ca18fac Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 10 Oct 2023 19:52:05 -0500 Subject: [PATCH 16/36] Separate dist for bundle (#564) * Separate dist for bundle * Prettier --- .gitignore | 1 + scripts/build.mts | 28 +++++++++++++++------------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 792c93ddd..d05b1773c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ node_modules result dist/ +dist-bundle/ .parcel-cache yarn.lock package-lock.json diff --git a/scripts/build.mts b/scripts/build.mts index 10640b352..d1e1aade8 100644 --- a/scripts/build.mts +++ b/scripts/build.mts @@ -21,31 +21,38 @@ const production = process.argv.includes("--production"); const dirname = path.dirname(fileURLToPath(import.meta.url)); +const distDir = production ? "dist-bundle" : "dist"; + +// Delete old builds to prevent issues/confusion from leftover files +rmSync("dist", { recursive: true, force: true }); +rmSync("dist-bundle", { recursive: true, force: true }); +rmSync("replugged.asar", { force: true }); + const preBundle: esbuild.Plugin = { name: "preBundle", setup: (build) => { build.onEnd(() => { - if (!existsSync("dist/i18n")) { - mkdirSync("dist/i18n"); + if (!existsSync(`${distDir}/i18n`)) { + mkdirSync(`${distDir}/i18n`); } readdirSync("i18n").forEach((file) => { if (file.endsWith(".json")) { - copyFileSync(`i18n/${file}`, `dist/i18n/${file}`); + copyFileSync(`i18n/${file}`, `${distDir}/i18n/${file}`); } }); const mainPackage = JSON.parse(readFileSync("package.json", "utf-8")); writeFileSync( - "dist/package.json", + `${distDir}/package.json`, JSON.stringify({ main: "main.js", name: "replugged", version: mainPackage.version, }), ); - asar.createPackage("dist", "replugged.asar"); + asar.createPackage(`${distDir}`, "replugged.asar"); }); }, }; @@ -53,13 +60,8 @@ const preBundle: esbuild.Plugin = { const plugins: esbuild.Plugin[] = []; if (!watch) plugins.push(logBuildPlugin); - if (production) { - rmSync("dist", { recursive: true, force: true }); plugins.push(preBundle); -} else { - rmSync("dist/i18n", { recursive: true, force: true }); - rmSync("dist/package.json", { force: true }); } const common: esbuild.BuildOptions = { @@ -80,7 +82,7 @@ const contexts = await Promise.all([ entryPoints: ["src/main/index.ts"], platform: "node", target: `node${NODE_VERSION}`, - outfile: "dist/main.js", + outfile: `${distDir}/main.js`, external: ["electron"], }), // Preload @@ -89,7 +91,7 @@ const contexts = await Promise.all([ entryPoints: ["src/preload.ts"], platform: "node", target: [`node${NODE_VERSION}`, `chrome${CHROME_VERSION}`], - outfile: "dist/preload.js", + outfile: `${distDir}/preload.js`, external: ["electron"], }), // Renderer @@ -98,7 +100,7 @@ const contexts = await Promise.all([ entryPoints: ["src/renderer/index.ts"], platform: "browser", target: `chrome${CHROME_VERSION}`, - outfile: "dist/renderer.js", + outfile: `${distDir}/renderer.js`, format: "esm", }), ]); From 66536d73dc027210f638885baeb69cb768168081 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Tue, 10 Oct 2023 20:16:35 -0500 Subject: [PATCH 17/36] Fixes for Flatpak (#538) --- scripts/inject/injector.mts | 66 +++++++------------------------------ 1 file changed, 11 insertions(+), 55 deletions(-) diff --git a/scripts/inject/injector.mts b/scripts/inject/injector.mts index 1288668e8..d72a6e176 100644 --- a/scripts/inject/injector.mts +++ b/scripts/inject/injector.mts @@ -2,8 +2,7 @@ import { chown, copyFile, mkdir, rename, rm, stat, writeFile } from "fs/promises import path, { join, sep } from "path"; import { fileURLToPath } from "url"; import { AnsiEscapes, getCommand } from "./util.mjs"; -import readline from "readline"; -import { exec } from "child_process"; +import { execSync } from "child_process"; import { DiscordPlatform, PlatformModule } from "./types.mjs"; import { CONFIG_PATH } from "../../src/util.mjs"; import { existsSync } from "fs"; @@ -109,61 +108,22 @@ export const inject = async ( return false; } + const entryPoint = prod + ? join(CONFIG_PATH, "replugged.asar") + : join(dirname, "..", "..", "dist/main.js"); + const entryPointDir = path.dirname(entryPoint); + if (appDir.includes("flatpak")) { const discordName = platform === "canary" ? "DiscordCanary" : "Discord"; const overrideCommand = `${ appDir.startsWith("/var") ? "sudo flatpak override" : "flatpak override --user" - } com.discordapp.${discordName} --filesystem=${join(dirname, "..")}`; - const updateScript = ` - #!/bin/bash - shopt -s globstar - - for folder in ${join(dirname, "..")}/**/.git; do - (cd "$folder/.." && echo "Pulling $PWD" && git pull) - done`; - const readlineInterface = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); - - const askExecCmd = (): Promise => - new Promise((resolve) => - readlineInterface.question("Would you like to execute the command now? y/N: ", resolve), - ); - const askViewScript = (): Promise => - new Promise((resolve) => - readlineInterface.question( - "To update Replugged and its plugins, you need to pull in changes with git manually. A script is available for this however. View it? Y/n: ", - resolve, - ), - ); + } com.discordapp.${discordName} --filesystem=${entryPointDir}`; - console.warn( - `${AnsiEscapes.YELLOW}NOTE:${AnsiEscapes.RESET} You seem to be using the Flatpak version of Discord.`, - ); - console.warn( - "Some Replugged features such as auto updates won't work properly with Flatpaks.", - "\n", - ); - console.warn("You'll need to allow Discord to access Replugged's installation directory"); - console.warn( - `You can allow access to Replugged's directory with this command: ${AnsiEscapes.YELLOW}${overrideCommand}${AnsiEscapes.RESET}`, + console.log( + `${AnsiEscapes.YELLOW}Flatpak detected, allowing Discord access to Replugged files (${entryPointDir})${AnsiEscapes.RESET}`, ); - - const doCmd = await askExecCmd(); - - if (doCmd === "y" || doCmd === "yes") { - console.log("Running..."); - exec(overrideCommand); - } else { - console.log("OK. The command will not be executed.", "\n"); - } - - const viewScript = await askViewScript(); - if (viewScript === "" || viewScript === "y" || viewScript === "yes") { - console.log(`${AnsiEscapes.YELLOW}${updateScript}${AnsiEscapes.RESET}`); - } - readlineInterface.close(); + execSync(overrideCommand); + console.log("Done!"); } try { @@ -182,10 +142,6 @@ export const inject = async ( process.exit(process.argv.includes("--no-exit-codes") ? 0 : 1); } - const entryPoint = prod - ? join(CONFIG_PATH, "replugged.asar") - : join(dirname, "..", "..", "dist/main.js"); - if (prod) { await copyFile(join(dirname, "..", "..", "replugged.asar"), entryPoint); if (["linux", "darwin"].includes(process.platform)) { From 5115db09d444405fcd15358595145a7e2de67c83 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 11 Oct 2023 20:17:16 -0500 Subject: [PATCH 18/36] Lint --- src/renderer/apis/commands.ts | 12 +++---- src/renderer/coremods/commands/commands.ts | 12 +++---- src/renderer/coremods/commands/index.ts | 32 +++++++++---------- src/renderer/managers/themes.ts | 4 +-- .../modules/components/ButtonItem.tsx | 7 ++-- src/renderer/modules/components/Category.tsx | 7 ++-- src/types/coremods/commands.ts | 16 +++++----- src/types/discord.ts | 8 +++-- 8 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/renderer/apis/commands.ts b/src/renderer/apis/commands.ts index fc13ba012..d58014d48 100644 --- a/src/renderer/apis/commands.ts +++ b/src/renderer/apis/commands.ts @@ -10,6 +10,7 @@ import type { RepluggedCommandResult, RepluggedCommandSection, } from "../../types"; +// eslint-disable-next-line no-duplicate-imports import { ApplicationCommandOptionType } from "../../types"; import { constants, i18n, messages, users } from "../modules/common"; import type { Store } from "../modules/common/flux"; @@ -43,7 +44,7 @@ export class CommandInteraction { channelId: string, optionName: string, draftType: 0, - ) => { uploadedFilename?: string; item?: { file: File } }; + ) => { uploadedFilename?: string; item?: { file: File } } | undefined; } >("UploadAttachmentStore")!; this.options = props.options; @@ -160,13 +161,12 @@ async function executeCommand( } catch (error) { logger.error(error); const currentChannelId = currentInfo.channel.id; - const botMessage = messages.createBotMessage?.({ + const botMessage = messages.createBotMessage({ channelId: currentChannelId, content: i18n.Messages.REPLUGGED_COMMAND_ERROR_GENERIC, embeds: [], loggingName: "Replugged", }); - if (!botMessage) return; Object.assign(botMessage.author, { username: "Replugged", @@ -189,7 +189,7 @@ async function executeCommand( type: 20, }); - messages?.receiveMessage?.(currentChannelId, botMessage, true); + messages.receiveMessage(currentChannelId, botMessage, true); } } @@ -222,7 +222,7 @@ export class CommandManager { command.id ??= command.name; command.execute ??= (args, currentInfo) => { - void executeCommand(command.executor, args ?? [], currentInfo ?? {}, command); + void executeCommand(command.executor, args, currentInfo, command); }; command.options?.map((option) => { @@ -246,6 +246,6 @@ export class CommandManager { * Code to unregister all slash commands registered with this class */ public unregisterAllCommands(): void { - for (const unregister of this.#unregister) unregister?.(); + for (const unregister of this.#unregister) unregister(); } } diff --git a/src/renderer/coremods/commands/commands.ts b/src/renderer/coremods/commands/commands.ts index 55881747b..7377fe0f0 100644 --- a/src/renderer/coremods/commands/commands.ts +++ b/src/renderer/coremods/commands/commands.ts @@ -68,8 +68,8 @@ export function loadCommands(): void { ? Messages.REPLUGGED_PLUGIN : Messages.REPLUGGED_THEME, name: - plugins.plugins.get(addonId)?.manifest?.name ?? - themes.themes.get(addonId)?.manifest?.name, + plugins.plugins.get(addonId)?.manifest.name ?? + themes.themes.get(addonId)?.manifest.name, }), }, ], @@ -151,8 +151,8 @@ export function loadCommands(): void { ? Messages.REPLUGGED_PLUGIN : Messages.REPLUGGED_THEME, name: - plugins.plugins.get(addonId)?.manifest?.name ?? - themes.themes.get(addonId)?.manifest?.name, + plugins.plugins.get(addonId)?.manifest.name ?? + themes.themes.get(addonId)?.manifest.name, }), }, ], @@ -229,8 +229,8 @@ export function loadCommands(): void { ? Messages.REPLUGGED_PLUGIN : Messages.REPLUGGED_THEME, name: - plugins.plugins.get(addonId)?.manifest?.name ?? - themes.themes.get(addonId)?.manifest?.name, + plugins.plugins.get(addonId)?.manifest.name ?? + themes.themes.get(addonId)?.manifest.name, }), }, ], diff --git a/src/renderer/coremods/commands/index.ts b/src/renderer/coremods/commands/index.ts index 34f33b857..cbdc1b0c6 100644 --- a/src/renderer/coremods/commands/index.ts +++ b/src/renderer/coremods/commands/index.ts @@ -19,32 +19,32 @@ interface ApplicationCommandSearchStoreMod { [key: string]: (...args: unknown[]) => { sectionDescriptors: RepluggedCommandSection[]; commands: AnyRepluggedCommand[]; - filteredSectionId: string; + filteredSectionId: string | null; activeSections: RepluggedCommandSection[]; commandsByActiveSection: Array<{ section: RepluggedCommandSection; data: AnyRepluggedCommand[]; }>; - }; + } | undefined; } interface ApplicationCommandSearchStore { getChannelState: (...args: unknown[]) => { applicationSections: RepluggedCommandSection[]; applicationCommands: AnyRepluggedCommand[]; - }; - getApplicationSections: (...args: unknown[]) => RepluggedCommandSection[]; + } | undefined; + getApplicationSections: (...args: unknown[]) => RepluggedCommandSection[] | undefined; useSearchManager: (...args: unknown[]) => unknown; - getQueryCommands: (...args: [string, string, string]) => AnyRepluggedCommand[]; + getQueryCommands: (...args: [string, string, string]) => AnyRepluggedCommand[] | undefined; } async function injectRepluggedBotIcon(): Promise { // Adds Avatar for replugged to default avatar to be used by system bot just like clyde // Ain't removing it on stop because we have checks here const DefaultAvatars = await waitForProps<{ - BOT_AVATARS: Record; + BOT_AVATARS: Record | undefined; }>("BOT_AVATARS"); - if (DefaultAvatars?.BOT_AVATARS) { + if (DefaultAvatars.BOT_AVATARS) { DefaultAvatars.BOT_AVATARS.replugged = defaultSection.icon; } else { logger.error("Error while injecting custom icon for slash command replies."); @@ -88,7 +88,7 @@ async function injectApplicationCommandSearchStore(): Promise { const sectionsToAdd = commandAndSectionsArray .map((commandAndSection) => commandAndSection.section) .filter((section) => !res.sectionDescriptors.includes(section)); - if (res.sectionDescriptors.some?.((section) => section?.id === "-2")) { + if (res.sectionDescriptors.some((section) => section.id === "-2")) { res.sectionDescriptors.splice(1, 0, ...sectionsToAdd); } else { res.sectionDescriptors = Array.isArray(res.sectionDescriptors) @@ -109,7 +109,7 @@ async function injectApplicationCommandSearchStore(): Promise { (res.filteredSectionId == null || res.filteredSectionId === section.id) && !res.activeSections.includes(section), ); - if (res.activeSections.some?.((section) => section?.id === "-2")) { + if (res.activeSections.some((section) => section.id === "-2")) { res.activeSections.splice(1, 0, ...sectionsToAdd); } else { res.activeSections = Array.isArray(res.activeSections) @@ -134,8 +134,8 @@ async function injectApplicationCommandSearchStore(): Promise { })); if ( - res.commandsByActiveSection.some?.( - (activeCommandAndSections) => activeCommandAndSections?.section?.id === "-2", + res.commandsByActiveSection.some( + (activeCommandAndSections) => activeCommandAndSections.section.id === "-2", ) ) { res.commandsByActiveSection.splice(1, 0, ...commandsBySectionToAdd); @@ -179,7 +179,7 @@ async function injectApplicationCommandSearchStore(): Promise { if ( !Array.isArray(res.applicationSections) || !commandAndSectionsArray.every((commandAndSection) => - res.applicationSections?.some((section) => section.id === commandAndSection.section.id), + res.applicationSections.some((section) => section.id === commandAndSection.section.id), ) ) { const sectionsToAdd = commandAndSectionsArray.map( @@ -217,16 +217,16 @@ async function injectApplicationCommandSearchStore(): Promise { const commandAndSectionsArray = Array.from(commandAndSections.values()).filter( (commandAndSection) => commandAndSection.commands.size, ); - if (!res || !commandAndSectionsArray.length) return; + if (!commandAndSectionsArray.length) return; if ( !commandAndSectionsArray.every((commandAndSection) => - res.some((section) => section.id === commandAndSection.section.id), + res?.some((section) => section.id === commandAndSection.section.id), ) ) { const sectionsToAdd = commandAndSectionsArray .map((commandAndSection) => commandAndSection.section) - .filter((section) => res.some((existingSections) => section.id === existingSections.id)); - res = [...res, ...sectionsToAdd]; + .filter((section) => res?.some((existingSections) => section.id === existingSections.id)); + res.push(...sectionsToAdd); } return res; }); diff --git a/src/renderer/managers/themes.ts b/src/renderer/managers/themes.ts index 19ba23a04..eea566689 100644 --- a/src/renderer/managers/themes.ts +++ b/src/renderer/managers/themes.ts @@ -82,7 +82,7 @@ export function loadSplash(id: string): void { */ export function loadAll(): void { for (const id of themes.keys()) { - if (!disabled.includes(id) && themes.get(id)?.manifest?.main) { + if (!disabled.includes(id) && themes.get(id)?.manifest.main) { load(id); } } @@ -93,7 +93,7 @@ export function loadAll(): void { */ export function loadAllSplash(): void { for (const id of themes.keys()) { - if (!disabled.includes(id) && themes.get(id)?.manifest?.splash) { + if (!disabled.includes(id) && themes.get(id)?.manifest.splash) { loadSplash(id); } } diff --git a/src/renderer/modules/components/ButtonItem.tsx b/src/renderer/modules/components/ButtonItem.tsx index d4720a3c5..6132201fc 100644 --- a/src/renderer/modules/components/ButtonItem.tsx +++ b/src/renderer/modules/components/ButtonItem.tsx @@ -98,10 +98,9 @@ export const Button = await waitForModule(filters.bySource(".BorderColors=")).th (mod) => getFunctionBySource(mod, "wrapperClassName")!, ); -const classes = - await waitForProps>( - "dividerDefault", - ); +const classes = await waitForProps< + Record<"dividerDefault" | "labelRow" | "note" | "title", string> +>("dividerDefault"); interface ButtonItemProps { onClick?: React.MouseEventHandler; diff --git a/src/renderer/modules/components/Category.tsx b/src/renderer/modules/components/Category.tsx index 2f92ef3d8..b94d82341 100644 --- a/src/renderer/modules/components/Category.tsx +++ b/src/renderer/modules/components/Category.tsx @@ -2,10 +2,9 @@ import React from "@common/react"; import { Divider, FormText } from "."; import { waitForProps } from "../webpack"; -const classes = - await waitForProps>( - "dividerDefault", - ); +const classes = await waitForProps< + Record<"labelRow" | "title" | "note" | "dividerDefault", string> +>("dividerDefault"); interface CategoryProps { title: string; diff --git a/src/types/coremods/commands.ts b/src/types/coremods/commands.ts index 9c8445925..e8db2e1c8 100644 --- a/src/types/coremods/commands.ts +++ b/src/types/coremods/commands.ts @@ -1,14 +1,14 @@ import type { Channel, Guild } from "discord-types/general"; import type { ValueOf } from "type-fest"; import { CommandInteraction } from "../../renderer/apis/commands"; -import type { - APIEmbed, - CommandChoices, - CommandOptionReturn, - CommandOptions, - StringOptions, +import { + type APIEmbed, + ApplicationCommandOptionType, + type CommandChoices, + type CommandOptionReturn, + type CommandOptions, + type StringOptions, } from "../discord"; -import { ApplicationCommandOptionType } from "../discord"; interface OptionTypeMapping { [ApplicationCommandOptionType.String]: string; @@ -28,7 +28,7 @@ type GetConditionallyOptional = Require type GetType = GetConditionallyOptional< T extends StringOptions - ? T["choices"] extends CommandChoices + ? T["choices"] extends readonly CommandChoices[] ? T["choices"][number]["value"] : OptionTypeMapping[T["type"]] : OptionTypeMapping[T["type"]], diff --git a/src/types/discord.ts b/src/types/discord.ts index 0fe4ae8e0..85647a453 100644 --- a/src/types/discord.ts +++ b/src/types/discord.ts @@ -1,3 +1,5 @@ +import { Message } from "@common/i18n"; + export enum ApplicationCommandOptionType { String = 3, Integer = 4, @@ -21,14 +23,14 @@ interface BaseCommandOptions { } export interface CommandChoices { - name: string; - displayName: string; + name: string | Message; + displayName: string | Message; value: string | number; } export interface CommandOptionAutocompleteAndChoices { autocomplete?: boolean; - choices?: CommandChoices[]; + choices?: readonly CommandChoices[]; focused?: boolean; } From d7a0b7e96e6ed857795804de85ccc2168ca96968 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 11 Oct 2023 20:18:44 -0500 Subject: [PATCH 19/36] Lint again --- src/renderer/coremods/commands/index.ts | 32 ++++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/renderer/coremods/commands/index.ts b/src/renderer/coremods/commands/index.ts index cbdc1b0c6..465558b5e 100644 --- a/src/renderer/coremods/commands/index.ts +++ b/src/renderer/coremods/commands/index.ts @@ -16,23 +16,27 @@ const logger = Logger.api("Commands"); const injector = new Injector(); interface ApplicationCommandSearchStoreMod { - [key: string]: (...args: unknown[]) => { - sectionDescriptors: RepluggedCommandSection[]; - commands: AnyRepluggedCommand[]; - filteredSectionId: string | null; - activeSections: RepluggedCommandSection[]; - commandsByActiveSection: Array<{ - section: RepluggedCommandSection; - data: AnyRepluggedCommand[]; - }>; - } | undefined; + [key: string]: (...args: unknown[]) => + | { + sectionDescriptors: RepluggedCommandSection[]; + commands: AnyRepluggedCommand[]; + filteredSectionId: string | null; + activeSections: RepluggedCommandSection[]; + commandsByActiveSection: Array<{ + section: RepluggedCommandSection; + data: AnyRepluggedCommand[]; + }>; + } + | undefined; } interface ApplicationCommandSearchStore { - getChannelState: (...args: unknown[]) => { - applicationSections: RepluggedCommandSection[]; - applicationCommands: AnyRepluggedCommand[]; - } | undefined; + getChannelState: (...args: unknown[]) => + | { + applicationSections: RepluggedCommandSection[]; + applicationCommands: AnyRepluggedCommand[]; + } + | undefined; getApplicationSections: (...args: unknown[]) => RepluggedCommandSection[] | undefined; useSearchManager: (...args: unknown[]) => unknown; getQueryCommands: (...args: [string, string, string]) => AnyRepluggedCommand[] | undefined; From ad01748c404cd9fe7e7b56f087ca7cfe0480b5a3 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 11 Oct 2023 20:20:05 -0500 Subject: [PATCH 20/36] Bad merge husk --- package.json | 5 +- pnpm-lock.yaml | 1525 +---------------- src/renderer/coremods/commands/index.ts | 4 +- .../modules/components/ButtonItem.tsx | 7 +- src/renderer/modules/components/Category.tsx | 7 +- 5 files changed, 77 insertions(+), 1471 deletions(-) diff --git a/package.json b/package.json index 57c96564d..eae391f37 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "eslint-plugin-react": "^7.33.2", "moment": "^2.29.4", "np": "^8.0.4", - "parcel": "^2.9.3", + "prettier": "^3.0.3", "simple-markdown": "^0.7.3", "style-mod": "^4.1.0", "tsx": "^3.12.8", @@ -81,9 +81,6 @@ "@electron/asar": "^3.2.4", "@lezer/highlight": "^1.1.6", "@octokit/rest": "^20.0.1", - "@parcel/config-default": "^2.9.3", - "@parcel/core": "^2.9.3", - "@parcel/transformer-sass": "^2.9.3", "adm-zip": "^0.5.10", "chalk": "^5.3.0", "codemirror": "^6.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 800339827..c1e2e7fcc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,15 +29,6 @@ dependencies: '@octokit/rest': specifier: ^20.0.1 version: 20.0.1 - '@parcel/config-default': - specifier: ^2.9.3 - version: 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2) - '@parcel/core': - specifier: ^2.9.3 - version: 2.9.3 - '@parcel/transformer-sass': - specifier: ^2.9.3 - version: 2.9.3(@parcel/core@2.9.3) adm-zip: specifier: ^0.5.10 version: 0.5.10 @@ -151,9 +142,9 @@ devDependencies: np: specifier: ^8.0.4 version: 8.0.4(typescript@5.2.2) - parcel: - specifier: ^2.9.3 - version: 2.9.3(typescript@5.2.2) + prettier: + specifier: ^3.0.3 + version: 3.0.3 simple-markdown: specifier: ^0.7.3 version: 0.7.3 @@ -186,10 +177,12 @@ packages: dependencies: '@babel/highlight': 7.22.13 chalk: 2.4.2 + dev: true /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} @@ -198,6 +191,7 @@ packages: '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true /@bconnorwhite/module@2.0.2: resolution: {integrity: sha512-ck1me5WMgZKp06gnJrVKEkytpehTTQbvsAMbF1nGPeHri/AZNhj87++PSE2LOxmZqM0EtGMaqeLdx7Lw7SUnTA==} @@ -1063,9 +1057,6 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@lezer/common@0.15.12: - resolution: {integrity: sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==} - /@lezer/common@1.0.4: resolution: {integrity: sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg==} dev: false @@ -1083,11 +1074,6 @@ packages: '@lezer/common': 1.0.4 dev: false - /@lezer/lr@0.15.8: - resolution: {integrity: sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==} - dependencies: - '@lezer/common': 0.15.12 - /@lezer/lr@1.3.10: resolution: {integrity: sha512-BZfVvf7Re5BIwJHlZXbJn9L8lus5EonxQghyn+ih8Wl36XMFBPTXC0KM0IdUtj9w/diPHsKlXVgL+AlX2jYJ0Q==} dependencies: @@ -1099,98 +1085,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /@lmdb/lmdb-darwin-arm64@2.7.11: - resolution: {integrity: sha512-r6+vYq2vKzE+vgj/rNVRMwAevq0+ZR9IeMFIqcSga+wMtMdXQ27KqQ7uS99/yXASg29bos7yHP3yk4x6Iio0lw==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /@lmdb/lmdb-darwin-x64@2.7.11: - resolution: {integrity: sha512-jhj1aB4K8ycRL1HOQT5OtzlqOq70jxUQEWRN9Gqh3TIDN30dxXtiHi6EWF516tzw6v2+3QqhDMJh8O6DtTGG8Q==} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /@lmdb/lmdb-linux-arm64@2.7.11: - resolution: {integrity: sha512-7xGEfPPbmVJWcY2Nzqo11B9Nfxs+BAsiiaY/OcT4aaTDdykKeCjvKMQJA3KXCtZ1AtiC9ljyGLi+BfUwdulY5A==} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@lmdb/lmdb-linux-arm@2.7.11: - resolution: {integrity: sha512-dHfLFVSrw/v5X5lkwp0Vl7+NFpEeEYKfMG2DpdFJnnG1RgHQZngZxCaBagFoaJGykRpd2DYF1AeuXBFrAUAXfw==} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /@lmdb/lmdb-linux-x64@2.7.11: - resolution: {integrity: sha512-vUKI3JrREMQsXX8q0Eq5zX2FlYCKWMmLiCyyJNfZK0Uyf14RBg9VtB3ObQ41b4swYh2EWaltasWVe93Y8+KDng==} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@lmdb/lmdb-win32-x64@2.7.11: - resolution: {integrity: sha512-BJwkHlSUgtB+Ei52Ai32M1AOMerSlzyIGA/KC4dAGL+GGwVMdwG8HGCOA2TxP3KjhbgDPMYkv7bt/NmOmRIFng==} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /@mischnic/json-sourcemap@0.1.0: - resolution: {integrity: sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==} - engines: {node: '>=12.0.0'} - dependencies: - '@lezer/common': 0.15.12 - '@lezer/lr': 0.15.8 - json5: 2.2.3 - - /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2: - resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2: - resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2: - resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2: - resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2: - resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2: - resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1317,764 +1211,6 @@ packages: '@octokit/openapi-types': 18.0.0 dev: false - /@parcel/bundler-default@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-JjJK8dq39/UO/MWI/4SCbB1t/qgpQRFnFDetAAAezQ8oN++b24u1fkMDa/xqQGjbuPmGeTds5zxGgYs7id7PYg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/graph': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/cache@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-Bj/H2uAJJSXtysG7E/x4EgTrE2hXmm7td/bc97K8M9N7+vQjxf7xb0ebgqe84ePVMkj4MVQSMEJkEucXVx4b0Q==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.9.3 - dependencies: - '@parcel/core': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/logger': 2.9.3 - '@parcel/utils': 2.9.3 - lmdb: 2.7.11 - - /@parcel/codeframe@2.9.3: - resolution: {integrity: sha512-z7yTyD6h3dvduaFoHpNqur74/2yDWL++33rjQjIjCaXREBN6dKHoMGMizzo/i4vbiI1p9dDox2FIDEHCMQxqdA==} - engines: {node: '>= 12.0.0'} - dependencies: - chalk: 4.1.2 - - /@parcel/compressor-raw@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-jz3t4/ICMsHEqgiTmv5i1DJva2k5QRpZlBELVxfY+QElJTVe8edKJ0TiKcBxh2hx7sm4aUigGmp7JiqqHRRYmA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/config-default@2.9.3(@parcel/core@2.9.3)(typescript@5.2.2): - resolution: {integrity: sha512-tqN5tF7QnVABDZAu76co5E6N8mA9n8bxiWdK4xYyINYFIEHgX172oRTqXTnhEMjlMrdmASxvnGlbaPBaVnrCTw==} - peerDependencies: - '@parcel/core': ^2.9.3 - dependencies: - '@parcel/bundler-default': 2.9.3(@parcel/core@2.9.3) - '@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3) - '@parcel/core': 2.9.3 - '@parcel/namer-default': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-css': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-htmlnano': 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2) - '@parcel/optimizer-image': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-svgo': 2.9.3(@parcel/core@2.9.3) - '@parcel/optimizer-swc': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-css': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-html': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-js': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-raw': 2.9.3(@parcel/core@2.9.3) - '@parcel/packager-svg': 2.9.3(@parcel/core@2.9.3) - '@parcel/reporter-dev-server': 2.9.3(@parcel/core@2.9.3) - '@parcel/resolver-default': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-browser-hmr': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-js': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-react-refresh': 2.9.3(@parcel/core@2.9.3) - '@parcel/runtime-service-worker': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-babel': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-css': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-html': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-image': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-js': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-json': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-postcss': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-posthtml': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-raw': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-react-refresh-wrap': 2.9.3(@parcel/core@2.9.3) - '@parcel/transformer-svg': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - /@parcel/core@2.9.3: - resolution: {integrity: sha512-4KlM1Zr/jpsqWuMXr2zmGsaOUs1zMMFh9vfCNKRZkptf+uk8I3sugHbNdo+F5B+4e2yMuOEb1zgAmvJLeuH6ww==} - engines: {node: '>= 12.0.0'} - dependencies: - '@mischnic/json-sourcemap': 0.1.0 - '@parcel/cache': 2.9.3(@parcel/core@2.9.3) - '@parcel/diagnostic': 2.9.3 - '@parcel/events': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/graph': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/logger': 2.9.3 - '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/profiler': 2.9.3 - '@parcel/source-map': 2.1.1 - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - abortcontroller-polyfill: 1.7.5 - base-x: 3.0.9 - browserslist: 4.21.10 - clone: 2.1.2 - dotenv: 7.0.0 - dotenv-expand: 5.1.0 - json5: 2.2.3 - msgpackr: 1.9.8 - nullthrows: 1.1.1 - semver: 7.5.4 - - /@parcel/diagnostic@2.9.3: - resolution: {integrity: sha512-6jxBdyB3D7gP4iE66ghUGntWt2v64E6EbD4AetZk+hNJpgudOOPsKTovcMi/i7I4V0qD7WXSF4tvkZUoac0jwA==} - engines: {node: '>= 12.0.0'} - dependencies: - '@mischnic/json-sourcemap': 0.1.0 - nullthrows: 1.1.1 - - /@parcel/events@2.9.3: - resolution: {integrity: sha512-K0Scx+Bx9f9p1vuShMzNwIgiaZUkxEnexaKYHYemJrM7pMAqxIuIqhnvwurRCsZOVLUJPDDNJ626cWTc5vIq+A==} - engines: {node: '>= 12.0.0'} - - /@parcel/fs-search@2.9.3: - resolution: {integrity: sha512-nsNz3bsOpwS+jphcd+XjZL3F3PDq9lik0O8HPm5f6LYkqKWT+u/kgQzA8OkAHCR3q96LGiHxUywHPEBc27vI4Q==} - engines: {node: '>= 12.0.0'} - - /@parcel/fs@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-/PrRKgCRw22G7rNPSpgN3Q+i2nIkZWuvIOAdMG4KWXC4XLp8C9jarNaWd5QEQ75amjhQSl3oUzABzkdCtkKrgg==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.9.3 - dependencies: - '@parcel/core': 2.9.3 - '@parcel/fs-search': 2.9.3 - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/watcher': 2.3.0 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - - /@parcel/graph@2.9.3: - resolution: {integrity: sha512-3LmRJmF8+OprAr6zJT3X2s8WAhLKkrhi6RsFlMWHifGU5ED1PFcJWFbOwJvSjcAhMQJP0fErcFIK1Ludv3Vm3g==} - engines: {node: '>= 12.0.0'} - dependencies: - nullthrows: 1.1.1 - - /@parcel/hash@2.9.3: - resolution: {integrity: sha512-qlH5B85XLzVAeijgKPjm1gQu35LoRYX/8igsjnN8vOlbc3O8BYAUIutU58fbHbtE8MJPbxQQUw7tkTjeoujcQQ==} - engines: {node: '>= 12.0.0'} - dependencies: - xxhash-wasm: 0.4.2 - - /@parcel/logger@2.9.3: - resolution: {integrity: sha512-5FNBszcV6ilGFcijEOvoNVG6IUJGsnMiaEnGQs7Fvc1dktTjEddnoQbIYhcSZL63wEmzBZOgkT5yDMajJ/41jw==} - engines: {node: '>= 12.0.0'} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/events': 2.9.3 - - /@parcel/markdown-ansi@2.9.3: - resolution: {integrity: sha512-/Q4X8F2aN8UNjAJrQ5NfK2OmZf6shry9DqetUSEndQ0fHonk78WKt6LT0zSKEBEW/bB/bXk6mNMsCup6L8ibjQ==} - engines: {node: '>= 12.0.0'} - dependencies: - chalk: 4.1.2 - - /@parcel/namer-default@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-1ynFEcap48/Ngzwwn318eLYpLUwijuuZoXQPCsEQ21OOIOtfhFQJaPwXTsw6kRitshKq76P2aafE0BioGSqxcA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/node-resolver-core@3.0.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-AjxNcZVHHJoNT/A99PKIdFtwvoze8PAiC3yz8E/dRggrDIOboUEodeQYV5Aq++aK76uz/iOP0tST2T8A5rhb1A==} - engines: {node: '>= 12.0.0'} - dependencies: - '@mischnic/json-sourcemap': 0.1.0 - '@parcel/diagnostic': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - semver: 7.5.4 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/optimizer-css@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-RK1QwcSdWDNUsFvuLy0hgnYKtPQebzCb0vPPzqs6LhL+vqUu9utOyRycGaQffHCkHVQP6zGlN+KFssd7YtFGhA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - browserslist: 4.21.10 - lightningcss: 1.21.7 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/optimizer-htmlnano@2.9.3(@parcel/core@2.9.3)(typescript@5.2.2): - resolution: {integrity: sha512-9g/KBck3c6DokmJfvJ5zpHFBiCSolaGrcsTGx8C3YPdCTVTI9P1TDCwUxvAr4LjpcIRSa82wlLCI+nF6sSgxKA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - htmlnano: 2.0.4(svgo@2.8.0)(typescript@5.2.2) - nullthrows: 1.1.1 - posthtml: 0.16.6 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - /@parcel/optimizer-image@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-530YzthE7kmecnNhPbkAK+26yQNt69pfJrgE0Ev0BZaM1Wu2+33nki7o8qvkTkikhPrurEJLGIXt1qKmbKvCbA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - peerDependencies: - '@parcel/core': ^2.9.3 - dependencies: - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - - /@parcel/optimizer-svgo@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-ytQS0wY5JJhWU4mL0wfhYDUuHcfuw+Gy2+JcnTm1t1AZXHlOTbU6EzRWNqBShsgXjvdrQQXizAe3B6GFFlFJVQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/optimizer-swc@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-GQINNeqtdpL1ombq/Cpwi6IBk02wKJ/JJbYbyfHtk8lxlq13soenpwOlzJ5T9D2fdG+FUhai9NxpN5Ss4lNoAg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - '@swc/core': 1.3.83 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - /@parcel/package-manager@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-NH6omcNTEupDmW4Lm1e4NUYBjdqkURxgZ4CNESESInHJe6tblVhNB8Rpr1ar7zDar7cly9ILr8P6N3Ei7bTEjg==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.9.3 - dependencies: - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/logger': 2.9.3 - '@parcel/node-resolver-core': 3.0.3(@parcel/core@2.9.3) - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - semver: 7.5.4 - - /@parcel/packager-css@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-mePiWiYZOULY6e1RdAIJyRoYqXqGci0srOaVZYaP7mnrzvJgA63kaZFFsDiEWghunQpMUuUjM2x/vQVHzxmhKQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/packager-html@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-0Ex+O0EaZf9APNERRNGgGto02hFJ6f5RQEvRWBK55WAV1rXeU+kpjC0c0qZvnUaUtXfpWMsEBkevJCwDkUMeMg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - posthtml: 0.16.6 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/packager-js@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-V5xwkoE3zQ3R+WqAWhA1KGQ791FvJeW6KonOlMI1q76Djjgox68hhObqcLu66AmYNhR2R/wUpkP18hP2z8dSFw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - globals: 13.21.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/packager-raw@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-oPQTNoYanQ2DdJyL61uPYK2py83rKOT8YVh2QWAx0zsSli6Kiy64U3+xOCYWgDVCrHw9+9NpQMuAdSiFg4cq8g==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/packager-svg@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-p/Ya6UO9DAkaCUFxfFGyeHZDp9YPAlpdnh1OChuwqSFOXFjjeXuoK4KLT+ZRalVBo2Jo8xF70oKMZw4MVvaL7Q==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - posthtml: 0.16.6 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/plugin@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-qN85Gqr2GMuxX1dT1mnuO9hOcvlEv1lrYrCxn7CJN2nUhbwcfG+LEvcrCzCOJ6XtIHm+ZBV9h9p7FfoPLvpw+g==} - engines: {node: '>= 12.0.0'} - dependencies: - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/profiler@2.9.3: - resolution: {integrity: sha512-pyHc9lw8VZDfgZoeZWZU9J0CVEv1Zw9O5+e0DJPDPHuXJYr72ZAOhbljtU3owWKAeW+++Q2AZWkbUGEOjI/e6g==} - engines: {node: '>= 12.0.0'} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/events': 2.9.3 - chrome-trace-event: 1.0.3 - - /@parcel/reporter-cli@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-pZiEvQpuXFuQBafMHxkDmwH8CnnK9sWHwa3bSbsnt385aUahtE8dpY0LKt+K1zfB6degKoczN6aWVj9WycQuZQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - chalk: 4.1.2 - term-size: 2.2.1 - transitivePeerDependencies: - - '@parcel/core' - dev: true - - /@parcel/reporter-dev-server@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-s6eboxdLEtRSvG52xi9IiNbcPKC0XMVmvTckieue2EqGDbDcaHQoHmmwkk0rNq0/Z/UxelGcQXoIYC/0xq3ykQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/reporter-tracer@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-9cXpKWk0m6d6d+4+TlAdOe8XIPaFEIKGWMWG+5SFAQE08u3olet4PSvd49F4+ZZo5ftRE7YI3j6xNbXvJT8KGw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - chrome-trace-event: 1.0.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - dev: true - - /@parcel/resolver-default@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-8ESJk1COKvDzkmOnppNXoDamNMlYVIvrKc2RuFPmp8nKVj47R6NwMgvwxEaatyPzvkmyTpq5RvG9I3HFc+r4Cw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/node-resolver-core': 3.0.3(@parcel/core@2.9.3) - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/runtime-browser-hmr@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-EgiDIDrVAWpz7bOzWXqVinQkaFjLwT34wsonpXAbuI7f7r00d52vNAQC9AMu+pTijA3gyKoJ+Q4NWPMZf7ACDA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/runtime-js@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-EvIy+qXcKnB5qxHhe96zmJpSAViNVXHfQI5RSdZ2a7CPwORwhTI+zPNT9sb7xb/WwFw/WuTTgzT40b41DceU6Q==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/runtime-react-refresh@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-XBgryZQIyCmi6JwEfMUCmINB3l1TpTp9a2iFxmYNpzHlqj4Ve0saKaqWOVRLvC945ZovWIBzcSW2IYqWKGtbAA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - react-error-overlay: 6.0.9 - react-refresh: 0.9.0 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/runtime-service-worker@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-qLJLqv1mMdWL7gyh8aKBFFAuEiJkhUUgLKpdn6eSfH/R7kTtb76WnOwqUrhvEI9bZFUM/8Pa1bzJnPpqSOM+Sw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/source-map@2.1.1: - resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} - engines: {node: ^12.18.3 || >=14} - dependencies: - detect-libc: 1.0.3 - - /@parcel/transformer-babel@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-pURtEsnsp3h6tOBDuzh9wRvVtw4PgIlqwAArIWdrG7iwqOUYv9D8ME4+ePWEu7MQWAp58hv9pTJtqWv4T+Sq8A==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - browserslist: 4.21.10 - json5: 2.2.3 - nullthrows: 1.1.1 - semver: 7.5.4 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/transformer-css@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-duWMdbEBBPjg3fQdXF16iWIdThetDZvCs2TpUD7xOlXH6kR0V5BJy8ONFT15u1RCqIV9hSNGaS3v3I9YRNY5zQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - browserslist: 4.21.10 - lightningcss: 1.21.7 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/transformer-html@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-0NU4omcHzFXA1seqftAXA2KNZaMByoKaNdXnLgBgtCGDiYvOcL+6xGHgY6pw9LvOh5um10KI5TxSIMILoI7VtA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.5.4 - srcset: 4.0.0 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/transformer-image@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-7CEe35RaPadQzLIuxzTtIxnItvOoy46hcbXtOdDt6lmVa4omuOygZYRIya2lsGIP4JHvAaALMb5nt99a1uTwJg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - peerDependencies: - '@parcel/core': ^2.9.3 - dependencies: - '@parcel/core': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - nullthrows: 1.1.1 - - /@parcel/transformer-js@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-Z2MVVg5FYcPOfxlUwxqb5l9yjTMEqE3KI3zq2MBRUme6AV07KxLmCDF23b6glzZlHWQUE8MXzYCTAkOPCcPz+Q==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - peerDependencies: - '@parcel/core': ^2.9.3 - dependencies: - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.9.3 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - '@swc/helpers': 0.5.2 - browserslist: 4.21.10 - nullthrows: 1.1.1 - regenerator-runtime: 0.13.11 - semver: 7.5.4 - - /@parcel/transformer-json@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-yNL27dbOLhkkrjaQjiQ7Im9VOxmkfuuSNSmS0rA3gEjVcm07SLKRzWkAaPnyx44Lb6bzyOTWwVrb9aMmxgADpA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - json5: 2.2.3 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/transformer-postcss@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-HoDvPqKzhpmvMmHqQhDnt8F1vH61m6plpGiYaYnYv2Om4HHi5ZIq9bO+9QLBnTKfaZ7ndYSefTKOxTYElg7wyw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - clone: 2.1.2 - nullthrows: 1.1.1 - postcss-value-parser: 4.2.0 - semver: 7.5.4 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/transformer-posthtml@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-2fQGgrzRmaqbWf3y2/T6xhqrNjzqMMKksqJzvc8TMfK6f2kg3Ddjv158eaSW2JdkV39aY7tvAOn5f1uzo74BMA==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.5.4 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/transformer-raw@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-oqdPzMC9QzWRbY9J6TZEqltknjno+dY24QWqf8ondmdF2+W+/2mRDu59hhCzQrqUHgTq4FewowRZmSfpzHxwaQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/transformer-react-refresh-wrap@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-cb9NyU6oJlDblFIlzqIE8AkvRQVGl2IwJNKwD4PdE7Y6sq2okGEPG4hOw3k/Y9JVjM4/2pUORqvjSRhWwd9oVQ==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - react-refresh: 0.9.0 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/transformer-sass@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-i9abj9bKg3xCHghJyTM3rUVxIEn9n1Rl+DFdpyNAD8VZ52COfOshFDQOWNuhU1hEnJOFYCjnfcO0HRTsg3dWmg==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - sass: 1.66.1 - transitivePeerDependencies: - - '@parcel/core' - dev: false - - /@parcel/transformer-svg@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-ypmE+dzB09IMCdEAkOsSxq1dEIm2A3h67nAFz4qbfHbwNgXBUuy/jB3ZMwXN/cO0f7SBh/Ap8Jhq6vmGqB5tWw==} - engines: {node: '>= 12.0.0', parcel: ^2.9.3} - dependencies: - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 - posthtml-parser: 0.10.2 - posthtml-render: 3.0.0 - semver: 7.5.4 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/types@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-NSNY8sYtRhvF1SqhnIGgGvJocyWt1K8Tnw5cVepm0g38ywtX6mwkBvMkmeehXkII4mSUn+frD9wGsydTunezvA==} - dependencies: - '@parcel/cache': 2.9.3(@parcel/core@2.9.3) - '@parcel/diagnostic': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) - '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - utility-types: 3.10.0 - transitivePeerDependencies: - - '@parcel/core' - - /@parcel/utils@2.9.3: - resolution: {integrity: sha512-cesanjtj/oLehW8Waq9JFPmAImhoiHX03ihc3JTWkrvJYSbD7wYKCDgPAM3JiRAqvh1LZ6P699uITrYWNoRLUg==} - engines: {node: '>= 12.0.0'} - dependencies: - '@parcel/codeframe': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/hash': 2.9.3 - '@parcel/logger': 2.9.3 - '@parcel/markdown-ansi': 2.9.3 - '@parcel/source-map': 2.1.1 - chalk: 4.1.2 - nullthrows: 1.1.1 - - /@parcel/watcher-android-arm64@2.3.0: - resolution: {integrity: sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - - /@parcel/watcher-darwin-arm64@2.3.0: - resolution: {integrity: sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /@parcel/watcher-darwin-x64@2.3.0: - resolution: {integrity: sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /@parcel/watcher-freebsd-x64@2.3.0: - resolution: {integrity: sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true - - /@parcel/watcher-linux-arm-glibc@2.3.0: - resolution: {integrity: sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /@parcel/watcher-linux-arm64-glibc@2.3.0: - resolution: {integrity: sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@parcel/watcher-linux-arm64-musl@2.3.0: - resolution: {integrity: sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@parcel/watcher-linux-x64-glibc@2.3.0: - resolution: {integrity: sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@parcel/watcher-linux-x64-musl@2.3.0: - resolution: {integrity: sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@parcel/watcher-win32-arm64@2.3.0: - resolution: {integrity: sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - - /@parcel/watcher-win32-ia32@2.3.0: - resolution: {integrity: sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - - /@parcel/watcher-win32-x64@2.3.0: - resolution: {integrity: sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /@parcel/watcher@2.3.0: - resolution: {integrity: sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==} - engines: {node: '>= 10.0.0'} - requiresBuild: true - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.5 - node-addon-api: 7.0.0 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.3.0 - '@parcel/watcher-darwin-arm64': 2.3.0 - '@parcel/watcher-darwin-x64': 2.3.0 - '@parcel/watcher-freebsd-x64': 2.3.0 - '@parcel/watcher-linux-arm-glibc': 2.3.0 - '@parcel/watcher-linux-arm64-glibc': 2.3.0 - '@parcel/watcher-linux-arm64-musl': 2.3.0 - '@parcel/watcher-linux-x64-glibc': 2.3.0 - '@parcel/watcher-linux-x64-musl': 2.3.0 - '@parcel/watcher-win32-arm64': 2.3.0 - '@parcel/watcher-win32-ia32': 2.3.0 - '@parcel/watcher-win32-x64': 2.3.0 - - /@parcel/workers@2.9.3(@parcel/core@2.9.3): - resolution: {integrity: sha512-zRrDuZJzTevrrwElYosFztgldhqW6G9q5zOeQXfVQFkkEJCNfg36ixeiofKRU8uu2x+j+T6216mhMNB6HiuY+w==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@parcel/core': ^2.9.3 - dependencies: - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/logger': 2.9.3 - '@parcel/profiler': 2.9.3 - '@parcel/types': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - nullthrows: 1.1.1 - /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -2091,145 +1227,34 @@ packages: dependencies: '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 - config-chain: 1.1.13 - - /@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7): - resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==} - engines: {node: '>=6'} - peerDependencies: - rxjs: '*' - zen-observable: '*' - peerDependenciesMeta: - rxjs: - optional: true - zen-observable: - optional: true - dependencies: - any-observable: 0.3.0(rxjs@6.6.7) - rxjs: 6.6.7 - transitivePeerDependencies: - - zenObservable - dev: true - - /@sindresorhus/is@4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - dev: true - - /@sindresorhus/is@5.6.0: - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - - /@swc/core-darwin-arm64@1.3.83: - resolution: {integrity: sha512-Plz2IKeveVLivbXTSCC3OZjD2MojyKYllhPrn9RotkDIZEFRYJZtW5/Ik1tJW/2rzu5HVKuGYrDKdScVVTbOxQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /@swc/core-darwin-x64@1.3.83: - resolution: {integrity: sha512-FBGVg5IPF/8jQ6FbK60iDUHjv0H5+LwfpJHKH6wZnRaYWFtm7+pzYgreLu3NTsm3m7/1a7t0+7KURwBGUaJCCw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /@swc/core-linux-arm-gnueabihf@1.3.83: - resolution: {integrity: sha512-EZcsuRYhGkzofXtzwDjuuBC/suiX9s7zeg2YYXOVjWwyebb6BUhB1yad3mcykFQ20rTLO9JUyIaiaMYDHGobqw==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-linux-arm64-gnu@1.3.83: - resolution: {integrity: sha512-khI41szLHrCD/cFOcN4p2SYvZgHjhhHlcMHz5BksRrDyteSJKu0qtWRZITVom0N/9jWoAleoFhMnFTUs0H8IWA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-linux-arm64-musl@1.3.83: - resolution: {integrity: sha512-zgT7yNOdbjHcGAwvys79mbfNLK65KBlPJWzeig+Yk7I8TVzmaQge7B6ZS/gwF9/p+8TiLYo/tZ5aF2lqlgdSVw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-linux-x64-gnu@1.3.83: - resolution: {integrity: sha512-x+mH0Y3NC/G0YNlFmGi3vGD4VOm7IPDhh+tGrx6WtJp0BsShAbOpxtfU885rp1QweZe4qYoEmGqiEjE2WrPIdA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-linux-x64-musl@1.3.83: - resolution: {integrity: sha512-s5AYhAOmetUwUZwS5g9qb92IYgNHHBGiY2mTLImtEgpAeBwe0LPDj6WrujxCBuZnaS55mKRLLOuiMZE5TpjBNA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-win32-arm64-msvc@1.3.83: - resolution: {integrity: sha512-yw2rd/KVOGs95lRRB+killLWNaO1dy4uVa8Q3/4wb5txlLru07W1m041fZLzwOg/1Sh0TMjJgGxj0XHGR3ZXhQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - - /@swc/core-win32-ia32-msvc@1.3.83: - resolution: {integrity: sha512-POW+rgZ6KWqBpwPGIRd2/3pcf46P+UrKBm4HLt5IwbHvekJ4avIM8ixJa9kK0muJNVJcDpaZgxaU1ELxtJ1j8w==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - - /@swc/core-win32-x64-msvc@1.3.83: - resolution: {integrity: sha512-CiWQtkFnZElXQUalaHp+Wacw0Jd+24ncRYhqaJ9YKnEQP1H82CxIIuQqLM8IFaLpn5dpY6SgzaeubWF46hjcLA==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true + config-chain: 1.1.13 - /@swc/core@1.3.83: - resolution: {integrity: sha512-PccHDgGQlFjpExgJxH91qA3a4aifR+axCFJ4RieCoiI0m5gURE4nBhxzTBY5YU/YKTBmPO8Gc5Q6inE3+NquWg==} - engines: {node: '>=10'} - requiresBuild: true + /@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7): + resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==} + engines: {node: '>=6'} peerDependencies: - '@swc/helpers': ^0.5.0 + rxjs: '*' + zen-observable: '*' peerDependenciesMeta: - '@swc/helpers': + rxjs: + optional: true + zen-observable: optional: true dependencies: - '@swc/types': 0.1.4 - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.83 - '@swc/core-darwin-x64': 1.3.83 - '@swc/core-linux-arm-gnueabihf': 1.3.83 - '@swc/core-linux-arm64-gnu': 1.3.83 - '@swc/core-linux-arm64-musl': 1.3.83 - '@swc/core-linux-x64-gnu': 1.3.83 - '@swc/core-linux-x64-musl': 1.3.83 - '@swc/core-win32-arm64-msvc': 1.3.83 - '@swc/core-win32-ia32-msvc': 1.3.83 - '@swc/core-win32-x64-msvc': 1.3.83 - - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - dependencies: - tslib: 2.6.2 + any-observable: 0.3.0(rxjs@6.6.7) + rxjs: 6.6.7 + transitivePeerDependencies: + - zenObservable + dev: true + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: true - /@swc/types@0.1.4: - resolution: {integrity: sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==} + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} @@ -2244,10 +1269,6 @@ packages: dependencies: defer-to-connect: 2.0.1 - /@trysound/sax@0.2.0: - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - /@types/adm-zip@0.5.0: resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} dependencies: @@ -2512,9 +1533,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /abortcontroller-polyfill@1.7.5: - resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} - /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2623,6 +1641,7 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -2659,6 +1678,7 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -2744,11 +1764,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - dependencies: - safe-buffer: 5.2.1 - /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: true @@ -2775,9 +1790,6 @@ packages: readable-stream: 3.6.2 dev: true - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - /boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} @@ -2816,16 +1828,6 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001528 - electron-to-chromium: 1.4.511 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) - /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -2892,6 +1894,7 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + dev: true /callsites@4.1.0: resolution: {integrity: sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==} @@ -2902,9 +1905,6 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} - /caniuse-lite@1.0.30001528: - resolution: {integrity: sha512-0Db4yyjR9QMNlsxh+kKWzQtkyflkG/snYheSzkjmvdEtEXB1+jt7A2HmSEiO6XIJPIbo92lHNGNySvE5pZcs5Q==} - /chalk-template@1.1.0: resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} engines: {node: '>=14.16'} @@ -2930,6 +1930,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2937,6 +1938,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} @@ -2961,10 +1963,6 @@ packages: fsevents: 2.3.3 dev: false - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - /chromium-pickle-js@0.2.0: resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} dev: false @@ -3053,10 +2051,6 @@ packages: engines: {node: '>=0.8'} dev: true - /clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - /code-point-at@1.1.0: resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} engines: {node: '>=0.10.0'} @@ -3080,6 +2074,7 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -3089,6 +2084,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -3115,10 +2111,6 @@ packages: engines: {node: '>= 6'} dev: true - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - /comment-json@4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} @@ -3177,6 +2169,7 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.2.2 + dev: true /crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} @@ -3309,32 +2302,6 @@ packages: - encoding dev: true - /css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - /csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - dependencies: - css-tree: 1.1.3 - /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true @@ -3433,11 +2400,6 @@ packages: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} dev: false - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -3466,29 +2428,6 @@ packages: esutils: 2.0.3 dev: true - /dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - /domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - - /domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - /dot-prop@6.0.1: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} @@ -3502,19 +2441,9 @@ packages: type-fest: 2.19.0 dev: true - /dotenv-expand@5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} - - /dotenv@7.0.0: - resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} - engines: {node: '>=6'} - /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - /electron-to-chromium@1.4.511: - resolution: {integrity: sha512-udHyLfdy390CObLy3uFQitCBvK+WxWu6WZWQMBzO/npNiRy6tanDKR1c/F6OImfAiSt1ylgNszPJBxix2c0w3w==} - /elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} engines: {node: '>=0.10.0'} @@ -3532,17 +2461,11 @@ packages: once: 1.4.0 dev: true - /entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - /entities@3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true /es-abstract@1.22.1: resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} @@ -3705,6 +2628,7 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + dev: false /escape-goat@4.0.0: resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} @@ -3713,6 +2637,7 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -4123,11 +3048,6 @@ packages: has-symbols: 1.0.3 dev: true - /get-port@4.2.0: - resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} - engines: {node: '>=6'} - dev: true - /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} @@ -4196,6 +3116,7 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} @@ -4290,10 +3211,12 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-own-prop@2.0.0: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} @@ -4347,50 +3270,6 @@ packages: lru-cache: 7.18.3 dev: true - /htmlnano@2.0.4(svgo@2.8.0)(typescript@5.2.2): - resolution: {integrity: sha512-WGCkyGFwjKW1GeCBsPYacMvaMnZtFJ0zIRnC2NCddkA+IOEhTqskXrS7lep+3yYZw/nQ3dW1UAX4yA/GJyR8BA==} - peerDependencies: - cssnano: ^6.0.0 - postcss: ^8.3.11 - purgecss: ^5.0.0 - relateurl: ^0.2.7 - srcset: 4.0.0 - svgo: ^3.0.2 - terser: ^5.10.0 - uncss: ^0.17.3 - peerDependenciesMeta: - cssnano: - optional: true - postcss: - optional: true - purgecss: - optional: true - relateurl: - optional: true - srcset: - optional: true - svgo: - optional: true - terser: - optional: true - uncss: - optional: true - dependencies: - cosmiconfig: 8.3.4(typescript@5.2.2) - posthtml: 0.16.6 - svgo: 2.8.0 - timsort: 0.3.0 - transitivePeerDependencies: - - typescript - - /htmlparser2@7.2.0: - resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 3.0.1 - /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -4452,6 +3331,7 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} @@ -4586,6 +3466,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} @@ -4714,9 +3595,6 @@ packages: engines: {node: '>=12'} dev: true - /is-json@2.0.1: - resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} - /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true @@ -4914,18 +3792,21 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 + dev: true /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4935,11 +3816,6 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true @@ -4977,96 +3853,9 @@ packages: type-check: 0.4.0 dev: true - /lightningcss-darwin-arm64@1.21.7: - resolution: {integrity: sha512-tt7hIsFio9jZofTVHtCACz6rB6c9RyABMXfA9A/VcKOjS3sq+koX/QkRJWY06utwOImbJIXBC5hbg9t3RkPUAQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /lightningcss-darwin-x64@1.21.7: - resolution: {integrity: sha512-F4gS4bf7eWekfPT+TxJNm/pF+QRgZiTrTkQH6cw4/UWfdeZISfuhD5El2dm16giFnY0K5ylIwO+ZusgYNkGSXA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /lightningcss-freebsd-x64@1.21.7: - resolution: {integrity: sha512-RMfNzJWXCSfPnL55fcLWEAadcY6QUFT0S8NceNKYzp1KiCZtkJIy6RQ5SaVxPzRqd3iMsahUf5sfnG8N1UQSNQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - optional: true - - /lightningcss-linux-arm-gnueabihf@1.21.7: - resolution: {integrity: sha512-biSRUDZNx7vubWP1jArw/qqfZKPGpkV/qzunasZzxmqijbZ43sW9faDQYxWNcxPWljJJdF/qs6qcurYFovWtrQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /lightningcss-linux-arm64-gnu@1.21.7: - resolution: {integrity: sha512-PENY8QekqL9TG3AY/A7rkUBb5ymefGxea7Oe7+x7Hbw4Bz4Hpj5cec5OoMypMqFbURPmpi0fTWx4vSWUPzpDcA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /lightningcss-linux-arm64-musl@1.21.7: - resolution: {integrity: sha512-pfOipKvA/0X1OjRaZt3870vnV9UGBSjayIqHh0fGx/+aRz3O0MVFHE/60P2UWXpM3YGJEw/hMWtNkrFwqOge8A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /lightningcss-linux-x64-gnu@1.21.7: - resolution: {integrity: sha512-dgcsis4TAA7s0ia4f31QHX+G4PWPwxk+wJaEQLaV0NdJs09O5hHoA8DpLEr8nrvc/tsRTyVNBP1rDtgzySjpXg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /lightningcss-linux-x64-musl@1.21.7: - resolution: {integrity: sha512-A+9dXpxld3p4Cd6fxev2eqEvaauYtrgNpXV3t7ioCJy30Oj9nYiNGwiGusM+4MJVcEpUPGUGiuAqY4sWilRDwA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /lightningcss-win32-x64-msvc@1.21.7: - resolution: {integrity: sha512-07/8vogEq+C/mF99pdMhh/f19/xreq8N9Ca6AWeVHZIdODyF/pt6KdKSCWDZWIn+3CUxI8gCJWuUWyOc3xymvw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /lightningcss@1.21.7: - resolution: {integrity: sha512-xITZyh5sLFwRPYUSw15T00Rm7gcQ1qOPuQwNOcvHsTm6nLWTQ723w7zl42wrC5t+xtdg6FPmnXHml1nZxxvp1w==} - engines: {node: '>= 12.0.0'} - dependencies: - detect-libc: 1.0.3 - optionalDependencies: - lightningcss-darwin-arm64: 1.21.7 - lightningcss-darwin-x64: 1.21.7 - lightningcss-freebsd-x64: 1.21.7 - lightningcss-linux-arm-gnueabihf: 1.21.7 - lightningcss-linux-arm64-gnu: 1.21.7 - lightningcss-linux-arm64-musl: 1.21.7 - lightningcss-linux-x64-gnu: 1.21.7 - lightningcss-linux-x64-musl: 1.21.7 - lightningcss-win32-x64-msvc: 1.21.7 - /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true /listr-input@0.2.1: resolution: {integrity: sha512-oa8iVG870qJq+OuuMK3DjGqFcwsK1SDu+kULp9kEq09TY231aideIZenr3lFOQdASpAr6asuyJBbX62/a3IIhg==} @@ -5128,24 +3917,6 @@ packages: - zenObservable dev: true - /lmdb@2.7.11: - resolution: {integrity: sha512-x9bD4hVp7PFLUoELL8RglbNXhAMt5CYhkmss+CEau9KlNoilsTzNi9QDsPZb3KMpOGZXG6jmXhW3bBxE2XVztw==} - hasBin: true - requiresBuild: true - dependencies: - msgpackr: 1.8.5 - node-addon-api: 4.3.0 - node-gyp-build-optional-packages: 5.0.6 - ordered-binary: 1.4.1 - weak-lru-cache: 1.2.2 - optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 2.7.11 - '@lmdb/lmdb-darwin-x64': 2.7.11 - '@lmdb/lmdb-linux-arm': 2.7.11 - '@lmdb/lmdb-linux-arm64': 2.7.11 - '@lmdb/lmdb-linux-x64': 2.7.11 - '@lmdb/lmdb-win32-x64': 2.7.11 - /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -5252,9 +4023,6 @@ packages: hasBin: true dev: true - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - /meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} @@ -5275,6 +4043,7 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 + dev: true /mimic-fn@1.2.0: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} @@ -5327,31 +4096,6 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /msgpackr-extract@3.0.2: - resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==} - hasBin: true - requiresBuild: true - dependencies: - node-gyp-build-optional-packages: 5.0.7 - optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2 - optional: true - - /msgpackr@1.8.5: - resolution: {integrity: sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==} - optionalDependencies: - msgpackr-extract: 3.0.2 - - /msgpackr@1.9.8: - resolution: {integrity: sha512-dQvfSMSIQ9kXXQTlJFDq+f7J3RrmydhI6Tn23lFy7BItp7zDR3nH70CHk2QIfs2copLSaKRv/PPjMbNSTFu2hA==} - optionalDependencies: - msgpackr-extract: 3.0.2 - /mute-stream@0.0.7: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} dev: true @@ -5376,12 +4120,6 @@ packages: type-fest: 2.19.0 dev: true - /node-addon-api@4.3.0: - resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - - /node-addon-api@7.0.0: - resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} - /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -5408,19 +4146,6 @@ packages: formdata-polyfill: 4.0.10 dev: false - /node-gyp-build-optional-packages@5.0.6: - resolution: {integrity: sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==} - hasBin: true - - /node-gyp-build-optional-packages@5.0.7: - resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} - hasBin: true - requiresBuild: true - optional: true - - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} @@ -5522,14 +4247,6 @@ packages: path-key: 4.0.0 dev: true - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - - /nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - /number-is-nan@1.0.1: resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} engines: {node: '>=0.10.0'} @@ -5656,9 +4373,6 @@ packages: wcwidth: 1.0.1 dev: true - /ordered-binary@1.4.1: - resolution: {integrity: sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==} - /org-regex@1.0.0: resolution: {integrity: sha512-7bqkxkEJwzJQUAlyYniqEZ3Ilzjh0yoa62c7gL6Ijxj5bEpPL+8IE1Z0PFj0ywjjXQcdrwR51g9MIcLezR0hKQ==} engines: {node: '>=8'} @@ -5778,45 +4492,12 @@ packages: resolution: {integrity: sha512-DPBNWSUWC0wPofXeNThao0uP4a93J7r90UyhagmJS0QcacTTkorZwXYsOop70phn1hKdcf/2e9lJIhazS8bx5A==} dev: true - /parcel@2.9.3(typescript@5.2.2): - resolution: {integrity: sha512-2GTVocFkwblV/TIg9AmT7TI2fO4xdWkyN8aFUEVtiVNWt96GTR3FgQyHFValfCbcj1k9Xf962Ws2hYXYUr9k1Q==} - engines: {node: '>= 12.0.0'} - hasBin: true - peerDependenciesMeta: - '@parcel/core': - optional: true - dependencies: - '@parcel/config-default': 2.9.3(@parcel/core@2.9.3)(typescript@5.2.2) - '@parcel/core': 2.9.3 - '@parcel/diagnostic': 2.9.3 - '@parcel/events': 2.9.3 - '@parcel/fs': 2.9.3(@parcel/core@2.9.3) - '@parcel/logger': 2.9.3 - '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) - '@parcel/reporter-cli': 2.9.3(@parcel/core@2.9.3) - '@parcel/reporter-dev-server': 2.9.3(@parcel/core@2.9.3) - '@parcel/reporter-tracer': 2.9.3(@parcel/core@2.9.3) - '@parcel/utils': 2.9.3 - chalk: 4.1.2 - commander: 7.2.0 - get-port: 4.2.0 - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - dev: true - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true /parent-module@2.0.0: resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} @@ -5845,6 +4526,7 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -5876,9 +4558,7 @@ packages: /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -5898,39 +4578,17 @@ packages: find-up: 6.3.0 dev: true - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - /posthtml-parser@0.10.2: - resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} - engines: {node: '>=12'} - dependencies: - htmlparser2: 7.2.0 - - /posthtml-parser@0.11.0: - resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} - engines: {node: '>=12'} - dependencies: - htmlparser2: 7.2.0 - - /posthtml-render@3.0.0: - resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} - engines: {node: '>=12'} - dependencies: - is-json: 2.0.1 - - /posthtml@0.16.6: - resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} - engines: {node: '>=12.0.0'} - dependencies: - posthtml-parser: 0.11.0 - posthtml-render: 3.0.0 - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: true + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -5990,17 +4648,10 @@ packages: minimist: 1.2.8 strip-json-comments: 2.0.1 - /react-error-overlay@6.0.9: - resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} - /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true - /react-refresh@0.9.0: - resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} - engines: {node: '>=0.10.0'} - /read-file-safe@1.0.10: resolution: {integrity: sha512-qW25fd2uMX3dV6Ui/R0jYK1MhTpjx8FO/VHaHTXzwWsGnkNwLRcqYfCXd9qDM+NZ273DPUvP2RaimYuLSu1K/g==} dev: true @@ -6059,9 +4710,6 @@ packages: which-builtin-type: 1.1.3 dev: true - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} @@ -6118,6 +4766,7 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + dev: true /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} @@ -6243,6 +4892,7 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -6356,6 +5006,7 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -6379,14 +5030,6 @@ packages: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true - /srcset@4.0.0: - resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} - engines: {node: '>=12'} - - /stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - /standalone-electron-types@1.0.0: resolution: {integrity: sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==} dependencies: @@ -6535,12 +5178,14 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: true /supports-hyperlinks@2.3.0: resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} @@ -6554,19 +5199,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.0.0 - stable: 0.1.8 - /symbol-observable@1.2.0: resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} engines: {node: '>=0.10.0'} @@ -6577,11 +5209,6 @@ packages: engines: {node: '>=0.10'} dev: true - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true - /terminal-link@3.0.0: resolution: {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==} engines: {node: '>=12'} @@ -6598,9 +5225,6 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /timsort@0.3.0: - resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} - /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} @@ -6638,6 +5262,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true /tsx@3.12.8: resolution: {integrity: sha512-Lt9KYaRGF023tlLInPj8rgHwsZU8qWLBj4iRXNWxTfjIkU7canGL806AqKear1j722plHuiYNcL2ZCo6uS9UJA==} @@ -6660,6 +5285,7 @@ packages: /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + dev: true /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -6762,6 +5388,7 @@ packages: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true + dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -6787,16 +5414,6 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.10 - escalade: 3.1.1 - picocolors: 1.0.0 - /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} @@ -6826,10 +5443,6 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /utility-types@3.10.0: - resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} - engines: {node: '>= 4'} - /vali-date@1.0.0: resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==} engines: {node: '>=0.10.0'} @@ -6874,9 +5487,6 @@ packages: defaults: 1.0.4 dev: true - /weak-lru-cache@1.2.2: - resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} - /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} @@ -7017,9 +5627,6 @@ packages: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} - /xxhash-wasm@0.4.2: - resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==} - /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} diff --git a/src/renderer/coremods/commands/index.ts b/src/renderer/coremods/commands/index.ts index 465558b5e..8d0fa9dc4 100644 --- a/src/renderer/coremods/commands/index.ts +++ b/src/renderer/coremods/commands/index.ts @@ -223,8 +223,8 @@ async function injectApplicationCommandSearchStore(): Promise { ); if (!commandAndSectionsArray.length) return; if ( - !commandAndSectionsArray.every((commandAndSection) => - res?.some((section) => section.id === commandAndSection.section.id), + !commandAndSectionsArray.every( + (commandAndSection) => res?.some((section) => section.id === commandAndSection.section.id), ) ) { const sectionsToAdd = commandAndSectionsArray diff --git a/src/renderer/modules/components/ButtonItem.tsx b/src/renderer/modules/components/ButtonItem.tsx index 6132201fc..d4720a3c5 100644 --- a/src/renderer/modules/components/ButtonItem.tsx +++ b/src/renderer/modules/components/ButtonItem.tsx @@ -98,9 +98,10 @@ export const Button = await waitForModule(filters.bySource(".BorderColors=")).th (mod) => getFunctionBySource(mod, "wrapperClassName")!, ); -const classes = await waitForProps< - Record<"dividerDefault" | "labelRow" | "note" | "title", string> ->("dividerDefault"); +const classes = + await waitForProps>( + "dividerDefault", + ); interface ButtonItemProps { onClick?: React.MouseEventHandler; diff --git a/src/renderer/modules/components/Category.tsx b/src/renderer/modules/components/Category.tsx index b94d82341..2f92ef3d8 100644 --- a/src/renderer/modules/components/Category.tsx +++ b/src/renderer/modules/components/Category.tsx @@ -2,9 +2,10 @@ import React from "@common/react"; import { Divider, FormText } from "."; import { waitForProps } from "../webpack"; -const classes = await waitForProps< - Record<"labelRow" | "title" | "note" | "dividerDefault", string> ->("dividerDefault"); +const classes = + await waitForProps>( + "dividerDefault", + ); interface CategoryProps { title: string; From 3ce4309e29aa6cc3fb4c69a4ef5cec41334e5149 Mon Sep 17 00:00:00 2001 From: LoneWeeb <73281112+Tharki-God@users.noreply.github.com> Date: Sat, 14 Oct 2023 23:13:30 +0530 Subject: [PATCH 21/36] non store install bug fix (#566) fixes an bug with installer where it always fails to get info for non store plugins --- src/main/ipc/installer.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/ipc/installer.ts b/src/main/ipc/installer.ts index 1a1cef52a..b69b2fc54 100644 --- a/src/main/ipc/installer.ts +++ b/src/main/ipc/installer.ts @@ -19,7 +19,11 @@ import { promisify } from "util"; const writeFile = promisify(originalWriteFile); -const octokit = new Octokit(); +const octokit = new Octokit({ + request: { + fetch, + }, +}); async function github( identifier: string, From 1eda9c4a197a0940dffc07f07fc559de54393c36 Mon Sep 17 00:00:00 2001 From: Lucy Dryaeva <48590492+ShadiestGoat@users.noreply.github.com> Date: Sat, 14 Oct 2023 18:43:33 +0100 Subject: [PATCH 22/36] Install Command (#551) * Install Commands - Draft 1 * Prettier choices * Better store display name handler * Use install flow + don't send a message response * Woops forgot lint * Add util for generating install urls * add a share command * Lint * Use a shared injector instance for commands * Use executor & getValue * Bloody lint * Single source display name map * Lint <3 * Remove share cmd * Remove unused imports * Remove install URL util * Type assertion no longer required * Add i18n * Move parseInstallLink to utils * Allow addon to be the install link * Replace toast responses with command ones * Lint * Remove try/catch & null check parseInstallLink * format --------- Co-authored-by: Albert Portnoy --- .../coremods/installer/AddonEmbed.tsx | 3 +- src/renderer/coremods/installer/commands.ts | 83 +++++++++++++++++++ src/renderer/coremods/installer/index.tsx | 55 ++---------- src/renderer/coremods/installer/util.tsx | 49 ++++++++++- 4 files changed, 140 insertions(+), 50 deletions(-) create mode 100644 src/renderer/coremods/installer/commands.ts diff --git a/src/renderer/coremods/installer/AddonEmbed.tsx b/src/renderer/coremods/installer/AddonEmbed.tsx index f9fd91b71..0ff620242 100644 --- a/src/renderer/coremods/installer/AddonEmbed.tsx +++ b/src/renderer/coremods/installer/AddonEmbed.tsx @@ -5,9 +5,8 @@ import { Logger } from "@replugged"; import { getByProps } from "@webpack"; import { openExternal } from "src/renderer/util"; import { CheckResultSuccess } from "src/types"; -import { InstallLinkProps } from "."; import { getSourceLink } from "../settings/pages"; -import { authorList, checkIsInstalled, getInfo, install } from "./util"; +import { InstallLinkProps, authorList, checkIsInstalled, getInfo, install } from "./util"; import "./addonEmbed.css"; diff --git a/src/renderer/coremods/installer/commands.ts b/src/renderer/coremods/installer/commands.ts new file mode 100644 index 000000000..26b15f9dd --- /dev/null +++ b/src/renderer/coremods/installer/commands.ts @@ -0,0 +1,83 @@ +import { Injector } from "@replugged"; +import { ApplicationCommandOptionType } from "src/types"; +import { INSTALLER_SOURCES, InstallerSource, installFlow, parseInstallLink } from "./util"; +import { Messages } from "@common/i18n"; + +/** + * A map of display names for installer sources. + */ +const sourceDisplayNames: Record = { + github: "GitHub", + store: Messages.REPLUGGED_STORE, +}; + +export function loadCommands(injector: Injector): void { + injector.utils.registerSlashCommand({ + name: "install", + displayName: Messages.REPLUGGED_COMMAND_INSTALL_NAME, + description: Messages.REPLUGGED_COMMAND_INSTALL_DESC, + options: [ + { + name: "addon", + displayName: Messages.REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_NAME, + description: Messages.REPLUGGED_COMMAND_INSTALL_OPTION_ADDON_DESC, + type: ApplicationCommandOptionType.String, + required: true, + }, + { + name: "source", + displayName: Messages.REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_NAME, + description: Messages.REPLUGGED_COMMAND_INSTALL_OPTION_SOURCE_DESC, + type: ApplicationCommandOptionType.String, + required: false, + choices: INSTALLER_SOURCES.map((v) => ({ + name: v, + displayName: sourceDisplayNames[v], + value: v, + })), + }, + { + name: "id", + displayName: Messages.REPLUGGED_COMMAND_INSTALL_OPTION_ID_NAME, + description: Messages.REPLUGGED_COMMAND_INSTALL_OPTION_ID_DESC, + type: ApplicationCommandOptionType.String, + required: false, + }, + ], + + async executor(i) { + let addon = i.getValue("addon"); + let source = i.getValue("source"); + let id = i.getValue("id"); + + const linkParsed = parseInstallLink(addon); + + if (linkParsed) { + ({ identifier: addon, source, id } = linkParsed); + } + + const resp = await installFlow(addon, source, id, false); + + switch (resp.kind) { + case "FAILED": + return { + result: Messages.REPLUGGED_TOAST_INSTALLER_ADDON_FETCH_INFO_FAILED, + }; + case "ALREADY_INSTALLED": + return { + result: Messages.REPLUGGED_ERROR_ALREADY_INSTALLED.format({ name: resp.manifest.name }), + }; + case "CANCELLED": + return { + result: Messages.REPLUGGED_TOAST_INSTALLER_ADDON_CANCELED_INSTALL, + }; + case "SUCCESS": + return { + result: Messages.REPLUGGED_TOAST_INSTALLER_ADDON_INSTALL_SUCCESS.format({ + name: resp.manifest.name, + }), + }; + } + }, + }); +} diff --git a/src/renderer/coremods/installer/index.tsx b/src/renderer/coremods/installer/index.tsx index f796b44bc..a34103138 100644 --- a/src/renderer/coremods/installer/index.tsx +++ b/src/renderer/coremods/installer/index.tsx @@ -2,13 +2,20 @@ import { Injector, Logger } from "@replugged"; import { filters, getFunctionKeyBySource, waitForModule } from "src/renderer/modules/webpack"; import { ObjectExports } from "src/types"; import { registerRPCCommand } from "../rpc"; -import { InstallResponse, InstallerSource, installFlow, isValidSource } from "./util"; +import { + InstallLinkProps, + InstallResponse, + InstallerSource, + installFlow, + parseInstallLink, +} from "./util"; import { plugins } from "src/renderer/managers/plugins"; import { themes } from "src/renderer/managers/themes"; import AddonEmbed from "./AddonEmbed"; import { generalSettings } from "../settings/pages"; import type { Capture, DefaultInRule } from "simple-markdown"; import { parser } from "@common"; +import { loadCommands } from "./commands"; const injector = new Injector(); const logger = Logger.coremod("Installer"); @@ -18,51 +25,6 @@ interface AnchorProps extends React.ComponentPropsWithoutRef<"a"> { focusProps?: Record; } -export interface InstallLinkProps { - /** Identifier for the addon in the source */ - identifier: string; - /** Updater source type */ - source?: InstallerSource; - /** ID for the addon in that source. Useful for GitHub repositories that have multiple addons. */ - id?: string; -} - -function parseInstallLink(href: string): InstallLinkProps | null { - try { - const url = new URL(href); - const repluggedHostname = new URL(generalSettings.get("apiUrl")).hostname; - if (url.hostname !== repluggedHostname) return null; - - if (url.pathname === "/install") { - const params = url.searchParams; - const identifier = params.get("identifier"); - const source = params.get("source") ?? "store"; - const id = params.get("id") ?? undefined; - if (!identifier) return null; - if (!isValidSource(source)) return null; - return { - identifier, - source, - id, - }; - } - - const storeMatch = url.pathname.match(/^\/store\/([^/]+)$/); - if (storeMatch) { - const identifier = storeMatch[1]; - if (["plugins", "themes"].includes(identifier.toLowerCase())) return null; - return { - identifier, - source: "store", - }; - } - - return null; - } catch { - return null; - } -} - let uninjectFns: Array<() => void> = []; const modalFlows = new Map>(); @@ -202,6 +164,7 @@ async function injectLinks(): Promise { export async function start(): Promise { await injectLinks(); injectRpc(); + loadCommands(injector); } export function stop(): void { diff --git a/src/renderer/coremods/installer/util.tsx b/src/renderer/coremods/installer/util.tsx index 516de6b7b..a0c5c0c42 100644 --- a/src/renderer/coremods/installer/util.tsx +++ b/src/renderer/coremods/installer/util.tsx @@ -7,12 +7,12 @@ import { openExternal } from "src/renderer/util"; import type { AnyAddonManifest, CheckResultSuccess } from "src/types"; import * as pluginManager from "../../managers/plugins"; import * as themeManager from "../../managers/themes"; -import { getAddonType, getSourceLink, label } from "../settings/pages"; +import { generalSettings, getAddonType, getSourceLink, label } from "../settings/pages"; const logger = Logger.coremod("Installer"); // First item is the default -const INSTALLER_SOURCES = ["store", "github"] as const; +export const INSTALLER_SOURCES = ["store", "github"] as const; export type InstallerSource = (typeof INSTALLER_SOURCES)[number]; const DEFAULT_INSTALLER_SOURCE: InstallerSource = "store"; @@ -25,6 +25,51 @@ export function isValidSource(type: string): type is InstallerSource { return INSTALLER_SOURCES.includes(type); } +export interface InstallLinkProps { + /** Identifier for the addon in the source */ + identifier: string; + /** Updater source type */ + source?: InstallerSource; + /** ID for the addon in that source. Useful for GitHub repositories that have multiple addons. */ + id?: string; +} + +export function parseInstallLink(href: string): InstallLinkProps | null { + try { + const url = new URL(href); + const repluggedHostname = new URL(generalSettings.get("apiUrl")).hostname; + if (url.hostname !== repluggedHostname) return null; + + if (url.pathname === "/install") { + const params = url.searchParams; + const identifier = params.get("identifier"); + const source = params.get("source") ?? "store"; + const id = params.get("id") ?? undefined; + if (!identifier) return null; + if (!isValidSource(source)) return null; + return { + identifier, + source, + id, + }; + } + + const storeMatch = url.pathname.match(/^\/store\/([^/]+)$/); + if (storeMatch) { + const identifier = storeMatch[1]; + if (["plugins", "themes"].includes(identifier.toLowerCase())) return null; + return { + identifier, + source: "store", + }; + } + + return null; + } catch { + return null; + } +} + export async function getInfo( identifier: string, source?: InstallerSource, From d8848dae1a0640f071c1d77871a3f96432528577 Mon Sep 17 00:00:00 2001 From: Lucy Dryaeva <48590492+ShadiestGoat@users.noreply.github.com> Date: Wed, 18 Oct 2023 01:21:43 +0100 Subject: [PATCH 23/36] Fix command type import (#567) * Fix the import <3 * Import using the 'original file' --- src/renderer/modules/injector.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/renderer/modules/injector.ts b/src/renderer/modules/injector.ts index b03a1e2c2..8be38446b 100644 --- a/src/renderer/modules/injector.ts +++ b/src/renderer/modules/injector.ts @@ -1,4 +1,5 @@ -import type { CommandOptions, RepluggedCommand } from "src/types"; +import type { CommandOptions } from "../../types/discord"; +import type { RepluggedCommand } from "../../types/coremods/commands"; import type { ContextMenuTypes, GetContextItem } from "../../types/coremods/contextMenu"; import type { GetButtonItem } from "../../types/coremods/message"; import type { AnyFunction } from "../../types/util"; From ae862789d97cf48438ec7962339bcd9f2831d6c1 Mon Sep 17 00:00:00 2001 From: LoneWeeb <73281112+Tharki-God@users.noreply.github.com> Date: Wed, 18 Oct 2023 18:33:50 +0530 Subject: [PATCH 24/36] Slash command api bug fix (#559) --- src/renderer/apis/commands.ts | 35 +++++++++++------------ src/renderer/coremods/installer/index.tsx | 2 +- src/types/coremods/commands.ts | 12 ++++---- src/types/discord.ts | 2 ++ 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/renderer/apis/commands.ts b/src/renderer/apis/commands.ts index d58014d48..81e04edaa 100644 --- a/src/renderer/apis/commands.ts +++ b/src/renderer/apis/commands.ts @@ -1,4 +1,4 @@ -import type { Channel, Guild } from "discord-types/general"; +import type { Channel, Guild, User } from "discord-types/general"; import type { AnyRepluggedCommand, CommandOptionReturn, @@ -15,15 +15,27 @@ import { ApplicationCommandOptionType } from "../../types"; import { constants, i18n, messages, users } from "../modules/common"; import type { Store } from "../modules/common/flux"; import { Logger } from "../modules/logger"; -import { getByStoreName } from "../modules/webpack"; +import { filters, getByStoreName, waitForModule } from "../modules/webpack"; const logger = Logger.api("Commands"); +let RepluggedUser: User | undefined; + interface CommandsAndSection { section: RepluggedCommandSection; commands: Map; } +void waitForModule(filters.bySource(".isStaffPersonal=")).then((User) => { + RepluggedUser = new User({ + avatar: "replugged", + id: "replugged", + bot: true, + username: "Replugged", + system: true, + }); +}); + export const commandAndSections = new Map(); export const defaultSection: RepluggedCommandSection = Object.freeze({ @@ -92,11 +104,6 @@ async function executeCommand( loggingName: "Replugged", }); - Object.assign(loadingMessage.author, { - username: "Replugged", - avatar: "replugged", - }); - Object.assign(loadingMessage, { flags: constants.MessageFlags.EPHEMERAL + constants.MessageFlags.LOADING, // adding loading too state: "SENDING", // Keep it a little faded @@ -113,6 +120,7 @@ async function executeCommand( name: command.displayName, }, type: 20, + author: RepluggedUser ?? loadingMessage.author, }); messages.receiveMessage(currentChannelId, loadingMessage, true); const interaction = new CommandInteraction({ options: args, ...currentInfo }); @@ -136,11 +144,6 @@ async function executeCommand( loggingName: "Replugged", }); - Object.assign(botMessage.author, { - username: "Replugged", - avatar: "replugged", - }); - Object.assign(botMessage, { interaction: { // eslint-disable-next-line @typescript-eslint/naming-convention @@ -155,6 +158,7 @@ async function executeCommand( name: command.displayName, }, type: 20, + author: RepluggedUser ?? botMessage.author, }); messages.receiveMessage(currentChannelId, botMessage, true); } @@ -168,11 +172,6 @@ async function executeCommand( loggingName: "Replugged", }); - Object.assign(botMessage.author, { - username: "Replugged", - avatar: "replugged", - }); - Object.assign(botMessage, { interaction: { // eslint-disable-next-line @typescript-eslint/naming-convention @@ -187,6 +186,7 @@ async function executeCommand( name: command.displayName, }, type: 20, + author: RepluggedUser ?? botMessage.author, }); messages.receiveMessage(currentChannelId, botMessage, true); @@ -229,7 +229,6 @@ export class CommandManager { option.serverLocalizedName ??= option.displayName; option.displayName ??= option.name; option.displayDescription ??= option.description; - return option; }); diff --git a/src/renderer/coremods/installer/index.tsx b/src/renderer/coremods/installer/index.tsx index a34103138..a42931b14 100644 --- a/src/renderer/coremods/installer/index.tsx +++ b/src/renderer/coremods/installer/index.tsx @@ -131,7 +131,7 @@ async function injectLinks(): Promise { parse: (capture: Capture) => { const installLink = parseInstallLink(capture[1]); return { - ...installLink!, + ...installLink, url: capture[1], }; }, diff --git a/src/types/coremods/commands.ts b/src/types/coremods/commands.ts index e8db2e1c8..95349f84f 100644 --- a/src/types/coremods/commands.ts +++ b/src/types/coremods/commands.ts @@ -1,13 +1,13 @@ import type { Channel, Guild } from "discord-types/general"; import type { ValueOf } from "type-fest"; import { CommandInteraction } from "../../renderer/apis/commands"; -import { - type APIEmbed, +import type { + APIEmbed, ApplicationCommandOptionType, - type CommandChoices, - type CommandOptionReturn, - type CommandOptions, - type StringOptions, + CommandChoices, + CommandOptionReturn, + CommandOptions, + StringOptions, } from "../discord"; interface OptionTypeMapping { diff --git a/src/types/discord.ts b/src/types/discord.ts index 85647a453..4eedc3783 100644 --- a/src/types/discord.ts +++ b/src/types/discord.ts @@ -1,6 +1,8 @@ import { Message } from "@common/i18n"; export enum ApplicationCommandOptionType { + //Subcommand = 1, + //SubcommandGroup = 2, String = 3, Integer = 4, Boolean = 5, From fddb46f4cbeb4874714c347ad9e581786660a755 Mon Sep 17 00:00:00 2001 From: Federico Di Leo <38290480+FedeIlLeone@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:16:26 +0200 Subject: [PATCH 25/36] SliderItem margin fix and types (#571) * fix: plugin -> theme in error * fix(components): SliderItem correct margin without markers * feat(types): update and fixes * revert(types): message flags type * feat(Loader): new SPINNING_CIRCLE_SIMPLE enum * fix(constants): Routes can be a string * fix(FormItem): before note position --- src/main/ipc/settings.ts | 1 - src/main/ipc/themes.ts | 2 +- src/renderer/modules/common/channels.ts | 1 + src/renderer/modules/common/constants.ts | 11 +++++-- src/renderer/modules/common/flux.ts | 24 ++++++++------- src/renderer/modules/common/fluxDispatcher.ts | 24 +++++++-------- src/renderer/modules/common/messages.ts | 6 ++++ src/renderer/modules/components/FormItem.tsx | 29 +++++++++---------- src/renderer/modules/components/Loader.tsx | 3 +- src/renderer/modules/components/Modal.tsx | 1 + src/renderer/modules/components/RadioItem.tsx | 5 ++-- .../modules/components/SliderItem.tsx | 13 +++++++-- 12 files changed, 70 insertions(+), 50 deletions(-) diff --git a/src/main/ipc/settings.ts b/src/main/ipc/settings.ts index d821560c3..f08f4811e 100644 --- a/src/main/ipc/settings.ts +++ b/src/main/ipc/settings.ts @@ -13,7 +13,6 @@ const SETTINGS_DIR = CONFIG_PATHS.settings; export function getSettingsPath(namespace: string): string { const resolved = resolve(SETTINGS_DIR, `${namespace}.json`); - console.log(resolved, SETTINGS_DIR, resolved.startsWith(SETTINGS_DIR)); if (!resolved.startsWith(`${SETTINGS_DIR}${sep}`)) { // Ensure file changes are restricted to the base path throw new Error("Invalid namespace"); diff --git a/src/main/ipc/themes.ts b/src/main/ipc/themes.ts index 84f24b563..740bed3f3 100644 --- a/src/main/ipc/themes.ts +++ b/src/main/ipc/themes.ts @@ -22,7 +22,7 @@ async function getTheme(path: string): Promise { const manifestPath = join(THEMES_DIR, path, "manifest.json"); if (!manifestPath.startsWith(`${THEMES_DIR}${sep}`)) { // Ensure file changes are restricted to the base path - throw new Error("Invalid plugin name"); + throw new Error("Invalid theme name"); } const manifest: unknown = JSON.parse( diff --git a/src/renderer/modules/common/channels.ts b/src/renderer/modules/common/channels.ts index 8bffd8e94..7adc5841e 100644 --- a/src/renderer/modules/common/channels.ts +++ b/src/renderer/modules/common/channels.ts @@ -21,6 +21,7 @@ export interface ChannelStore { getAllThreadsForParent(channelId: string): Channel[]; getBasicChannel(channelId: string): Channel | undefined; getChannel(channelId: string): Channel | undefined; + getChannelIds(guildId?: string): string[]; getDMFromUserId(userId: string): string | undefined; getDMUserIds(): string[]; getGuildChannelsVersion(guildId: string): number; diff --git a/src/renderer/modules/common/constants.ts b/src/renderer/modules/common/constants.ts index 99d9f286d..5f71311cd 100644 --- a/src/renderer/modules/common/constants.ts +++ b/src/renderer/modules/common/constants.ts @@ -1,6 +1,8 @@ import { virtualMerge } from "src/renderer/util"; import { filters, getExportsForProps, waitForModule, waitForProps } from "../webpack"; +type StringConcat = (...rest: string[]) => string; + const ConstantsCommon = await waitForModule>(filters.bySource("BASE_URL:")); const Constants = await waitForModule>(filters.bySource("USER_PROFILE:")); export const raw = virtualMerge(ConstantsCommon, Constants); @@ -42,7 +44,7 @@ export const ChannelTypes = getExportsForProps>( "DM", "GUILD_FORUM", ])!; -export const Endpoints = getExportsForProps>(Constants, [ +export const Endpoints = getExportsForProps>(Constants, [ "USERS", "INTEGRATIONS", ])!; @@ -54,8 +56,11 @@ export const MessageFlags = getExportsForProps>(Constants "EPHEMERAL", "LOADING", ])!; -export const Routes = getExportsForProps>(Constants, ["INDEX", "LOGIN"])!; -export const UserFlags = getExportsForProps>(Constants, [ +export const Routes = getExportsForProps>(Constants, [ + "INDEX", + "LOGIN", +])!; +export const UserFlags = getExportsForProps>(Constants, [ "STAFF", "SPAMMER", ])!; diff --git a/src/renderer/modules/common/flux.ts b/src/renderer/modules/common/flux.ts index 331000e61..281d321fb 100644 --- a/src/renderer/modules/common/flux.ts +++ b/src/renderer/modules/common/flux.ts @@ -9,9 +9,9 @@ interface Action { type: ActionType; } -type ActionHandler = (action: A) => void; +export type ActionHandler = (action: A) => boolean | void; -type ActionHandlerRecord = { +export type ActionHandlerRecord = { [A in ActionType]: ActionHandler<{ type: A; [key: string]: any }>; }; @@ -43,7 +43,7 @@ export declare class Emitter { type Callback = () => void; -declare class Callbacks { +declare class ChangeListeners { public listeners: Set; public add(listener: Callback): void; public remove(listener: Callback): void; @@ -55,7 +55,11 @@ declare class Callbacks { } export declare class Store { - public constructor(dispatcher: Dispatcher, actions?: ActionHandlerRecord, band?: DispatchBand); + public constructor( + dispatcher: Dispatcher, + actionHandler?: ActionHandlerRecord, + band?: DispatchBand, + ); public static destroy(): void; public static getAll(): Store[]; @@ -65,8 +69,8 @@ export declare class Store { public _isInitialized: boolean; public _dispatchToken: DispatchToken; public _dispatcher: Dispatcher; - public _changeCallbacks: Callbacks; - public _reactChangeCallbacks: Callbacks; + public _changeCallbacks: ChangeListeners; + public _reactChangeCallbacks: ChangeListeners; public _mustEmitChanges: Parameters[0]; public initialize(): void; @@ -75,8 +79,8 @@ export declare class Store { public getName(): string; public emitChange(): void; - public mustEmitChanges(func?: (action?: Action) => boolean): void; - public syncWith(stores: Store[], func: () => boolean, timeout?: number): void; + public mustEmitChanges(actionHandler?: ActionHandler): void; + public syncWith(stores: Store[], callback: () => boolean, timeout?: number): void; public waitFor(...stores: Store[]): void; public addChangeListener(listener: Callback): void; @@ -85,7 +89,7 @@ export declare class Store { public removeChangeListener(listener: Callback): void; public removeReactChangeListener(listener: Callback): void; - public registerActionHandlers(actions: ActionHandlerRecord, band?: DispatchBand): void; + public registerActionHandlers(actionHandlers: ActionHandlerRecord, band?: DispatchBand): void; // eslint-disable-next-line @typescript-eslint/naming-convention public __getLocalVars?(): Record; @@ -175,7 +179,7 @@ export declare class SnapshotStore> extends Store public clear: () => void; public getClass: () => any; public readSnapshot: (version: number) => Snapshot["data"] | null; - public registerActionHandlers: (actions: ActionHandlerRecord) => void; + public registerActionHandlers: (actionHandlers: ActionHandlerRecord) => void; public save: () => void; } diff --git a/src/renderer/modules/common/fluxDispatcher.ts b/src/renderer/modules/common/fluxDispatcher.ts index 232fec2f2..9c2eda770 100644 --- a/src/renderer/modules/common/fluxDispatcher.ts +++ b/src/renderer/modules/common/fluxDispatcher.ts @@ -1,5 +1,7 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import type EventEmitter from "events"; import { waitForProps } from "../webpack"; +import type { ActionHandler, ActionHandlerRecord } from "./flux"; export enum DispatchBand { Early, @@ -7,11 +9,9 @@ export enum DispatchBand { Default, } -type FluxCallback = (action?: { [index: string]: unknown }) => void; - interface Action { type: string; - [index: string]: unknown; + [key: string]: any; } type ActionMetric = [string, string, number]; @@ -57,7 +57,7 @@ declare class ActionLog { } interface NodeData { - actionHandler: Record; + actionHandler: ActionHandlerRecord; band: DispatchBand; name: string; storeDidChange: (action: Action) => void; @@ -86,12 +86,12 @@ export declare class DepGraph { } interface Handler { - actionHandler: FluxCallback; + actionHandler: ActionHandler; name: string; storeDidChange: (action: Action) => void; } -declare class ActionHandlers { +declare class ActionHandlersGraph { public _orderedActionHandlers: Record; public _orderedCallbackTokens: string[]; public _lastID: number; @@ -102,7 +102,7 @@ declare class ActionHandlers { public getOrderedActionHandlers: (action: Action) => Handler[]; public register: ( name: string, - actionHandler: Record, + actionHandlers: ActionHandlerRecord, storeDidChange: (action: Action) => void, band: DispatchBand, token?: string, @@ -117,12 +117,12 @@ declare class ActionHandlers { } export interface FluxDispatcher { - _actionHandlers: ActionHandlers; + _actionHandlers: ActionHandlersGraph; _currentDispatchActionType: string | null; _defaultBand: DispatchBand; _interceptors: Array<(...rest: unknown[]) => unknown>; _processingWaitQueue: boolean; - _subscriptions: Record>; + _subscriptions: Record>; _waitQueue: Array<(...rest: unknown[]) => unknown>; actionLogger: ActionLogger; @@ -139,12 +139,12 @@ export interface FluxDispatcher { dispatch: (action: Action) => void; flushWaitQueue: () => void; isDispatching: () => boolean; - subscribe: (type: string, callback: FluxCallback) => void; - unsubscribe: (type: string, callback: FluxCallback) => void; + subscribe: (type: string, callback: ActionHandler) => void; + unsubscribe: (type: string, callback: ActionHandler) => void; wait: (callback: (...rest: unknown[]) => unknown) => void; register: ( name: string, - actionHandler: Record, + actionHandlers: ActionHandlerRecord, storeDidChange: (action: Action) => void, band: DispatchBand, token?: string, diff --git a/src/renderer/modules/common/messages.ts b/src/renderer/modules/common/messages.ts index 0030ce04a..c09ee8ec1 100644 --- a/src/renderer/modules/common/messages.ts +++ b/src/renderer/modules/common/messages.ts @@ -371,6 +371,12 @@ export interface MessageActions { ) => Promise; sendBotMessage: (channelId: string, content: string, messageName?: string) => void; sendClydeError: (channelId: string, code?: number) => void; + sendClydeProfileOverride: ( + channelId: string, + clydeProfileURL: string, + analyticsTriggeredFrom?: string, + suggestedInvite?: InviteSuggestion, + ) => Promise; sendGreetMessage: ( channelId: string, stickerId: string, diff --git a/src/renderer/modules/components/FormItem.tsx b/src/renderer/modules/components/FormItem.tsx index 6394fe1c3..118e0c8cb 100644 --- a/src/renderer/modules/components/FormItem.tsx +++ b/src/renderer/modules/components/FormItem.tsx @@ -40,25 +40,22 @@ export type FormItemType = React.FC; export default ((props) => { const { note, notePosition = "before", noteStyle, noteClassName, divider, ...compProps } = props; + + const noteStyleDefault = notePosition === "before" ? { marginBottom: 8 } : { marginTop: 8 }; + const noteComp = ( + + {note} + + ); + return ( - {note && notePosition === "before" && ( - - {note} - - )} + {note && notePosition === "before" && noteComp} {props.children} - {note && notePosition === "after" && ( - - {note} - - )} + {note && notePosition === "after" && noteComp} {divider && } ); diff --git a/src/renderer/modules/components/Loader.tsx b/src/renderer/modules/components/Loader.tsx index 011d23cd0..64cd51d65 100644 --- a/src/renderer/modules/components/Loader.tsx +++ b/src/renderer/modules/components/Loader.tsx @@ -6,6 +6,7 @@ const Types = { CHASING_DOTS: "chasingDots", PULSING_ELLIPSIS: "pulsingEllipsis", SPINNING_CIRCLE: "spinningCircle", + SPINNING_CIRCLE_SIMPLE: "spinningCircleSimple", LOW_MOTION: "lowMotion", } as const; @@ -20,7 +21,7 @@ type LoaderProps = GenericLoaderProps & { type?: (typeof Types)[keyof typeof Types]; } & React.ComponentPropsWithoutRef<"span">; type SpinningCircleLoaderProps = GenericLoaderProps & { - type?: (typeof Types)["SPINNING_CIRCLE"]; + type?: (typeof Types)["SPINNING_CIRCLE"] | (typeof Types)["SPINNING_CIRCLE_SIMPLE"]; } & React.ComponentPropsWithoutRef<"div">; export type LoaderType = React.FC & { diff --git a/src/renderer/modules/components/Modal.tsx b/src/renderer/modules/components/Modal.tsx index d278c5e9b..d61670a93 100644 --- a/src/renderer/modules/components/Modal.tsx +++ b/src/renderer/modules/components/Modal.tsx @@ -17,6 +17,7 @@ interface ModalRootProps extends Omit, "ch fullscreenOnMobile?: boolean; hideShadow?: boolean; onAnimationEnd?(): string; + returnRef?: React.Ref; } interface ModalHeaderProps { diff --git a/src/renderer/modules/components/RadioItem.tsx b/src/renderer/modules/components/RadioItem.tsx index 3dfdfddf5..1361fd34b 100644 --- a/src/renderer/modules/components/RadioItem.tsx +++ b/src/renderer/modules/components/RadioItem.tsx @@ -16,8 +16,7 @@ type RadioOptionType = { collapsibleContent?: React.ReactNode; }; -// eslint-disable-next-line @typescript-eslint/consistent-type-definitions -type RadioProps = { +interface RadioProps { options: RadioOptionType[]; value?: string; onChange: (option: RadioOptionType) => void; @@ -32,7 +31,7 @@ type RadioProps = { itemTitleClassName?: string; radioItemClassName?: string; collapsibleClassName?: string; -}; +} export type RadioType = React.FC & { Sizes: Record<"NOT_SET" | "NONE" | "SMALL" | "MEDIUM", string>; diff --git a/src/renderer/modules/components/SliderItem.tsx b/src/renderer/modules/components/SliderItem.tsx index de86a11dd..9b1ace67c 100644 --- a/src/renderer/modules/components/SliderItem.tsx +++ b/src/renderer/modules/components/SliderItem.tsx @@ -1,6 +1,6 @@ import type React from "react"; import { FormItem } from "."; -import { filters, waitForModule } from "../webpack"; +import { filters, waitForModule, waitForProps } from "../webpack"; const MarkerPositions = { ABOVE: 0, @@ -61,6 +61,8 @@ export const Slider = ((props) => { }) as SliderType; Slider.MarkerPositions = MarkerPositions; +const classes = await waitForProps>("marginTop20"); + interface SliderItemProps extends SliderProps { note?: string; style?: React.CSSProperties; @@ -69,7 +71,7 @@ interface SliderItemProps extends SliderProps { export type SliderItemType = React.FC>; export const SliderItem = (props: React.PropsWithChildren): React.ReactElement => { - const { children, ...compProps } = props; + const { children, className, ...compProps } = props; return ( ): Rea noteStyle={{ marginBottom: props.markers ? 16 : 4 }} disabled={props.disabled} divider> - + ); }; From 3d14f495639a9639c53aff5087173900135778c0 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:11:21 -0500 Subject: [PATCH 26/36] Update packages again --- package.json | 56 +- pnpm-lock.yaml | 1361 ++++++++++++++++++++++++------------------------ 2 files changed, 705 insertions(+), 712 deletions(-) diff --git a/package.json b/package.json index eae391f37..fd13d4bda 100644 --- a/package.json +++ b/package.json @@ -37,24 +37,24 @@ "url": "https://github.com/replugged-org/replugged/issues" }, "devDependencies": { - "@types/adm-zip": "^0.5.0", - "@types/highlightjs": "^9.12.2", - "@types/lodash": "^4.14.198", - "@types/node": "^18.17.14", - "@types/prompts": "^2.4.4", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", - "@types/react-reconciler": "^0.28.4", - "@types/semver": "^7.5.1", - "@types/superagent": "^4.1.18", - "@types/update-notifier": "^6.0.5", - "@types/ws": "^8.5.5", - "@types/yargs": "^17.0.24", - "@typescript-eslint/eslint-plugin": "^6.6.0", - "@typescript-eslint/parser": "^6.6.0", - "cspell": "^7.3.2", + "@types/adm-zip": "^0.5.3", + "@types/highlightjs": "^9.12.4", + "@types/lodash": "^4.14.200", + "@types/node": "^18.18.6", + "@types/prompts": "^2.4.7", + "@types/react": "^18.2.29", + "@types/react-dom": "^18.2.14", + "@types/react-reconciler": "^0.28.6", + "@types/semver": "^7.5.4", + "@types/superagent": "^4.1.20", + "@types/update-notifier": "^6.0.6", + "@types/ws": "^8.5.8", + "@types/yargs": "^17.0.29", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "cspell": "^7.3.8", "discord-types": "^1.3.3", - "eslint": "^8.48.0", + "eslint": "^8.51.0", "eslint-config-dmitmel": "github:dmitmel/eslint-config-dmitmel", "eslint-plugin-node": "^11.1.0", "eslint-plugin-react": "^7.33.2", @@ -63,9 +63,9 @@ "prettier": "^3.0.3", "simple-markdown": "^0.7.3", "style-mod": "^4.1.0", - "tsx": "^3.12.8", - "type-fest": "^4.3.1", - "typedoc": "^0.25.1", + "tsx": "^3.14.0", + "type-fest": "^4.5.0", + "typedoc": "^0.25.2", "typescript": "^5.2.2" }, "files": [ @@ -75,26 +75,26 @@ ], "dependencies": { "@codemirror/lang-css": "^6.2.1", - "@codemirror/language": "^6.9.0", - "@codemirror/state": "^6.2.1", + "@codemirror/language": "^6.9.1", + "@codemirror/state": "^6.3.1", "@ddietr/codemirror-themes": "^1.4.2", - "@electron/asar": "^3.2.4", + "@electron/asar": "^3.2.7", "@lezer/highlight": "^1.1.6", - "@octokit/rest": "^20.0.1", + "@octokit/rest": "^20.0.2", "adm-zip": "^0.5.10", "chalk": "^5.3.0", "codemirror": "^6.0.1", - "esbuild": "^0.19.2", - "esbuild-sass-plugin": "^2.13.0", + "esbuild": "^0.19.5", + "esbuild-sass-plugin": "^2.16.0", "esm": "^3.2.25", "node-fetch": "^3.3.2", "prompts": "^2.4.2", "semver": "^7.5.4", "standalone-electron-types": "^1.0.0", "update-notifier": "^6.0.2", - "ws": "^8.14.0", + "ws": "^8.14.2", "yargs": "^17.7.2", - "zod": "^3.22.2" + "zod": "^3.22.4" }, "bin": { "replugged": "bin.mjs" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1e2e7fcc..b748711ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,25 +10,25 @@ overrides: dependencies: '@codemirror/lang-css': specifier: ^6.2.1 - version: 6.2.1(@codemirror/view@6.18.0) + version: 6.2.1(@codemirror/view@6.21.3) '@codemirror/language': - specifier: ^6.9.0 - version: 6.9.0 + specifier: ^6.9.1 + version: 6.9.1 '@codemirror/state': - specifier: ^6.2.1 - version: 6.2.1 + specifier: ^6.3.1 + version: 6.3.1 '@ddietr/codemirror-themes': specifier: ^1.4.2 version: 1.4.2 '@electron/asar': - specifier: ^3.2.4 - version: 3.2.4 + specifier: ^3.2.7 + version: 3.2.7 '@lezer/highlight': specifier: ^1.1.6 version: 1.1.6 '@octokit/rest': - specifier: ^20.0.1 - version: 20.0.1 + specifier: ^20.0.2 + version: 20.0.2 adm-zip: specifier: ^0.5.10 version: 0.5.10 @@ -37,13 +37,13 @@ dependencies: version: 5.3.0 codemirror: specifier: ^6.0.1 - version: 6.0.1(@lezer/common@1.0.4) + version: 6.0.1(@lezer/common@1.1.0) esbuild: - specifier: ^0.19.2 - version: 0.19.4 + specifier: ^0.19.5 + version: 0.19.5 esbuild-sass-plugin: - specifier: ^2.13.0 - version: 2.16.0(esbuild@0.19.4) + specifier: ^2.16.0 + version: 2.16.0(esbuild@0.19.5) esm: specifier: ^3.2.25 version: 3.2.25 @@ -63,79 +63,79 @@ dependencies: specifier: ^6.0.2 version: 6.0.2 ws: - specifier: ^8.14.0 - version: 8.14.0 + specifier: ^8.14.2 + version: 8.14.2 yargs: specifier: ^17.7.2 version: 17.7.2 zod: - specifier: ^3.22.2 - version: 3.22.2 + specifier: ^3.22.4 + version: 3.22.4 devDependencies: '@types/adm-zip': - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.5.3 + version: 0.5.3 '@types/highlightjs': - specifier: ^9.12.2 - version: 9.12.2 + specifier: ^9.12.4 + version: 9.12.4 '@types/lodash': - specifier: ^4.14.198 - version: 4.14.198 + specifier: ^4.14.200 + version: 4.14.200 '@types/node': - specifier: ^18.17.14 - version: 18.17.14 + specifier: ^18.18.6 + version: 18.18.6 '@types/prompts': - specifier: ^2.4.4 - version: 2.4.4 + specifier: ^2.4.7 + version: 2.4.7 '@types/react': - specifier: ^18.2.21 - version: 18.2.21 + specifier: ^18.2.29 + version: 18.2.29 '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.7 + specifier: ^18.2.14 + version: 18.2.14 '@types/react-reconciler': - specifier: ^0.28.4 - version: 0.28.4 + specifier: ^0.28.6 + version: 0.28.6 '@types/semver': - specifier: ^7.5.1 - version: 7.5.1 + specifier: ^7.5.4 + version: 7.5.4 '@types/superagent': - specifier: ^4.1.18 - version: 4.1.18 + specifier: ^4.1.20 + version: 4.1.20 '@types/update-notifier': - specifier: ^6.0.5 - version: 6.0.5 + specifier: ^6.0.6 + version: 6.0.6 '@types/ws': - specifier: ^8.5.5 - version: 8.5.5 + specifier: ^8.5.8 + version: 8.5.8 '@types/yargs': - specifier: ^17.0.24 - version: 17.0.24 + specifier: ^17.0.29 + version: 17.0.29 '@typescript-eslint/eslint-plugin': - specifier: ^6.6.0 - version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) + specifier: ^6.8.0 + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.6.0 - version: 6.6.0(eslint@8.48.0)(typescript@5.2.2) + specifier: ^6.8.0 + version: 6.8.0(eslint@8.51.0)(typescript@5.2.2) cspell: - specifier: ^7.3.2 - version: 7.3.2 + specifier: ^7.3.8 + version: 7.3.8 discord-types: specifier: ^1.3.3 - version: 1.3.26 + version: 1.3.3 eslint: - specifier: ^8.48.0 - version: 8.48.0 + specifier: ^8.51.0 + version: 8.51.0 eslint-config-dmitmel: specifier: github:dmitmel/eslint-config-dmitmel - version: github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.48.0) + version: github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.51.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.48.0) + version: 11.1.0(eslint@8.51.0) eslint-plugin-react: specifier: ^7.33.2 - version: 7.33.2(eslint@8.48.0) + version: 7.33.2(eslint@8.51.0) moment: specifier: ^2.29.4 version: 2.29.4 @@ -152,14 +152,14 @@ devDependencies: specifier: ^4.1.0 version: 4.1.0 tsx: - specifier: ^3.12.8 - version: 3.12.8 + specifier: ^3.14.0 + version: 3.14.0 type-fest: - specifier: ^4.3.1 - version: 4.3.1 + specifier: ^4.5.0 + version: 4.5.0 typedoc: - specifier: ^0.25.1 - version: 0.25.1(typescript@5.2.2) + specifier: ^0.25.2 + version: 0.25.2(typescript@5.2.2) typescript: specifier: ^5.2.2 version: 5.2.2 @@ -175,20 +175,20 @@ packages: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.13 + '@babel/highlight': 7.22.20 chalk: 2.4.2 dev: true - /@babel/helper-validator-identifier@7.22.15: - resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} dev: true - /@babel/highlight@7.22.13: - resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 dev: true @@ -201,92 +201,92 @@ packages: types-pkg-json: 1.2.1 dev: true - /@codemirror/autocomplete@6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.18.0)(@lezer/common@1.0.4): - resolution: {integrity: sha512-Fbwm0V/Wn3BkEJZRhr0hi5BhCo5a7eBL6LYaliPjOSwCyfOpnjXY59HruSxOUNV+1OYer0Tgx1zRNQttjXyDog==} + /@codemirror/autocomplete@6.10.2(@codemirror/language@6.9.1)(@codemirror/state@6.3.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0): + resolution: {integrity: sha512-3dCL7b0j2GdtZzWN5j7HDpRAJ26ip07R4NGYz7QYthIYMiX8I4E4TNrYcdTayPJGeVQtd/xe7lWU4XL7THFb/w==} peerDependencies: '@codemirror/language': ^6.0.0 '@codemirror/state': ^6.0.0 '@codemirror/view': ^6.0.0 '@lezer/common': ^1.0.0 dependencies: - '@codemirror/language': 6.9.0 - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.18.0 - '@lezer/common': 1.0.4 + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.3.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 dev: false - /@codemirror/commands@6.2.5: - resolution: {integrity: sha512-dSi7ow2P2YgPBZflR9AJoaTHvqmeGIgkhignYMd5zK5y6DANTvxKxp6eMEpIDUJkRAaOY/TFZ4jP1ADIO/GLVA==} + /@codemirror/commands@6.3.0: + resolution: {integrity: sha512-tFfcxRIlOWiQDFhjBSWJ10MxcvbCIsRr6V64SgrcaY0MwNk32cUOcCuNlWo8VjV4qRQCgNgUAnIeo0svkk4R5Q==} dependencies: - '@codemirror/language': 6.9.0 - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.18.0 - '@lezer/common': 1.0.4 + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.3.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 dev: false - /@codemirror/lang-css@6.2.1(@codemirror/view@6.18.0): + /@codemirror/lang-css@6.2.1(@codemirror/view@6.21.3): resolution: {integrity: sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==} dependencies: - '@codemirror/autocomplete': 6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.18.0)(@lezer/common@1.0.4) - '@codemirror/language': 6.9.0 - '@codemirror/state': 6.2.1 - '@lezer/common': 1.0.4 + '@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.1)(@codemirror/state@6.3.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.3.1 + '@lezer/common': 1.1.0 '@lezer/css': 1.1.3 transitivePeerDependencies: - '@codemirror/view' dev: false - /@codemirror/language@6.9.0: - resolution: {integrity: sha512-nFu311/0ne/qGuGCL3oKuktBgzVOaxCHZPZv1tLSZkNjPYxxvkjSbzno3MlErG2tgw1Yw1yF8BxMCegeMXqpiw==} + /@codemirror/language@6.9.1: + resolution: {integrity: sha512-lWRP3Y9IUdOms6DXuBpoWwjkR7yRmnS0hKYCbSfPz9v6Em1A1UCRujAkDiCrdYfs1Z0Eu4dGtwovNPStIfkgNA==} dependencies: - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.18.0 - '@lezer/common': 1.0.4 + '@codemirror/state': 6.3.1 + '@codemirror/view': 6.21.3 + '@lezer/common': 1.1.0 '@lezer/highlight': 1.1.6 - '@lezer/lr': 1.3.10 + '@lezer/lr': 1.3.13 style-mod: 4.1.0 dev: false - /@codemirror/lint@6.4.1: - resolution: {integrity: sha512-2Hx945qKX7FBan5/gUdTM8fsMYrNG9clIgEcPXestbLVFAUyQYFAuju/5BMNf/PwgpVaX5pvRm4+ovjbp9D9gQ==} + /@codemirror/lint@6.4.2: + resolution: {integrity: sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==} dependencies: - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.18.0 + '@codemirror/state': 6.3.1 + '@codemirror/view': 6.21.3 crelt: 1.0.6 dev: false - /@codemirror/search@6.5.2: - resolution: {integrity: sha512-WRihpqd0l9cEh9J3IZe45Yi+Z5MfTsEXnyc3V7qXHP4ZYtIYpGOn+EJ7fyLIkyAm/8S6QIr7/mMISfAadf8zCg==} + /@codemirror/search@6.5.4: + resolution: {integrity: sha512-YoTrvjv9e8EbPs58opjZKyJ3ewFrVSUzQ/4WXlULQLSDDr1nGPJ67mMXFNNVYwdFhybzhrzrtqgHmtpJwIF+8g==} dependencies: - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.18.0 + '@codemirror/state': 6.3.1 + '@codemirror/view': 6.21.3 crelt: 1.0.6 dev: false - /@codemirror/state@6.2.1: - resolution: {integrity: sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==} + /@codemirror/state@6.3.1: + resolution: {integrity: sha512-88e4HhMtKJyw6fKprGaN/yZfiaoGYOi2nM45YCUC6R/kex9sxFWBDGatS1vk4lMgnWmdIIB9tk8Gj1LmL8YfvA==} dev: false - /@codemirror/view@6.18.0: - resolution: {integrity: sha512-T6q1yYAoU+gSWfJFR4ryvDQcyOqS+Mw5RCvh26y0KiNksOOLYhNvdB3BTyLz8vy4fKaYlzbAOyBU7OQPUGHzjQ==} + /@codemirror/view@6.21.3: + resolution: {integrity: sha512-8l1aSQ6MygzL4Nx7GVYhucSXvW4jQd0F6Zm3v9Dg+6nZEfwzJVqi4C2zHfDljID+73gsQrWp9TgHc81xU15O4A==} dependencies: - '@codemirror/state': 6.2.1 + '@codemirror/state': 6.3.1 style-mod: 4.1.0 w3c-keyname: 2.2.8 dev: false - /@cspell/cspell-bundled-dicts@7.3.2: - resolution: {integrity: sha512-mmb9gi2/jTj983ijgVsdsQ4FM5Bv/lKslgJt4jDUm6SOtQYW4geCJNl5/MbMzcMQUWSJouS0w4C55AyrJmq0iw==} + /@cspell/cspell-bundled-dicts@7.3.8: + resolution: {integrity: sha512-Dj8iSGQyfgIsCjmXk9D/SjV7EpbpQSogeaGcBM66H33pd0GyGmLhn3biRN+vqi/vqWmsp75rT3kd5MKa8X5W9Q==} engines: {node: '>=16'} dependencies: '@cspell/dict-ada': 4.0.2 '@cspell/dict-aws': 4.0.0 - '@cspell/dict-bash': 4.1.1 - '@cspell/dict-companies': 3.0.21 - '@cspell/dict-cpp': 5.0.4 + '@cspell/dict-bash': 4.1.2 + '@cspell/dict-companies': 3.0.26 + '@cspell/dict-cpp': 5.0.9 '@cspell/dict-cryptocurrencies': 4.0.0 '@cspell/dict-csharp': 4.0.2 - '@cspell/dict-css': 4.0.7 + '@cspell/dict-css': 4.0.12 '@cspell/dict-dart': 2.0.3 '@cspell/dict-django': 4.1.0 '@cspell/dict-docker': 1.1.7 @@ -294,66 +294,66 @@ packages: '@cspell/dict-elixir': 4.0.3 '@cspell/dict-en-common-misspellings': 1.0.2 '@cspell/dict-en-gb': 1.1.33 - '@cspell/dict-en_us': 4.3.7 + '@cspell/dict-en_us': 4.3.10 '@cspell/dict-filetypes': 3.0.1 '@cspell/dict-fonts': 4.0.0 '@cspell/dict-fsharp': 1.0.0 '@cspell/dict-fullstack': 3.1.5 '@cspell/dict-gaming-terms': 1.0.4 '@cspell/dict-git': 2.0.0 - '@cspell/dict-golang': 6.0.2 + '@cspell/dict-golang': 6.0.4 '@cspell/dict-haskell': 4.0.1 - '@cspell/dict-html': 4.0.3 + '@cspell/dict-html': 4.0.5 '@cspell/dict-html-symbol-entities': 4.0.0 - '@cspell/dict-java': 5.0.5 - '@cspell/dict-k8s': 1.0.1 + '@cspell/dict-java': 5.0.6 + '@cspell/dict-k8s': 1.0.2 '@cspell/dict-latex': 4.0.0 '@cspell/dict-lorem-ipsum': 4.0.0 - '@cspell/dict-lua': 4.0.1 - '@cspell/dict-node': 4.0.2 - '@cspell/dict-npm': 5.0.8 - '@cspell/dict-php': 4.0.2 + '@cspell/dict-lua': 4.0.2 + '@cspell/dict-node': 4.0.3 + '@cspell/dict-npm': 5.0.12 + '@cspell/dict-php': 4.0.4 '@cspell/dict-powershell': 5.0.2 - '@cspell/dict-public-licenses': 2.0.3 - '@cspell/dict-python': 4.1.7 + '@cspell/dict-public-licenses': 2.0.5 + '@cspell/dict-python': 4.1.9 '@cspell/dict-r': 2.0.1 - '@cspell/dict-ruby': 5.0.0 + '@cspell/dict-ruby': 5.0.1 '@cspell/dict-rust': 4.0.1 '@cspell/dict-scala': 5.0.0 - '@cspell/dict-software-terms': 3.2.2 - '@cspell/dict-sql': 2.1.1 + '@cspell/dict-software-terms': 3.3.7 + '@cspell/dict-sql': 2.1.2 '@cspell/dict-svelte': 1.0.2 '@cspell/dict-swift': 2.0.1 - '@cspell/dict-typescript': 3.1.1 + '@cspell/dict-typescript': 3.1.2 '@cspell/dict-vue': 3.0.0 dev: true - /@cspell/cspell-json-reporter@7.3.2: - resolution: {integrity: sha512-5j1CX2OXkQGO3ljMBzfHjDzEiixodjfxVGR3VKkQX1vxTUMTIkPgt4BsgOVCQtqTiO21Dd2Bzn+H0/Jf4OL37g==} + /@cspell/cspell-json-reporter@7.3.8: + resolution: {integrity: sha512-FxYJWtDgxIQYxdP0RWwRV8nzLfxVx8D8D5L2sbbP/0NFczDbq/zWYep4nSAHJT10aUJrogsVUYwNwdkr562wKA==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-types': 7.3.2 + '@cspell/cspell-types': 7.3.8 dev: true - /@cspell/cspell-pipe@7.3.2: - resolution: {integrity: sha512-ZKOkb6IxuEXRXtjVAlZ41+4SXhyiGqrQ3FW16iZlCbM9Mp9WJAw2MOVh6wvpXmfKcM5/3jK1A4rFylB7b0QBHw==} + /@cspell/cspell-pipe@7.3.8: + resolution: {integrity: sha512-/vKPfiHM5bJUkNX12w9j533Lm2JvvSMKUCChM2AxYjy6vL8prc/7ei++4g2xAWwRxLZPg2OfpDJS5EirZNBJdA==} engines: {node: '>=16'} dev: true - /@cspell/cspell-resolver@7.3.2: - resolution: {integrity: sha512-3gvZPlYLkjuPezF2VyCVurEJiJnb3sbr32Jp3MfvpO7x026RXMbetkdH87MKoiSAThxSiyG+qi/jvUeDYY/Wtg==} + /@cspell/cspell-resolver@7.3.8: + resolution: {integrity: sha512-CeyQmhqZI5a+T7a6oiVN90TFlzU3qVVYqCaZ9grFrVOsmzY9ipH5gmqfgMavaBOqb0di/+VZS8d02suMOXcKLQ==} engines: {node: '>=16'} dependencies: global-dirs: 3.0.1 dev: true - /@cspell/cspell-service-bus@7.3.2: - resolution: {integrity: sha512-i2sPnUSsFJXc5afijbUsUtv1YEXyO8EbJbXV0kdE6KVu7I0CSMV8jprJaG3X1m5HE6lGftNcpLKLHjSlFOFvsA==} + /@cspell/cspell-service-bus@7.3.8: + resolution: {integrity: sha512-3E7gwY6QILrZH83p69i9CERbRBEqeBiKCIKnAd7U2PbxfFqG/P47fqpnarzSWFwFpU92oyGsYry+wC8TEGISRQ==} engines: {node: '>=16'} dev: true - /@cspell/cspell-types@7.3.2: - resolution: {integrity: sha512-2lvRUfIgH9TvqGEDpuukuD6J84XPP8KFxR/qphtPZAzwg9SEpiagdN79eFlPe4ZI2xHNvwEsPDJUxuvxXu15wQ==} + /@cspell/cspell-types@7.3.8: + resolution: {integrity: sha512-hsOtaULDnawEL4pU0fga941GhvE8mbTbywrJBx+eGX3fnJsaUr8XQzCtnLsW2ko7WCLWFItNEhSSTPQHBFRLsw==} engines: {node: '>=16'} dev: true @@ -365,16 +365,16 @@ packages: resolution: {integrity: sha512-1YkCMWuna/EGIDN/zKkW+j98/55mxigftrSFgsehXhPld+ZMJM5J9UuBA88YfL7+/ETvBdd7mwW6IwWsC+/ltQ==} dev: true - /@cspell/dict-bash@4.1.1: - resolution: {integrity: sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==} + /@cspell/dict-bash@4.1.2: + resolution: {integrity: sha512-AEBWjbaMaJEyAjOHW0F15P2izBjli2cNerG3NjuVH7xX/HUUeNoTj8FF1nwpMufKwGQCvuyO2hCmkVxhJ0y55Q==} dev: true - /@cspell/dict-companies@3.0.21: - resolution: {integrity: sha512-u9b7qtCWYS728WqiJeAucJcjRs16Y1yGGwagS/w59SV25R0rXbXbPbQuX8wYDcaeIO8uRHGkbSWngx6O4qFoCQ==} + /@cspell/dict-companies@3.0.26: + resolution: {integrity: sha512-BGRZ/Uykx+IgQoTGqvRqbBMQy7QSuY0pbTHgtmKtc1scgzZMJQKMDwyuE6LJzlhdlrV7TsVY0lyXREybnDpQPQ==} dev: true - /@cspell/dict-cpp@5.0.4: - resolution: {integrity: sha512-Vmz/CCb2d91ES5juaO8+CFWeTa2AFsbpR8bkCPJq+P8cRP16+37tY0zNXEBSK/1ur4MakaRf76jeQBijpZxw0Q==} + /@cspell/dict-cpp@5.0.9: + resolution: {integrity: sha512-ql9WPNp8c+fhdpVpjpZEUWmxBHJXs9CJuiVVfW/iwv5AX7VuMHyEwid+9/6nA8qnCxkUQ5pW83Ums1lLjn8ScA==} dev: true /@cspell/dict-cryptocurrencies@4.0.0: @@ -385,8 +385,8 @@ packages: resolution: {integrity: sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==} dev: true - /@cspell/dict-css@4.0.7: - resolution: {integrity: sha512-NNlUTx/sYg+74kC0EtRewb7pjkEtPlIsu9JFNWAXa0JMTqqpQXqM3aEO4QJvUZFZF09bObeCAvzzxemAwxej7Q==} + /@cspell/dict-css@4.0.12: + resolution: {integrity: sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==} dev: true /@cspell/dict-dart@2.0.3: @@ -421,8 +421,8 @@ packages: resolution: {integrity: sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==} dev: true - /@cspell/dict-en_us@4.3.7: - resolution: {integrity: sha512-83V0XXqiXJvXa1pj5cVpviYKeLTN2Dxvouz8ullrwgcfPtY57pYBy+3ACVAMYK0eGByhRPc/xVXlIgv4o0BNZw==} + /@cspell/dict-en_us@4.3.10: + resolution: {integrity: sha512-EqmB22dEu6qUkA6f6eNYqXbUnklLgChKDAdRbKWKnyoca7bmxRPcOIUhPzELo+HSzZe8RlSgNG/vaL1fkPB3Yg==} dev: true /@cspell/dict-filetypes@3.0.1: @@ -449,8 +449,8 @@ packages: resolution: {integrity: sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==} dev: true - /@cspell/dict-golang@6.0.2: - resolution: {integrity: sha512-5pyZn4AAiYukAW+gVMIMVmUSkIERFrDX2vtPDjg8PLQUhAHWiVeQSDjuOhq9/C5GCCEZU/zWSONkGiwLBBvV9A==} + /@cspell/dict-golang@6.0.4: + resolution: {integrity: sha512-jOfewPEyN6U9Q80okE3b1PTYBfqZgHh7w4o271GSuAX+VKJ1lUDhdR4bPKRxSDdO5jHArw2u5C8nH2CWGuygbQ==} dev: true /@cspell/dict-haskell@4.0.1: @@ -461,16 +461,16 @@ packages: resolution: {integrity: sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==} dev: true - /@cspell/dict-html@4.0.3: - resolution: {integrity: sha512-Gae8i8rrArT0UyG1I6DHDK62b7Be6QEcBSIeWOm4VIIW1CASkN9B0qFgSVnkmfvnu1Y3H7SSaaEynKjdj3cs8w==} + /@cspell/dict-html@4.0.5: + resolution: {integrity: sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==} dev: true - /@cspell/dict-java@5.0.5: - resolution: {integrity: sha512-X19AoJgWIBwJBSWGFqSgHaBR/FEykBHTMjL6EqOnhIGEyE9nvuo32tsSHjXNJ230fQxQptEvRZoaldNLtKxsRg==} + /@cspell/dict-java@5.0.6: + resolution: {integrity: sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==} dev: true - /@cspell/dict-k8s@1.0.1: - resolution: {integrity: sha512-gc5y4Nm3hVdMZNBZfU2M1AsAmObZsRWjCUk01NFPfGhFBXyVne41T7E62rpnzu5330FV/6b/TnFcPgRmak9lLw==} + /@cspell/dict-k8s@1.0.2: + resolution: {integrity: sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==} dev: true /@cspell/dict-latex@4.0.0: @@ -481,32 +481,32 @@ packages: resolution: {integrity: sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==} dev: true - /@cspell/dict-lua@4.0.1: - resolution: {integrity: sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==} + /@cspell/dict-lua@4.0.2: + resolution: {integrity: sha512-eeC20Q+UnHcTVBK6pgwhSjGIVugO2XqU7hv4ZfXp2F9DxGx1RME0+1sKX4qAGhdFGwOBsEzb2fwUsAEP6Mibpg==} dev: true - /@cspell/dict-node@4.0.2: - resolution: {integrity: sha512-FEQJ4TnMcXEFslqBQkXa5HposMoCGsiBv2ux4IZuIXgadXeHKHUHk60iarWpjhzNzQLyN2GD7NoRMd12bK3Llw==} + /@cspell/dict-node@4.0.3: + resolution: {integrity: sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==} dev: true - /@cspell/dict-npm@5.0.8: - resolution: {integrity: sha512-KuqH8tEsFD6DPKqKwIfWr9E+admE3yghaC0AKXG8jPaf77N0lkctKaS3dm0oxWUXkYKA/eXj6LCtz3VcTyxFPg==} + /@cspell/dict-npm@5.0.12: + resolution: {integrity: sha512-T/+WeQmtbxo7ad6hrdI8URptYstKJP+kXyWJZfuVJJGWJQ7yubxrI5Z5AfM+Dh/ff4xHmdzapxD9adaEQ727uw==} dev: true - /@cspell/dict-php@4.0.2: - resolution: {integrity: sha512-7yglcmMoFHDPQXHW+9QAl8YjAToMm1qOi+4x/yGY1FSIEjZbCpjeDgyKMGg/NgpooQQceEN38AR59Pn23EDriA==} + /@cspell/dict-php@4.0.4: + resolution: {integrity: sha512-fRlLV730fJbulDsLIouZxXoxHt3KIH6hcLFwxaupHL+iTXDg0lo7neRpbqD5MScr/J3idEr7i9G8XWzIikKFug==} dev: true /@cspell/dict-powershell@5.0.2: resolution: {integrity: sha512-IHfWLme3FXE7vnOmMncSBxOsMTdNWd1Vcyhag03WS8oANSgX8IZ+4lMI00mF0ptlgchf16/OU8WsV4pZfikEFw==} dev: true - /@cspell/dict-public-licenses@2.0.3: - resolution: {integrity: sha512-JSLEdpEYufQ1H+93UHi+axlqQm1fhgK6kpdLHp6uPHu//CsvETcqNVawjB+qOdI/g38JTMw5fBqSd0aGNxa6Dw==} + /@cspell/dict-public-licenses@2.0.5: + resolution: {integrity: sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==} dev: true - /@cspell/dict-python@4.1.7: - resolution: {integrity: sha512-8GkO7/w1QEpu4Y1GTHGYHrwfc/ZdiBRw7D/BGYCIiOoQPLi0YxMke7wzRC3j246yrzLt28ntDBjr4fB3+uFZtQ==} + /@cspell/dict-python@4.1.9: + resolution: {integrity: sha512-JMA4v/ZPJWuDt3PPFz+23VIY3iDIB+xOTQ6nw+WkcJU5yr6FUl5zMU9ModKrgujg3jGRuuJqofErZVPqHNHYAA==} dependencies: '@cspell/dict-data-science': 1.0.11 dev: true @@ -515,8 +515,8 @@ packages: resolution: {integrity: sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==} dev: true - /@cspell/dict-ruby@5.0.0: - resolution: {integrity: sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==} + /@cspell/dict-ruby@5.0.1: + resolution: {integrity: sha512-rruTm7Emhty/BSYavSm8ZxRuVw0OBqzJkwIFXcV0cX7To8D1qbmS9HFHRuRg8IL11+/nJvtdDz+lMFBSmPUagQ==} dev: true /@cspell/dict-rust@4.0.1: @@ -527,12 +527,12 @@ packages: resolution: {integrity: sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==} dev: true - /@cspell/dict-software-terms@3.2.2: - resolution: {integrity: sha512-DmdS/qAyJVmKKku4ab89HVZhsvRIk84HoPUVIZ/zJhmuCO+LF45Ylzy1/7G32MYLjbG/o1Ze3UvbaE9HY4FKKA==} + /@cspell/dict-software-terms@3.3.7: + resolution: {integrity: sha512-9hkp25tQQYVdan4eYRxhj8HvVyinA5/tFv4+l6CcXO887obTrFuvSCVEGeexFObcDaMDnfE1XD8NuCoGc/KXfw==} dev: true - /@cspell/dict-sql@2.1.1: - resolution: {integrity: sha512-v1mswi9NF40+UDUMuI148YQPEQvWjac72P6ZsjlRdLjEiQEEMEsTQ+zlkIdnzC9QCNyJaqD5Liq9Mn78/8Zxtw==} + /@cspell/dict-sql@2.1.2: + resolution: {integrity: sha512-Pi0hAcvsSGtZZeyyAN1VfGtQJbrXos5x2QjJU0niAQKhmITSOrXU/1II1Gogk+FYDjWyV9wP2De0U2f7EWs6oQ==} dev: true /@cspell/dict-svelte@1.0.2: @@ -543,67 +543,45 @@ packages: resolution: {integrity: sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==} dev: true - /@cspell/dict-typescript@3.1.1: - resolution: {integrity: sha512-N9vNJZoOXmmrFPR4ir3rGvnqqwmQGgOYoL1+y6D4oIhyr7FhaYiyF/d7QT61RmjZQcATMa6PSL+ZisCeRLx9+A==} + /@cspell/dict-typescript@3.1.2: + resolution: {integrity: sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==} dev: true /@cspell/dict-vue@3.0.0: resolution: {integrity: sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==} dev: true - /@cspell/dynamic-import@7.3.2: - resolution: {integrity: sha512-G2ZBPC08X3lUQmHRobGdFYxb3oTSuSIfpW1P/oTMovqbuVoQh108W2WXv0Va40LVGkQD9OS31ZafHbcLELANeA==} + /@cspell/dynamic-import@7.3.8: + resolution: {integrity: sha512-s8x7dH/ScfW0pFEIvNFo4JOR7YmvM2wZSHOykmWTJCQ8k2EQ/+uECPp6ZxkoJoukTz8sj+3KzF0fRl5mKxPd6g==} engines: {node: '>=16'} dependencies: import-meta-resolve: 3.0.0 dev: true - /@cspell/strong-weak-map@7.3.2: - resolution: {integrity: sha512-Y2JL8A/CG37NnreVtU3DhvcOuYWNEAKUmOSU9NfBeOoptWwTMBvbNF5UbOpmZrf2BXc8OmdHIogIWHXYIESiyg==} + /@cspell/strong-weak-map@7.3.8: + resolution: {integrity: sha512-qNnt2wG45wb8JP54mENarnQgxfSYKPp3zlYID/2przbMNmVJRqUlcIBOdLI6plCgGeNkzJTl3T9T1ATbnN+LLw==} engines: {node: '>=16'} dev: true /@ddietr/codemirror-themes@1.4.2: resolution: {integrity: sha512-8U3H3lmtmSWLD5VRlt7jf2HW62URnwgPxjZZDYjBX5EtMpgZ2QnqiIYrNzdQPPjJngT9D43gls3+JlekCBmrfw==} dependencies: - '@codemirror/language': 6.9.0 - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.18.0 + '@codemirror/language': 6.9.1 + '@codemirror/state': 6.3.1 + '@codemirror/view': 6.21.3 '@lezer/highlight': 1.1.6 dev: false - /@electron/asar@3.2.4: - resolution: {integrity: sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g==} + /@electron/asar@3.2.7: + resolution: {integrity: sha512-8FaSCAIiZGYFWyjeevPQt+0e9xCK9YmJ2Rjg5SXgdsXon6cRnU0Yxnbe6CvJbQn26baifur2Y2G5EBayRIsjyg==} engines: {node: '>=10.12.0'} hasBin: true dependencies: - chromium-pickle-js: 0.2.0 commander: 5.1.0 glob: 7.2.3 minimatch: 3.1.2 dev: false - /@esbuild-kit/cjs-loader@2.4.2: - resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} - dependencies: - '@esbuild-kit/core-utils': 3.2.2 - get-tsconfig: 4.7.0 - dev: true - - /@esbuild-kit/core-utils@3.2.2: - resolution: {integrity: sha512-Ub6LaRaAgF80dTSzUdXpFLM1pVDdmEVB9qb5iAzSpyDlX/mfJTFGOnZ516O05p5uWWteNviMKi4PAyEuRxI5gA==} - dependencies: - esbuild: 0.18.20 - source-map-support: 0.5.21 - dev: true - - /@esbuild-kit/esm-loader@2.5.5: - resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} - dependencies: - '@esbuild-kit/core-utils': 3.2.2 - get-tsconfig: 4.7.0 - dev: true - /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -613,8 +591,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.4: - resolution: {integrity: sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==} + /@esbuild/android-arm64@0.19.5: + resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -631,8 +609,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.4: - resolution: {integrity: sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==} + /@esbuild/android-arm@0.19.5: + resolution: {integrity: sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -649,8 +627,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.4: - resolution: {integrity: sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==} + /@esbuild/android-x64@0.19.5: + resolution: {integrity: sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -667,8 +645,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.4: - resolution: {integrity: sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==} + /@esbuild/darwin-arm64@0.19.5: + resolution: {integrity: sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -685,8 +663,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.4: - resolution: {integrity: sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==} + /@esbuild/darwin-x64@0.19.5: + resolution: {integrity: sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -703,8 +681,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.4: - resolution: {integrity: sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==} + /@esbuild/freebsd-arm64@0.19.5: + resolution: {integrity: sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -721,8 +699,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.4: - resolution: {integrity: sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==} + /@esbuild/freebsd-x64@0.19.5: + resolution: {integrity: sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -739,8 +717,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.4: - resolution: {integrity: sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==} + /@esbuild/linux-arm64@0.19.5: + resolution: {integrity: sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -757,8 +735,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.4: - resolution: {integrity: sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==} + /@esbuild/linux-arm@0.19.5: + resolution: {integrity: sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -775,8 +753,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.4: - resolution: {integrity: sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==} + /@esbuild/linux-ia32@0.19.5: + resolution: {integrity: sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -793,8 +771,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.4: - resolution: {integrity: sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==} + /@esbuild/linux-loong64@0.19.5: + resolution: {integrity: sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -811,8 +789,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.4: - resolution: {integrity: sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==} + /@esbuild/linux-mips64el@0.19.5: + resolution: {integrity: sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -829,8 +807,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.4: - resolution: {integrity: sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==} + /@esbuild/linux-ppc64@0.19.5: + resolution: {integrity: sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -847,8 +825,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.4: - resolution: {integrity: sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==} + /@esbuild/linux-riscv64@0.19.5: + resolution: {integrity: sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -865,8 +843,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.4: - resolution: {integrity: sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==} + /@esbuild/linux-s390x@0.19.5: + resolution: {integrity: sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -883,8 +861,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.4: - resolution: {integrity: sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==} + /@esbuild/linux-x64@0.19.5: + resolution: {integrity: sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -901,8 +879,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.4: - resolution: {integrity: sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==} + /@esbuild/netbsd-x64@0.19.5: + resolution: {integrity: sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -919,8 +897,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.4: - resolution: {integrity: sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==} + /@esbuild/openbsd-x64@0.19.5: + resolution: {integrity: sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -937,8 +915,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.4: - resolution: {integrity: sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==} + /@esbuild/sunos-x64@0.19.5: + resolution: {integrity: sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -955,8 +933,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.4: - resolution: {integrity: sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==} + /@esbuild/win32-arm64@0.19.5: + resolution: {integrity: sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -973,8 +951,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.4: - resolution: {integrity: sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==} + /@esbuild/win32-ia32@0.19.5: + resolution: {integrity: sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -991,8 +969,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.4: - resolution: {integrity: sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==} + /@esbuild/win32-x64@0.19.5: + resolution: {integrity: sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1000,18 +978,18 @@ packages: dev: false optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.51.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + /@eslint-community/regexpp@4.9.1: + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -1022,7 +1000,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.21.0 + globals: 13.23.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1032,8 +1010,8 @@ packages: - supports-color dev: true - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.51.0: + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -1057,32 +1035,34 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@lezer/common@1.0.4: - resolution: {integrity: sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg==} + /@lezer/common@1.1.0: + resolution: {integrity: sha512-XPIN3cYDXsoJI/oDWoR2tD++juVrhgIago9xyKhZ7IhGlzdDM9QgC8D8saKNCz5pindGcznFr2HBSsEQSWnSjw==} dev: false /@lezer/css@1.1.3: resolution: {integrity: sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==} dependencies: '@lezer/highlight': 1.1.6 - '@lezer/lr': 1.3.10 + '@lezer/lr': 1.3.13 dev: false /@lezer/highlight@1.1.6: resolution: {integrity: sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==} dependencies: - '@lezer/common': 1.0.4 + '@lezer/common': 1.1.0 dev: false - /@lezer/lr@1.3.10: - resolution: {integrity: sha512-BZfVvf7Re5BIwJHlZXbJn9L8lus5EonxQghyn+ih8Wl36XMFBPTXC0KM0IdUtj9w/diPHsKlXVgL+AlX2jYJ0Q==} + /@lezer/lr@1.3.13: + resolution: {integrity: sha512-RLAbau/4uSzKgIKj96mI5WUtG1qtiR0Frn0Ei9zhPj8YOkHM+1Bb8SgdVvmR/aWJCFIzjo2KFnDiRZ75Xf5NdQ==} dependencies: - '@lezer/common': 1.0.4 + '@lezer/common': 1.1.0 dev: false - /@ljharb/through@2.3.9: - resolution: {integrity: sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==} + /@ljharb/through@2.3.11: + resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 dev: true /@nodelib/fs.scandir@2.1.5: @@ -1111,104 +1091,104 @@ packages: engines: {node: '>= 18'} dev: false - /@octokit/core@5.0.0: - resolution: {integrity: sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==} + /@octokit/core@5.0.1: + resolution: {integrity: sha512-lyeeeZyESFo+ffI801SaBKmCfsvarO+dgV8/0gD8u1d87clbEdWsP5yC+dSj3zLhb2eIf5SJrn6vDz9AheETHw==} engines: {node: '>= 18'} dependencies: '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.0.1 - '@octokit/request': 8.1.1 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 + '@octokit/graphql': 7.0.2 + '@octokit/request': 8.1.4 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.0.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.0 dev: false - /@octokit/endpoint@9.0.0: - resolution: {integrity: sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==} + /@octokit/endpoint@9.0.1: + resolution: {integrity: sha512-hRlOKAovtINHQPYHZlfyFwaM8OyetxeoC81lAkBy34uLb8exrZB50SQdeW3EROqiY9G9yxQTpp5OHTV54QD+vA==} engines: {node: '>= 18'} dependencies: - '@octokit/types': 11.1.0 + '@octokit/types': 12.0.0 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: false - /@octokit/graphql@7.0.1: - resolution: {integrity: sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==} + /@octokit/graphql@7.0.2: + resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==} engines: {node: '>= 18'} dependencies: - '@octokit/request': 8.1.1 - '@octokit/types': 11.1.0 + '@octokit/request': 8.1.4 + '@octokit/types': 12.0.0 universal-user-agent: 6.0.0 dev: false - /@octokit/openapi-types@18.0.0: - resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==} + /@octokit/openapi-types@19.0.0: + resolution: {integrity: sha512-PclQ6JGMTE9iUStpzMkwLCISFn/wDeRjkZFIKALpvJQNBGwDoYYi2fFvuHwssoQ1rXI5mfh6jgTgWuddeUzfWw==} dev: false - /@octokit/plugin-paginate-rest@8.0.0(@octokit/core@5.0.0): - resolution: {integrity: sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==} + /@octokit/plugin-paginate-rest@9.0.0(@octokit/core@5.0.1): + resolution: {integrity: sha512-oIJzCpttmBTlEhBmRvb+b9rlnGpmFgDtZ0bB6nq39qIod6A5DP+7RkVLMOixIgRCYSHDTeayWqmiJ2SZ6xgfdw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=5' dependencies: - '@octokit/core': 5.0.0 - '@octokit/types': 11.1.0 + '@octokit/core': 5.0.1 + '@octokit/types': 12.0.0 dev: false - /@octokit/plugin-request-log@4.0.0(@octokit/core@5.0.0): + /@octokit/plugin-request-log@4.0.0(@octokit/core@5.0.1): resolution: {integrity: sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=5' dependencies: - '@octokit/core': 5.0.0 + '@octokit/core': 5.0.1 dev: false - /@octokit/plugin-rest-endpoint-methods@9.0.0(@octokit/core@5.0.0): - resolution: {integrity: sha512-KquMF/VB1IkKNiVnzJKspY5mFgGyLd7HzdJfVEGTJFzqu9BRFNWt+nwTCMuUiWc72gLQhRWYubTwOkQj+w/1PA==} + /@octokit/plugin-rest-endpoint-methods@10.0.1(@octokit/core@5.0.1): + resolution: {integrity: sha512-fgS6HPkPvJiz8CCliewLyym9qAx0RZ/LKh3sATaPfM41y/O2wQ4Z9MrdYeGPVh04wYmHFmWiGlKPC7jWVtZXQA==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=5' dependencies: - '@octokit/core': 5.0.0 - '@octokit/types': 11.1.0 + '@octokit/core': 5.0.1 + '@octokit/types': 12.0.0 dev: false - /@octokit/request-error@5.0.0: - resolution: {integrity: sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==} + /@octokit/request-error@5.0.1: + resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==} engines: {node: '>= 18'} dependencies: - '@octokit/types': 11.1.0 + '@octokit/types': 12.0.0 deprecation: 2.3.1 once: 1.4.0 dev: false - /@octokit/request@8.1.1: - resolution: {integrity: sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==} + /@octokit/request@8.1.4: + resolution: {integrity: sha512-M0aaFfpGPEKrg7XoA/gwgRvc9MSXHRO2Ioki1qrPDbl1e9YhjIwVoHE7HIKmv/m3idzldj//xBujcFNqGX6ENA==} engines: {node: '>= 18'} dependencies: - '@octokit/endpoint': 9.0.0 - '@octokit/request-error': 5.0.0 - '@octokit/types': 11.1.0 + '@octokit/endpoint': 9.0.1 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.0.0 is-plain-object: 5.0.0 universal-user-agent: 6.0.0 dev: false - /@octokit/rest@20.0.1: - resolution: {integrity: sha512-wROV21RwHQIMNb2Dgd4+pY+dVy1Dwmp85pBrgr6YRRDYRBu9Gb+D73f4Bl2EukZSj5hInq2Tui9o7gAQpc2k2Q==} + /@octokit/rest@20.0.2: + resolution: {integrity: sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ==} engines: {node: '>= 18'} dependencies: - '@octokit/core': 5.0.0 - '@octokit/plugin-paginate-rest': 8.0.0(@octokit/core@5.0.0) - '@octokit/plugin-request-log': 4.0.0(@octokit/core@5.0.0) - '@octokit/plugin-rest-endpoint-methods': 9.0.0(@octokit/core@5.0.0) + '@octokit/core': 5.0.1 + '@octokit/plugin-paginate-rest': 9.0.0(@octokit/core@5.0.1) + '@octokit/plugin-request-log': 4.0.0(@octokit/core@5.0.1) + '@octokit/plugin-rest-endpoint-methods': 10.0.1(@octokit/core@5.0.1) dev: false - /@octokit/types@11.1.0: - resolution: {integrity: sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==} + /@octokit/types@12.0.0: + resolution: {integrity: sha512-EzD434aHTFifGudYAygnFlS1Tl6KhbTynEWELQXIbTY8Msvb5nEqTZIm7sbPEt4mQYLZwu3zPKVdeIrw0g7ovg==} dependencies: - '@octokit/openapi-types': 18.0.0 + '@octokit/openapi-types': 19.0.0 dev: false /@pnpm/config.env-replace@1.1.0: @@ -1269,141 +1249,141 @@ packages: dependencies: defer-to-connect: 2.0.1 - /@types/adm-zip@0.5.0: - resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} + /@types/adm-zip@0.5.3: + resolution: {integrity: sha512-LfeDIiFdvphelYY2aMWTyQBr5cTb1EL9Qcu19jFizdt2sL/jL+fy1fE8IgAKBFI5XfbGukaRDDM5PiJTrovAhA==} dependencies: - '@types/node': 18.17.14 + '@types/node': 18.18.6 dev: true /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: - '@types/http-cache-semantics': 4.0.1 + '@types/http-cache-semantics': 4.0.3 '@types/keyv': 3.1.4 - '@types/node': 18.17.14 - '@types/responselike': 1.0.0 + '@types/node': 18.18.6 + '@types/responselike': 1.0.2 dev: true - /@types/configstore@6.0.0: - resolution: {integrity: sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==} + /@types/configstore@6.0.1: + resolution: {integrity: sha512-ML2U2xzN6PwCh1I6QgWI3TdzS7CRLsv5DSCLX4/Wfg+f30JF60WgS9ZbVOOrTk+N67WTCSUKm6Q7k6M/BjbXQw==} dev: true - /@types/cookiejar@2.1.2: - resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} + /@types/cookiejar@2.1.3: + resolution: {integrity: sha512-LZ8SD3LpNmLMDLkG2oCBjZg+ETnx6XdCjydUE0HwojDmnDfDUnhMKKbtth1TZh+hzcqb03azrYWoXLS8sMXdqg==} dev: true - /@types/highlightjs@9.12.2: - resolution: {integrity: sha512-oW2pEKwshxwBW1nVUizWQg/tnhboRtKrUKnF2hd6l4BZ0shr5ZjQ4ra/82+NEH6uWeM8JjrMGCux5enQXOQbTA==} + /@types/highlightjs@9.12.4: + resolution: {integrity: sha512-1ur6XlwXQLcYnOmJgluvwF/S6eAcFnemhzl65MhXqu84OB9IbGMXMq1E9mJFYVaxeV8kCcQUBjG41blBAkGbPQ==} dev: true - /@types/http-cache-semantics@4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + /@types/http-cache-semantics@4.0.3: + resolution: {integrity: sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==} - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.17.14 + '@types/node': 18.18.6 dev: true - /@types/lodash@4.14.198: - resolution: {integrity: sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==} + /@types/lodash@4.14.200: + resolution: {integrity: sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==} dev: true - /@types/node@18.17.14: - resolution: {integrity: sha512-ZE/5aB73CyGqgQULkLG87N9GnyGe5TcQjv34pwS8tfBs1IkCh0ASM69mydb2znqd6v0eX+9Ytvk6oQRqu8T1Vw==} + /@types/node@18.18.6: + resolution: {integrity: sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==} - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + /@types/normalize-package-data@2.4.3: + resolution: {integrity: sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg==} dev: true - /@types/prompts@2.4.4: - resolution: {integrity: sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A==} + /@types/prompts@2.4.7: + resolution: {integrity: sha512-5zTamE+QQM4nR6Ab3yHK+ovWuhLJXaa2ZLt3mT1en8U3ubWtjVT1vXDaVFC2+cL89uVn7Y+gIq5B3IcVvBl5xQ==} dependencies: - '@types/node': 18.17.14 + '@types/node': 18.18.6 kleur: 3.0.3 dev: true - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + /@types/prop-types@15.7.9: + resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} dev: true - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + /@types/react-dom@18.2.14: + resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.29 dev: true - /@types/react-reconciler@0.28.4: - resolution: {integrity: sha512-Xd55E2aLI9Q/ikDQEmfRzIwYJs4oO0h9ZHA3FZDakzt1WR6JMZcpqtCZlF97I72KVjoY4rHXU5TfvkRDOyr/rg==} + /@types/react-reconciler@0.28.6: + resolution: {integrity: sha512-NlilRDg7yjtFX568NA046OiHWbz5EKM1q5FSXi2GP7WKyU+Vem4NJQcG+ZaMiWotyPiYqkIb6NKJkFuplbchAA==} dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.29 dev: true /@types/react@17.0.2: resolution: {integrity: sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==} dependencies: - '@types/prop-types': 15.7.5 + '@types/prop-types': 15.7.9 csstype: 3.1.2 dev: true - /@types/react@18.2.21: - resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} + /@types/react@18.2.29: + resolution: {integrity: sha512-Z+ZrIRocWtdD70j45izShRwDuiB4JZqDegqMFW/I8aG5DxxLKOzVNoq62UIO82v9bdgi+DO1jvsb9sTEZUSm+Q==} dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 + '@types/prop-types': 15.7.9 + '@types/scheduler': 0.16.5 csstype: 3.1.2 dev: true - /@types/responselike@1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + /@types/responselike@1.0.2: + resolution: {integrity: sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA==} dependencies: - '@types/node': 18.17.14 + '@types/node': 18.18.6 dev: true - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + /@types/scheduler@0.16.5: + resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} dev: true - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + /@types/semver@7.5.4: + resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@types/superagent@4.1.18: - resolution: {integrity: sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==} + /@types/superagent@4.1.20: + resolution: {integrity: sha512-GfpwJgYSr3yO+nArFkmyqv3i0vZavyEG5xPd/o95RwpKYpsOKJYI5XLdxLpdRbZI3YiGKKdIOFIf/jlP7A0Jxg==} dependencies: - '@types/cookiejar': 2.1.2 - '@types/node': 18.17.14 + '@types/cookiejar': 2.1.3 + '@types/node': 18.18.6 dev: true - /@types/update-notifier@6.0.5: - resolution: {integrity: sha512-uUOhxsJ3edPHu06r3k4I2yJ4eoyqBt+53ra9+caXEx0ruoPwqNHTlkq75CUvI4yWsrCA5+31tih+opunLCYnXw==} + /@types/update-notifier@6.0.6: + resolution: {integrity: sha512-kySKKtYW9ExZC0SsflB6dBcZnMMfxit3s+rzmSIo/hFGL0YDm1RVDZA5VRukzwESoyT8gAMHHOaYZpJPsndh0Q==} dependencies: - '@types/configstore': 6.0.0 + '@types/configstore': 6.0.1 boxen: 7.1.1 dev: true - /@types/ws@8.5.5: - resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} + /@types/ws@8.5.8: + resolution: {integrity: sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==} dependencies: - '@types/node': 18.17.14 + '@types/node': 18.18.6 dev: true - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + /@types/yargs-parser@21.0.2: + resolution: {integrity: sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==} dev: true - /@types/yargs@17.0.24: - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + /@types/yargs@17.0.29: + resolution: {integrity: sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==} dependencies: - '@types/yargs-parser': 21.0.0 + '@types/yargs-parser': 21.0.2 dev: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1413,26 +1393,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.6.0 + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.51.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.2.2) + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} + /@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1441,27 +1421,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.51.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.6.0: - resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} + /@typescript-eslint/scope-manager@6.8.0: + resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 dev: true - /@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} + /@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1470,23 +1450,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.48.0 - ts-api-utils: 1.0.2(typescript@5.2.2) + eslint: 8.51.0 + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.6.0: - resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} + /@typescript-eslint/types@6.8.0: + resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): - resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} + /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2): + resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1494,42 +1474,42 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.2.2) + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} + /@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - eslint: 8.48.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.6.0: - resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} + /@typescript-eslint/visitor-keys@6.8.0: + resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/types': 6.8.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1569,8 +1549,8 @@ packages: uri-js: 4.4.1 dev: true - /all-package-names@2.0.732: - resolution: {integrity: sha512-sQqderEdnRc1hkAG2Rc/SRdUGFnwOAVkdB4/4AhO94gNd2kFzGFVdEQdso0bJ9+W7gshMKk4yRdfrGVVf/KFoA==} + /all-package-names@2.0.765: + resolution: {integrity: sha512-g7Lm/lkMLMhcqemYDPt6tmpNTcx/58QPKWcv+Je1bg6WdXNjV55cE/wkeWz1fnWQIw4Ej2XyGQ7Pxfv2vJP/MA==} hasBin: true dependencies: commander-version: 1.1.0 @@ -1692,8 +1672,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 is-string: 1.0.7 dev: true @@ -1712,8 +1692,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 dev: true @@ -1722,8 +1702,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 dev: true @@ -1731,8 +1711,8 @@ packages: resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 dev: true @@ -1743,8 +1723,8 @@ packages: dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 @@ -1859,14 +1839,14 @@ packages: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} - /cacheable-request@10.2.13: - resolution: {integrity: sha512-3SD4rrMu1msNGEtNSt8Od6enwdo//U9s4ykmXfA2TD58kcLkCobtCDiby7kNyj7a/Q7lz/mAesAFI54rTdnvBA==} + /cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} engines: {node: '>=14.16'} dependencies: - '@types/http-cache-semantics': 4.0.1 + '@types/http-cache-semantics': 4.0.3 get-stream: 6.0.1 http-cache-semantics: 4.1.1 - keyv: 4.5.3 + keyv: 4.5.4 mimic-response: 4.0.0 normalize-url: 8.0.0 responselike: 3.0.0 @@ -1878,7 +1858,7 @@ packages: clone-response: 1.0.3 get-stream: 5.2.0 http-cache-semantics: 4.1.1 - keyv: 4.5.3 + keyv: 4.5.4 lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 @@ -1887,7 +1867,7 @@ packages: /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.1 dev: true @@ -1963,12 +1943,8 @@ packages: fsevents: 2.3.3 dev: false - /chromium-pickle-js@0.2.0: - resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} - dev: false - - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} /clean-stack@4.2.0: @@ -2004,8 +1980,8 @@ packages: restore-cursor: 3.1.0 dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + /cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} engines: {node: '>=6'} dev: true @@ -2056,16 +2032,16 @@ packages: engines: {node: '>=0.10.0'} dev: true - /codemirror@6.0.1(@lezer/common@1.0.4): + /codemirror@6.0.1(@lezer/common@1.1.0): resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.18.0)(@lezer/common@1.0.4) - '@codemirror/commands': 6.2.5 - '@codemirror/language': 6.9.0 - '@codemirror/lint': 6.4.1 - '@codemirror/search': 6.5.2 - '@codemirror/state': 6.2.1 - '@codemirror/view': 6.18.0 + '@codemirror/autocomplete': 6.10.2(@codemirror/language@6.9.1)(@codemirror/state@6.3.1)(@codemirror/view@6.21.3)(@lezer/common@1.1.0) + '@codemirror/commands': 6.3.0 + '@codemirror/language': 6.9.1 + '@codemirror/lint': 6.4.2 + '@codemirror/search': 6.5.4 + '@codemirror/state': 6.3.1 + '@codemirror/view': 6.21.3 transitivePeerDependencies: - '@lezer/common' dev: false @@ -2096,8 +2072,8 @@ packages: commander: 6.2.1 dev: true - /commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} dev: true @@ -2155,8 +2131,8 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.4(typescript@5.2.2): - resolution: {integrity: sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==} + /cosmiconfig@8.3.6(typescript@5.2.2): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -2190,114 +2166,114 @@ packages: dependencies: type-fest: 1.4.0 - /cspell-dictionary@7.3.2: - resolution: {integrity: sha512-hL8fOZ7zTkUuE6jq2CUObxUp0fSLsNQyMo+HAkpg0w6ssHvbgnP6HP8kyEN641L/F0X/Ow2vo3CaRBadvyyzCA==} + /cspell-dictionary@7.3.8: + resolution: {integrity: sha512-gkq4t78eLR0xC3P0vDDHPeNY4iZRd5YE6Z8uDJ7RM4UaX/TSdVUN9KNFr34RnJ119NYVHujpL9+uW7wPSAe8Eg==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-types': 7.3.2 - cspell-trie-lib: 7.3.2 + '@cspell/cspell-pipe': 7.3.8 + '@cspell/cspell-types': 7.3.8 + cspell-trie-lib: 7.3.8 fast-equals: 4.0.3 - gensequence: 5.0.2 + gensequence: 6.0.0 dev: true - /cspell-gitignore@7.3.2: - resolution: {integrity: sha512-NWxxFcf4wwKbRInkZK/p/BrPR2ElCpcB8DLcrBxRkiI4uX7yCX8v5QjI8ZpTyuaUTl9aFqJFYtj9Q7GqkBnPzA==} + /cspell-gitignore@7.3.8: + resolution: {integrity: sha512-vJzCOUEiw6/MwV/U4Ux3bgSdj9mXB+X5eHL+qzVoyFI7ArlvrkuGTL+iFJThQcS8McM3SGqtvaBNCiKBmAeCkA==} engines: {node: '>=16'} hasBin: true dependencies: - cspell-glob: 7.3.2 + cspell-glob: 7.3.8 find-up: 5.0.0 dev: true - /cspell-glob@7.3.2: - resolution: {integrity: sha512-R/YwtBN5ApOTONkBoTOSCKDMmnRRA1fF9prkaFMfE0aT5oC2VF0N7hLCSYjpQM+kYsXeqLDc13vxFBOnHRuc3g==} + /cspell-glob@7.3.8: + resolution: {integrity: sha512-wUZC6znyxEs0wlhzGfZ4XHkATPJyazJIFi/VvAdj+KHe7U8SoSgitJVDQqdgectI2y3MxR7lQdVLX9dONFh+7A==} engines: {node: '>=16'} dependencies: micromatch: 4.0.5 dev: true - /cspell-grammar@7.3.2: - resolution: {integrity: sha512-ale40T4M0jHmwQsPjIbpZKzaRxMVy5dnpyvplwj7ExX4sp2Grt1wcqxk2ELS4r4bsaIap+iIfeYYhoXqYq1dQg==} + /cspell-grammar@7.3.8: + resolution: {integrity: sha512-nTjAlMAZAVSFhBd9U3MB9l5FfC5JCCr9DTOA2wWxusVOm+36MbSEH90ucLPkhPa9/+0HtbpDhqVMwXCZllRpsg==} engines: {node: '>=16'} hasBin: true dependencies: - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-types': 7.3.2 + '@cspell/cspell-pipe': 7.3.8 + '@cspell/cspell-types': 7.3.8 dev: true - /cspell-io@7.3.2: - resolution: {integrity: sha512-nul6K4YUMe1VdxuJDDOMvWUw/hIS2UZkvJLDo5GkAus7YmGSR0knfDueU+hebYszRa0LxjrduuPNcNJE/ZWUFg==} + /cspell-io@7.3.8: + resolution: {integrity: sha512-XrxPbaiek7EZh+26k9RYVz2wKclaMqM6mXBiu/kpFAHRHHfz91ado6xWvyxZ7UAxQ8ixEwZ+oz9TU+k21gHzyw==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-service-bus': 7.3.2 + '@cspell/cspell-service-bus': 7.3.8 node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: true - /cspell-lib@7.3.2: - resolution: {integrity: sha512-cbo0TSL2JnM/GdiutH193aynxdxSnxBR1DYJ1/8ycIWDU0p4AHO0EZ+5L5MkBFwpM20OicuXvLrAem9WjYVDBQ==} + /cspell-lib@7.3.8: + resolution: {integrity: sha512-2L770sI5DdsAKVzO3jxmfP2fz4LryW6dzL93BpN7WU+ebFC6rg4ioa5liOJV4WoDo2fNQMSeqfW4Aawu9zWR7A==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-bundled-dicts': 7.3.2 - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-resolver': 7.3.2 - '@cspell/cspell-types': 7.3.2 - '@cspell/dynamic-import': 7.3.2 - '@cspell/strong-weak-map': 7.3.2 + '@cspell/cspell-bundled-dicts': 7.3.8 + '@cspell/cspell-pipe': 7.3.8 + '@cspell/cspell-resolver': 7.3.8 + '@cspell/cspell-types': 7.3.8 + '@cspell/dynamic-import': 7.3.8 + '@cspell/strong-weak-map': 7.3.8 clear-module: 4.1.2 comment-json: 4.2.3 configstore: 6.0.0 cosmiconfig: 8.0.0 - cspell-dictionary: 7.3.2 - cspell-glob: 7.3.2 - cspell-grammar: 7.3.2 - cspell-io: 7.3.2 - cspell-trie-lib: 7.3.2 + cspell-dictionary: 7.3.8 + cspell-glob: 7.3.8 + cspell-grammar: 7.3.8 + cspell-io: 7.3.8 + cspell-trie-lib: 7.3.8 fast-equals: 5.0.1 find-up: 6.3.0 - gensequence: 5.0.2 + gensequence: 6.0.0 import-fresh: 3.3.0 resolve-from: 5.0.0 - vscode-languageserver-textdocument: 1.0.8 - vscode-uri: 3.0.7 + vscode-languageserver-textdocument: 1.0.11 + vscode-uri: 3.0.8 transitivePeerDependencies: - encoding dev: true - /cspell-trie-lib@7.3.2: - resolution: {integrity: sha512-IXNCWBw4UDZuY6MB+j7YNdcDpTdcfElsLkwTV8fEmNfUeClJacn2mQicQ/LKZJLvOc1TNbcSPWSCe3kQA+uxNw==} + /cspell-trie-lib@7.3.8: + resolution: {integrity: sha512-UQx1Bazbyz2eQJ/EnMohINnUdZvAQL+OcQU3EPPbNWM1DWF4bJGgmFXKNCRYfJk6wtOZVXG5g5AZXx9KnHeN9A==} engines: {node: '>=16'} dependencies: - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-types': 7.3.2 - gensequence: 5.0.2 + '@cspell/cspell-pipe': 7.3.8 + '@cspell/cspell-types': 7.3.8 + gensequence: 6.0.0 dev: true - /cspell@7.3.2: - resolution: {integrity: sha512-/YY1C0CYBP+GueFon1BUgcDGc1YXDCyAIjuebvRygjt1cXwCklQVF5bZIGCrimgjzTrY+wx0ePgzuVQ9RyJnOQ==} + /cspell@7.3.8: + resolution: {integrity: sha512-8AkqsBQAMsKYV5XyJLB6rBs5hgspL4+MPOg6mBKG2j5EvQgRVc6dIfAPWDNLpIeW2a3+7K5BIWqKHapKPeiknQ==} engines: {node: '>=16'} hasBin: true dependencies: - '@cspell/cspell-json-reporter': 7.3.2 - '@cspell/cspell-pipe': 7.3.2 - '@cspell/cspell-types': 7.3.2 - '@cspell/dynamic-import': 7.3.2 + '@cspell/cspell-json-reporter': 7.3.8 + '@cspell/cspell-pipe': 7.3.8 + '@cspell/cspell-types': 7.3.8 + '@cspell/dynamic-import': 7.3.8 chalk: 5.3.0 chalk-template: 1.1.0 - commander: 11.0.0 - cspell-gitignore: 7.3.2 - cspell-glob: 7.3.2 - cspell-io: 7.3.2 - cspell-lib: 7.3.2 + commander: 11.1.0 + cspell-gitignore: 7.3.8 + cspell-glob: 7.3.8 + cspell-io: 7.3.8 + cspell-lib: 7.3.8 fast-glob: 3.3.1 fast-json-stable-stringify: 2.1.0 - file-entry-cache: 6.0.1 + file-entry-cache: 7.0.1 get-stdin: 9.0.0 semver: 7.5.4 strip-ansi: 7.1.0 - vscode-uri: 3.0.7 + vscode-uri: 3.0.8 transitivePeerDependencies: - encoding dev: true @@ -2369,15 +2345,25 @@ packages: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + dev: true + /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} dev: true - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: + define-data-property: 1.1.1 has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true @@ -2407,8 +2393,8 @@ packages: path-type: 4.0.0 dev: true - /discord-types@1.3.26: - resolution: {integrity: sha512-ToG51AOCH+JTQf7b+8vuYQe5Iqwz7nZ7StpECAZ/VZcI1ZhQk13pvt9KkRTfRv1xNvwJ2qib4e3+RifQlo8VPQ==} + /discord-types@1.3.3: + resolution: {integrity: sha512-6LGLIw8RBWKdio7FoIfwExSZQuej2XXDKgT7mfR3qMOpEspknVDFQJcfhPuiD1iy2NdcAygvvVfJMliYwiUwqw==} dependencies: '@types/react': 17.0.2 moment: 2.29.4 @@ -2467,8 +2453,8 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.22.1: - resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} + /es-abstract@1.22.2: + resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 @@ -2482,7 +2468,7 @@ packages: get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has: 1.0.3 + has: 1.0.4 has-property-descriptors: 1.0.0 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -2495,10 +2481,10 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.12 is-weakref: 1.0.2 - object-inspect: 1.12.3 + object-inspect: 1.13.0 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 string.prototype.trim: 1.2.8 @@ -2512,22 +2498,22 @@ packages: which-typed-array: 1.1.11 dev: true - /es-iterator-helpers@1.0.14: - resolution: {integrity: sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==} + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} dependencies: asynciterator.prototype: 1.0.0 call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-set-tostringtag: 2.0.1 - function-bind: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.1 globalthis: 1.0.3 has-property-descriptors: 1.0.0 has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - iterator.prototype: 1.1.1 + iterator.prototype: 1.1.2 safe-array-concat: 1.0.1 dev: true @@ -2536,14 +2522,14 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 - has: 1.0.3 + has: 1.0.4 has-tostringtag: 1.0.0 dev: true /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: - has: 1.0.3 + has: 1.0.4 dev: true /es-to-primitive@1.2.1: @@ -2555,14 +2541,14 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-sass-plugin@2.16.0(esbuild@0.19.4): + /esbuild-sass-plugin@2.16.0(esbuild@0.19.5): resolution: {integrity: sha512-mGCe9MxNYvZ+j77Q/QFO+rwUGA36mojDXkOhtVmoyz1zwYbMaNrtVrmXwwYDleS/UMKTNU3kXuiTtPiAD3K+Pw==} peerDependencies: esbuild: ^0.19.4 dependencies: - esbuild: 0.19.4 + esbuild: 0.19.5 resolve: 1.22.8 - sass: 1.66.1 + sass: 1.69.4 dev: false /esbuild@0.18.20: @@ -2595,34 +2581,34 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: true - /esbuild@0.19.4: - resolution: {integrity: sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==} + /esbuild@0.19.5: + resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.4 - '@esbuild/android-arm64': 0.19.4 - '@esbuild/android-x64': 0.19.4 - '@esbuild/darwin-arm64': 0.19.4 - '@esbuild/darwin-x64': 0.19.4 - '@esbuild/freebsd-arm64': 0.19.4 - '@esbuild/freebsd-x64': 0.19.4 - '@esbuild/linux-arm': 0.19.4 - '@esbuild/linux-arm64': 0.19.4 - '@esbuild/linux-ia32': 0.19.4 - '@esbuild/linux-loong64': 0.19.4 - '@esbuild/linux-mips64el': 0.19.4 - '@esbuild/linux-ppc64': 0.19.4 - '@esbuild/linux-riscv64': 0.19.4 - '@esbuild/linux-s390x': 0.19.4 - '@esbuild/linux-x64': 0.19.4 - '@esbuild/netbsd-x64': 0.19.4 - '@esbuild/openbsd-x64': 0.19.4 - '@esbuild/sunos-x64': 0.19.4 - '@esbuild/win32-arm64': 0.19.4 - '@esbuild/win32-ia32': 0.19.4 - '@esbuild/win32-x64': 0.19.4 + '@esbuild/android-arm': 0.19.5 + '@esbuild/android-arm64': 0.19.5 + '@esbuild/android-x64': 0.19.5 + '@esbuild/darwin-arm64': 0.19.5 + '@esbuild/darwin-x64': 0.19.5 + '@esbuild/freebsd-arm64': 0.19.5 + '@esbuild/freebsd-x64': 0.19.5 + '@esbuild/linux-arm': 0.19.5 + '@esbuild/linux-arm64': 0.19.5 + '@esbuild/linux-ia32': 0.19.5 + '@esbuild/linux-loong64': 0.19.5 + '@esbuild/linux-mips64el': 0.19.5 + '@esbuild/linux-ppc64': 0.19.5 + '@esbuild/linux-riscv64': 0.19.5 + '@esbuild/linux-s390x': 0.19.5 + '@esbuild/linux-x64': 0.19.5 + '@esbuild/netbsd-x64': 0.19.5 + '@esbuild/openbsd-x64': 0.19.5 + '@esbuild/sunos-x64': 0.19.5 + '@esbuild/win32-arm64': 0.19.5 + '@esbuild/win32-ia32': 0.19.5 + '@esbuild/win32-x64': 0.19.5 dev: false /escalade@3.1.1: @@ -2649,33 +2635,33 @@ packages: engines: {node: '>=12'} dev: true - /eslint-plugin-es@3.0.1(eslint@8.48.0): + /eslint-plugin-es@3.0.1(eslint@8.51.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.48.0 + eslint: 8.51.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-node@11.1.0(eslint@8.48.0): + /eslint-plugin-node@11.1.0(eslint@8.51.0): resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: - eslint: 8.48.0 - eslint-plugin-es: 3.0.1(eslint@8.48.0) + eslint: 8.51.0 + eslint-plugin-es: 3.0.1(eslint@8.51.0) eslint-utils: 2.1.0 ignore: 5.2.4 minimatch: 3.1.2 - resolve: 1.22.4 + resolve: 1.22.8 semver: 7.5.4 dev: true - /eslint-plugin-react@7.33.2(eslint@8.48.0): + /eslint-plugin-react@7.33.2(eslint@8.51.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -2685,8 +2671,8 @@ packages: array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 - es-iterator-helpers: 1.0.14 - eslint: 8.48.0 + es-iterator-helpers: 1.0.15 + eslint: 8.51.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -2695,9 +2681,9 @@ packages: object.hasown: 1.1.3 object.values: 1.1.7 prop-types: 15.8.1 - resolve: 2.0.0-next.4 + resolve: 2.0.0-next.5 semver: 7.5.4 - string.prototype.matchall: 4.0.9 + string.prototype.matchall: 4.0.10 dev: true /eslint-scope@7.2.2: @@ -2725,15 +2711,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@eslint-community/regexpp': 4.8.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 + '@eslint/js': 8.51.0 '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -2752,7 +2738,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.21.0 + globals: 13.23.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -2939,7 +2925,14 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.1.1 + dev: true + + /file-entry-cache@7.0.1: + resolution: {integrity: sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==} + engines: {node: '>=12.0.0'} + dependencies: + flat-cache: 3.1.1 dev: true /fill-range@7.0.1: @@ -2972,17 +2965,17 @@ packages: path-exists: 5.0.0 dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 - keyv: 4.5.3 + flatted: 3.2.9 + keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /for-each@0.3.3: @@ -3012,16 +3005,17 @@ packages: requiresBuild: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 functions-have-names: 1.2.3 dev: true @@ -3029,9 +3023,9 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensequence@5.0.2: - resolution: {integrity: sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==} - engines: {node: '>=14'} + /gensequence@6.0.0: + resolution: {integrity: sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==} + engines: {node: '>=16'} dev: true /get-caller-file@2.0.5: @@ -3042,8 +3036,8 @@ packages: /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: - function-bind: 1.1.1 - has: 1.0.3 + function-bind: 1.1.2 + has: 1.0.4 has-proto: 1.0.1 has-symbols: 1.0.3 dev: true @@ -3072,8 +3066,8 @@ packages: get-intrinsic: 1.2.1 dev: true - /get-tsconfig@4.7.0: - resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -3111,8 +3105,8 @@ packages: dependencies: ini: 2.0.0 - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -3122,7 +3116,7 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 dev: true /globby@11.1.0: @@ -3161,7 +3155,7 @@ packages: '@sindresorhus/is': 4.6.0 '@szmarczak/http-timer': 4.0.6 '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.0 + '@types/responselike': 1.0.2 cacheable-lookup: 5.0.4 cacheable-request: 7.0.4 decompress-response: 6.0.0 @@ -3178,7 +3172,7 @@ packages: '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 cacheable-lookup: 7.0.0 - cacheable-request: 10.2.13 + cacheable-request: 10.2.14 decompress-response: 6.0.0 form-data-encoder: 2.1.4 get-stream: 6.0.1 @@ -3250,11 +3244,9 @@ packages: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} @@ -3426,11 +3418,11 @@ packages: through: 2.3.8 dev: true - /inquirer@9.2.10: - resolution: {integrity: sha512-tVVNFIXU8qNHoULiazz612GFl+yqNfjMTbLuViNJE/d860Qxrd3NMrse8dm40VUQLOQeULvaQF8lpAhvysjeyA==} + /inquirer@9.2.11: + resolution: {integrity: sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==} engines: {node: '>=14.18.0'} dependencies: - '@ljharb/through': 2.3.9 + '@ljharb/through': 2.3.11 ansi-escapes: 4.3.2 chalk: 5.3.0 cli-cursor: 3.1.0 @@ -3452,7 +3444,7 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 - has: 1.0.3 + has: 1.0.4 side-channel: 1.0.4 dev: true @@ -3505,12 +3497,12 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.8.0 + ci-info: 3.9.0 /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: - has: 1.0.3 + has: 1.0.4 /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -3602,7 +3594,7 @@ packages: /is-name-taken@2.0.0: resolution: {integrity: sha512-W+FUWF5g7ONVJTx3rldZeVizmPzrMMUdscpSQ96vyYerx+4b2NcqaujLJJDWruGzE0FjzGZO9RFIipOGxx/WIw==} dependencies: - all-package-names: 2.0.732 + all-package-names: 2.0.765 package-name-conflict: 1.0.3 validate-npm-package-name: 3.0.0 dev: true @@ -3781,13 +3773,14 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /iterator.prototype@1.1.1: - resolution: {integrity: sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ==} + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 get-intrinsic: 1.2.1 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 dev: true /js-tokens@4.0.0: @@ -3830,8 +3823,8 @@ packages: object.values: 1.1.7 dev: true - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 @@ -4176,7 +4169,7 @@ packages: hasBin: true dependencies: chalk: 5.3.0 - cosmiconfig: 8.3.4(typescript@5.2.2) + cosmiconfig: 8.3.6(typescript@5.2.2) del: 7.1.0 escape-goat: 4.0.0 escape-string-regexp: 5.0.0 @@ -4187,7 +4180,7 @@ packages: hosted-git-info: 6.1.1 ignore-walk: 6.0.3 import-local: 3.1.0 - inquirer: 9.2.10 + inquirer: 9.2.11 is-installed-globally: 0.4.0 is-interactive: 2.0.0 is-scoped: 3.0.0 @@ -4197,7 +4190,7 @@ packages: log-symbols: 5.1.0 meow: 12.1.1 new-github-release-url: 2.0.0 - npm-name: 7.1.0 + npm-name: 7.1.1 onetime: 6.0.0 open: 9.1.0 ow: 1.1.1 @@ -4217,8 +4210,8 @@ packages: - zenObservable dev: true - /npm-name@7.1.0: - resolution: {integrity: sha512-0Sxf+7tQUOkQ9HuYVSdvq7gZNAOPp1ZJjHiKzpJhsQw9m1YjNfARC0SxWuuUWefChsbvu+DWrwWFfGQWLHmLjg==} + /npm-name@7.1.1: + resolution: {integrity: sha512-lyOwsFndLoozriMEsaqJ5lXvhCATYOEhDvxlom8TNvB9a/htDXuLgpVhMUOBd9zCewUXCyBXAPxrGr2TK2adgQ==} engines: {node: '>=12'} dependencies: got: 11.8.6 @@ -4257,8 +4250,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /object-inspect@1.13.0: + resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==} dev: true /object-keys@1.1.1: @@ -4271,7 +4264,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -4281,8 +4274,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /object.fromentries@2.0.7: @@ -4290,15 +4283,15 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /object.values@1.1.7: @@ -4306,8 +4299,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /once@1.4.0: @@ -4365,7 +4358,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.1 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -4676,7 +4669,7 @@ packages: resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} engines: {node: '>=12.20'} dependencies: - '@types/normalize-package-data': 2.4.1 + '@types/normalize-package-data': 2.4.3 normalize-package-data: 3.0.3 parse-json: 5.2.0 type-fest: 2.19.0 @@ -4703,20 +4696,20 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 globalthis: 1.0.3 which-builtin-type: 1.1.3 dev: true - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 + define-properties: 1.2.1 + set-function-name: 2.0.1 dev: true /regexpp@3.2.0: @@ -4777,15 +4770,6 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true - dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -4793,10 +4777,9 @@ packages: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: false - /resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -4906,8 +4889,8 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass@1.66.1: - resolution: {integrity: sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==} + /sass@1.69.4: + resolution: {integrity: sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -4934,6 +4917,15 @@ packages: dependencies: lru-cache: 6.0.0 + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + dev: true + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4946,8 +4938,8 @@ packages: engines: {node: '>=8'} dev: true - /shiki@0.14.4: - resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} + /shiki@0.14.5: + resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} dependencies: ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 @@ -4960,7 +4952,7 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + object-inspect: 1.13.0 dev: true /signal-exit@3.0.7: @@ -4969,7 +4961,7 @@ packages: /simple-markdown@0.7.3: resolution: {integrity: sha512-uGXIc13NGpqfPeFJIt/7SHHxd6HekEJYtsdoCM06mEBPL9fQH/pSD7LRM6PZ7CKchpSvxKL4tvwMamqAaNDAyg==} dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.29 dev: true /sisteransi@1.0.5: @@ -5012,7 +5004,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true /spdx-exceptions@2.3.0: @@ -5023,17 +5015,17 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} dev: true /standalone-electron-types@1.0.0: resolution: {integrity: sha512-0HOi/tlTz3mjWhsAz4uRbpQcHMZ+ifj1JzWW9nugykOHClBBG77ps8QinrzX1eow4Iw2pnC+RFaSYRgufF4BOg==} dependencies: - '@types/node': 18.17.14 + '@types/node': 18.18.6 dev: false /string-width@1.0.2: @@ -5069,16 +5061,17 @@ packages: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.matchall@4.0.9: - resolution: {integrity: sha512-6i5hL3MqG/K2G43mWXWgP+qizFW/QH/7kCNN13JrJS5q48FN5IKksLDscexKP3dnmB6cdm9jlNgAsWNLpSykmA==} + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 side-channel: 1.0.4 dev: true @@ -5087,24 +5080,24 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /string_decoder@1.3.0: @@ -5247,8 +5240,8 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /ts-api-utils@1.0.2(typescript@5.2.2): - resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' @@ -5264,13 +5257,13 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /tsx@3.12.8: - resolution: {integrity: sha512-Lt9KYaRGF023tlLInPj8rgHwsZU8qWLBj4iRXNWxTfjIkU7canGL806AqKear1j722plHuiYNcL2ZCo6uS9UJA==} + /tsx@3.14.0: + resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.4.2 - '@esbuild-kit/core-utils': 3.2.2 - '@esbuild-kit/esm-loader': 2.5.5 + esbuild: 0.18.20 + get-tsconfig: 4.7.2 + source-map-support: 0.5.21 optionalDependencies: fsevents: 2.3.3 dev: true @@ -5305,8 +5298,8 @@ packages: engines: {node: '>=14.16'} dev: true - /type-fest@4.3.1: - resolution: {integrity: sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==} + /type-fest@4.5.0: + resolution: {integrity: sha512-diLQivFzddJl4ylL3jxSkEc39Tpw7o1QeEHIPxVwryDK2lpB7Nqhzhuo6v5/Ls08Z0yPSAhsyAWlv1/H0ciNmw==} engines: {node: '>=16'} dev: true @@ -5353,8 +5346,8 @@ packages: dependencies: is-typedarray: 1.0.0 - /typedoc@0.25.1(typescript@5.2.2): - resolution: {integrity: sha512-c2ye3YUtGIadxN2O6YwPEXgrZcvhlZ6HlhWZ8jQRNzwLPn2ylhdGqdR8HbyDRyALP8J6lmSANILCkkIdNPFxqA==} + /typedoc@0.25.2(typescript@5.2.2): + resolution: {integrity: sha512-286F7BeATBiWe/qC4PCOCKlSTwfnsLbC/4cZ68oGBbvAqb9vV33quEOXx7q176OXotD+JdEerdQ1OZGJ818lnA==} engines: {node: '>= 16'} hasBin: true peerDependencies: @@ -5363,7 +5356,7 @@ packages: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.3 - shiki: 0.14.4 + shiki: 0.14.5 typescript: 5.2.2 dev: true @@ -5461,8 +5454,8 @@ packages: builtins: 1.0.3 dev: true - /vscode-languageserver-textdocument@1.0.8: - resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} dev: true /vscode-oniguruma@1.7.0: @@ -5473,8 +5466,8 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true - /vscode-uri@3.0.7: - resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} + /vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} dev: true /w3c-keyname@2.2.8: @@ -5610,8 +5603,8 @@ packages: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - /ws@8.14.0: - resolution: {integrity: sha512-WR0RJE9Ehsio6U4TuM+LmunEsjQ5ncHlw4sn9ihD6RoJKZrVyH9FWV3dmnwu8B2aNib1OvG2X6adUCyFpQyWcg==} + /ws@8.14.2: + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5663,11 +5656,11 @@ packages: engines: {node: '>=12.20'} dev: true - /zod@3.22.2: - resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.48.0): + github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd(eslint@8.51.0): resolution: {tarball: https://codeload.github.com/dmitmel/eslint-config-dmitmel/tar.gz/d97129ec35235415c6ae6a42299f55cdbb5d75fd} id: github.com/dmitmel/eslint-config-dmitmel/d97129ec35235415c6ae6a42299f55cdbb5d75fd name: eslint-config-dmitmel @@ -5676,5 +5669,5 @@ packages: peerDependencies: eslint: '>=8.17.0' dependencies: - eslint: 8.48.0 + eslint: 8.51.0 dev: true From 9b1aa5842a2969c661ca0b714ff47595b676efeb Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:13:01 -0500 Subject: [PATCH 27/36] 4.7.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fd13d4bda..eb84f4811 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "replugged", - "version": "4.6.5", + "version": "4.7.0", "description": "A lightweight @discord client mod focused on simplicity and performance", "license": "MIT", "main": "dist/main.mjs", From 3503a4dacd8abccad391a4341db1b735583ec164 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:31:29 -0500 Subject: [PATCH 28/36] Add scripts to package --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index eb84f4811..6d6aaee28 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "files": [ "dist", "bin", + "scripts", "*.d.ts" ], "dependencies": { From 2f546eca3c74addb3345d4cc730cf60978b6285a Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:32:22 -0500 Subject: [PATCH 29/36] 4.7.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6d6aaee28..42e292c0f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "replugged", - "version": "4.7.0", + "version": "4.7.1", "description": "A lightweight @discord client mod focused on simplicity and performance", "license": "MIT", "main": "dist/main.mjs", From a4496c87ff6936a84ee71b0f568ac23dbb3d0f1a Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:36:08 -0500 Subject: [PATCH 30/36] Anotha one --- bin/index.mts | 5 ++++- bin/mono.mts | 2 ++ bin/release.mts | 2 ++ package.json | 3 ++- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/bin/index.mts b/bin/index.mts index 553c5fc6a..9f1f31a0f 100755 --- a/bin/index.mts +++ b/bin/index.mts @@ -1,4 +1,7 @@ -#!/usr/bin/env node +#!/usr/bin / env node + +// WARNING: any imported files need to be added to files in package.json + import asar from "@electron/asar"; import { copyFileSync, diff --git a/bin/mono.mts b/bin/mono.mts index 693107b4a..cda12d598 100644 --- a/bin/mono.mts +++ b/bin/mono.mts @@ -1,5 +1,7 @@ #!/usr/bin/env node +// WARNING: any imported files need to be added to files in package.json + import { existsSync, readdirSync } from "fs"; import path from "path"; import { directory } from "./index.mjs"; diff --git a/bin/release.mts b/bin/release.mts index 9343e6ee0..d7bd17ec4 100644 --- a/bin/release.mts +++ b/bin/release.mts @@ -1,3 +1,5 @@ +// WARNING: any imported files need to be added to files in package.json + import { existsSync, readFileSync, writeFileSync } from "fs"; import path from "path"; import prompts from "prompts"; diff --git a/package.json b/package.json index 42e292c0f..2f102045b 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,8 @@ "dist", "bin", "scripts", - "*.d.ts" + "*.d.ts", + "src/util.mts" ], "dependencies": { "@codemirror/lang-css": "^6.2.1", From 35bcc87811cc518bae35645453717d78d4493bc2 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:38:19 -0500 Subject: [PATCH 31/36] 4.7.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f102045b..4f12c92c6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "replugged", - "version": "4.7.1", + "version": "4.7.2", "description": "A lightweight @discord client mod focused on simplicity and performance", "license": "MIT", "main": "dist/main.mjs", From df21dc38953a15af0a80797c728e5deee2a69001 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:41:33 -0500 Subject: [PATCH 32/36] Oops --- bin/index.mts | 2 +- bin/mono.mts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/bin/index.mts b/bin/index.mts index 9f1f31a0f..9cb734e9c 100755 --- a/bin/index.mts +++ b/bin/index.mts @@ -1,4 +1,4 @@ -#!/usr/bin / env node +#!/usr/bin/env node // WARNING: any imported files need to be added to files in package.json diff --git a/bin/mono.mts b/bin/mono.mts index cda12d598..1164d5f3e 100644 --- a/bin/mono.mts +++ b/bin/mono.mts @@ -1,5 +1,3 @@ -#!/usr/bin/env node - // WARNING: any imported files need to be added to files in package.json import { existsSync, readdirSync } from "fs"; From 2433150289fc4bf2f6c85dc02261ee60f6802c21 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:44:45 -0500 Subject: [PATCH 33/36] Revert version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4f12c92c6..4cb5fd33e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "replugged", - "version": "4.7.2", + "version": "4.7.0", "description": "A lightweight @discord client mod focused on simplicity and performance", "license": "MIT", "main": "dist/main.mjs", From 379870b8a3e42318a9dee6eef1bcf399d55ab4df Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:45:41 -0500 Subject: [PATCH 34/36] 4.7.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4cb5fd33e..06cf2b012 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "replugged", - "version": "4.7.0", + "version": "4.7.3", "description": "A lightweight @discord client mod focused on simplicity and performance", "license": "MIT", "main": "dist/main.mjs", From 68ad7663c42913721b4688dc6c50d8cc31a09205 Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:50:05 -0500 Subject: [PATCH 35/36] Make tsx non dev dependency --- package.json | 2 +- pnpm-lock.yaml | 65 +++++++++++++++++++++++++------------------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index 06cf2b012..3f30cf2ea 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,6 @@ "prettier": "^3.0.3", "simple-markdown": "^0.7.3", "style-mod": "^4.1.0", - "tsx": "^3.14.0", "type-fest": "^4.5.0", "typedoc": "^0.25.2", "typescript": "^5.2.2" @@ -93,6 +92,7 @@ "prompts": "^2.4.2", "semver": "^7.5.4", "standalone-electron-types": "^1.0.0", + "tsx": "^3.14.0", "update-notifier": "^6.0.2", "ws": "^8.14.2", "yargs": "^17.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b748711ee..0d4ad3d15 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,6 +59,9 @@ dependencies: standalone-electron-types: specifier: ^1.0.0 version: 1.0.0 + tsx: + specifier: ^3.14.0 + version: 3.14.0 update-notifier: specifier: ^6.0.2 version: 6.0.2 @@ -151,9 +154,6 @@ devDependencies: style-mod: specifier: ^4.1.0 version: 4.1.0 - tsx: - specifier: ^3.14.0 - version: 3.14.0 type-fest: specifier: ^4.5.0 version: 4.5.0 @@ -588,7 +588,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/android-arm64@0.19.5: @@ -606,7 +606,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/android-arm@0.19.5: @@ -624,7 +624,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/android-x64@0.19.5: @@ -642,7 +642,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/darwin-arm64@0.19.5: @@ -660,7 +660,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/darwin-x64@0.19.5: @@ -678,7 +678,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/freebsd-arm64@0.19.5: @@ -696,7 +696,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/freebsd-x64@0.19.5: @@ -714,7 +714,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-arm64@0.19.5: @@ -732,7 +732,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-arm@0.19.5: @@ -750,7 +750,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-ia32@0.19.5: @@ -768,7 +768,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-loong64@0.19.5: @@ -786,7 +786,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-mips64el@0.19.5: @@ -804,7 +804,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-ppc64@0.19.5: @@ -822,7 +822,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-riscv64@0.19.5: @@ -840,7 +840,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-s390x@0.19.5: @@ -858,7 +858,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/linux-x64@0.19.5: @@ -876,7 +876,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/netbsd-x64@0.19.5: @@ -894,7 +894,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/openbsd-x64@0.19.5: @@ -912,7 +912,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/sunos-x64@0.19.5: @@ -930,7 +930,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/win32-arm64@0.19.5: @@ -948,7 +948,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/win32-ia32@0.19.5: @@ -966,7 +966,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true + dev: false optional: true /@esbuild/win32-x64@0.19.5: @@ -1810,7 +1810,7 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true + dev: false /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -2579,7 +2579,7 @@ packages: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - dev: true + dev: false /esbuild@0.19.5: resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} @@ -3003,6 +3003,7 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: false optional: true /function-bind@1.1.2: @@ -3070,7 +3071,7 @@ packages: resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: resolve-pkg-maps: 1.0.0 - dev: true + dev: false /github-url-from-git@1.5.0: resolution: {integrity: sha512-WWOec4aRI7YAykQ9+BHmzjyNlkfJFG8QLXnDTsLz/kZefq7qkzdfo4p6fkYYMIq1aj+gZcQs/1HQhQh3DPPxlQ==} @@ -4768,7 +4769,7 @@ packages: /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: true + dev: false /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} @@ -4993,12 +4994,12 @@ packages: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true + dev: false /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true + dev: false /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -5266,7 +5267,7 @@ packages: source-map-support: 0.5.21 optionalDependencies: fsevents: 2.3.3 - dev: true + dev: false /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} From 4600232feca7f734d8304265fa5245ce98a8890f Mon Sep 17 00:00:00 2001 From: Albert Portnoy Date: Wed, 18 Oct 2023 21:53:58 -0500 Subject: [PATCH 36/36] 4.7.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3f30cf2ea..3568361c5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "replugged", - "version": "4.7.3", + "version": "4.7.4", "description": "A lightweight @discord client mod focused on simplicity and performance", "license": "MIT", "main": "dist/main.mjs",