From 95d8d9a58fcdf89d865fa63a1bf17765fca484c7 Mon Sep 17 00:00:00 2001 From: Tobias Hopp Date: Tue, 2 Apr 2024 01:41:51 +0200 Subject: [PATCH] Update --- .gitignore | 5 +- package-lock.json | 188 +++++++++++++++- src/CloudHandler.ts | 33 ++- src/ConfigHandler.ts | 58 +++++ src/IPCConstants.ts | 34 --- src/IPCHandler.ts | 2 +- src/OSHandler.ts | 2 +- src/RawConstants.ts | 78 +++++++ src/SmartMonopoly.ts | 33 ++- src/preload.ts | 2 +- src/web/App.tsx | 72 +------ src/web/Cloud.tsx | 25 --- src/web/GameHandler.ts | 47 ++++ src/web/IPCListener.ts | 25 +++ src/web/Setup.tsx | 367 +++++++++++++++++++++---------- src/web/Startup.tsx | 124 +++++++---- src/web/WiFi.tsx | 2 +- src/web/components.css | 3 + src/web/global.ts | 6 +- yarn.lock | 477 +++++++++++++++++------------------------ 20 files changed, 1006 insertions(+), 577 deletions(-) create mode 100644 src/ConfigHandler.ts delete mode 100644 src/IPCConstants.ts create mode 100644 src/RawConstants.ts delete mode 100644 src/web/Cloud.tsx create mode 100644 src/web/GameHandler.ts create mode 100644 src/web/IPCListener.ts diff --git a/.gitignore b/.gitignore index 8280af5..606adae 100644 --- a/.gitignore +++ b/.gitignore @@ -92,4 +92,7 @@ typings/ out/ # WebStorm -.idea/ \ No newline at end of file +.idea/ + +# Data Directory +data/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b915df0..8b01d30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,10 +14,12 @@ "@fontsource/roboto": "^5.0.12", "@mui/icons-material": "^5.15.14", "@mui/material": "^5.15.14", + "@types/websocket": "^1.0.10", "electron-squirrel-startup": "^1.0.0", "node-wifi-scanner": "git+https://git.gaminggeneration.de/tobiash/node-wifi-scanner", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "websocket": "^1.0.34" }, "devDependencies": { "@electron-forge/cli": "^7.3.1", @@ -1953,7 +1955,6 @@ "version": "20.11.30", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -2100,6 +2101,14 @@ "@types/node": "*" } }, + "node_modules/@types/websocket": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.10.tgz", + "integrity": "sha512-svjGZvPB7EzuYS94cI7a+qhwgGU1y89wUgjT6E2wVUfmAGIvRfT7obBvRtnhXCSsoMdlG4gBFGE7MfkIXZLoww==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/ws": { "version": "8.5.10", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", @@ -3212,6 +3221,18 @@ "dev": true, "license": "MIT" }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -3969,6 +3990,18 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -4873,6 +4906,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -4881,6 +4929,28 @@ "license": "MIT", "optional": true }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -5158,6 +5228,20 @@ "node": ">=10.13.0" } }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -5232,6 +5316,15 @@ "node": ">= 0.6" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -5462,6 +5555,14 @@ "dev": true, "license": "MIT" }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -7200,6 +7301,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -8180,6 +8286,11 @@ "dev": true, "license": "MIT" }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -8285,6 +8396,16 @@ "node": "^12.13 || ^14.13 || >=16" } }, + "node_modules/node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", @@ -11069,6 +11190,11 @@ "dev": true, "license": "0BSD" }, + "node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -11186,6 +11312,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/typescript": { "version": "4.5.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", @@ -11220,7 +11354,6 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, "license": "MIT" }, "node_modules/unique-filename": { @@ -11324,6 +11457,18 @@ "node": ">=8" } }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -11734,6 +11879,22 @@ "node": ">=10.13.0" } }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -11759,6 +11920,19 @@ "node": ">=0.8.0" } }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -11934,6 +12108,14 @@ "node": ">=10" } }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "engines": { + "node": ">=0.10.32" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/src/CloudHandler.ts b/src/CloudHandler.ts index 0e66856..3a03448 100644 --- a/src/CloudHandler.ts +++ b/src/CloudHandler.ts @@ -1,21 +1,36 @@ -import {client as WebSocketClient, connection} from "websocket"; +import {w3cwebsocket, IMessageEvent} from "websocket"; export default class CloudHandler { - private static websocket = new WebSocketClient(); - private static connection: connection; + + private static connection: w3cwebsocket; static connect() { return new Promise((resolve, reject) => { - this.websocket.connect("ws://smartmonopoly.iif.li"); - this.websocket.on("connectFailed", (err) => { + this.connection = new w3cwebsocket('wss://smartmonopoly.iif.li'); + this.connection.onerror = (err: Error) => { + this.connection = null; reject(err); - }); - this.websocket.on("connect", (connection) => { - this.connection = connection; + }; + + this.connection.onopen = () => { resolve(); - }); + }; + + this.connection.onclose = () => { + this.connection = null; + } + + this.connection.onmessage = (e) => this.handleMessage(e); }); + } + + private static handleMessage(e: IMessageEvent) + { } + + static isConnected(): boolean { + return !!this.connection; + } } \ No newline at end of file diff --git a/src/ConfigHandler.ts b/src/ConfigHandler.ts new file mode 100644 index 0000000..fbfede5 --- /dev/null +++ b/src/ConfigHandler.ts @@ -0,0 +1,58 @@ +import path from "path"; +import process from "process"; +import * as fs from "fs"; +import {Config, GameRules} from "./RawConstants"; + + + +export class ConfigHandler { + private static defaultConfig = { + rules: { + switchValues: {}, + inputValues: {} + } + } + + private static confPath = path.resolve(process.cwd(), "data", "config.json"); + + static generateDefault() { + fs.writeFileSync(this.confPath, JSON.stringify(this.defaultConfig, null, 1)); + } + + static get() { + if(!fs.existsSync(this.confPath)) + this.generateDefault(); + let confRaw = fs.readFileSync(this.confPath).toString('utf8'); + + try { + JSON.parse(confRaw); + }catch(e) + { + this.generateDefault(); + } + + console.log("Config retrieved!") + return JSON.parse(confRaw) as Config; + } + + static set(conf: Config) { + if(!fs.existsSync(this.confPath)) + this.generateDefault(); + let confRaw = fs.readFileSync(this.confPath).toString('utf8'); + + try { + JSON.parse(confRaw); + }catch(e) + { + this.generateDefault(); + } + + + let current = JSON.parse(confRaw) as Config; + current = {...current, ...conf}; + console.log("Config saved!") + fs.writeFileSync(this.confPath, JSON.stringify(current, null, 1)); + } + + +} \ No newline at end of file diff --git a/src/IPCConstants.ts b/src/IPCConstants.ts deleted file mode 100644 index e6871d3..0000000 --- a/src/IPCConstants.ts +++ /dev/null @@ -1,34 +0,0 @@ - - -export type IPCChannel = - 'WIFI_STATUS' - | 'WIFI_SCAN' - | 'WIFI_LIST' - | 'WIFI_CONNECT' - | 'FUNCTION_TEST' - | 'CLOUD_STATUS' - | 'CLOUD_CONNECT' - - -export interface IPCAnswer { - status: boolean, - data?: any -} - -export interface IPCRequest { - data?: any, -} - -export interface WiFiNetwork { - ssid: string, - isSecured: boolean, - isKnown?: boolean, - psk?: string, - rssi?: number, -} - -export interface FunctionTest { - hasSudo: boolean, - hasWPASupplicant: boolean, - hasInternet: boolean -} \ No newline at end of file diff --git a/src/IPCHandler.ts b/src/IPCHandler.ts index 490cae3..bcf23a9 100644 --- a/src/IPCHandler.ts +++ b/src/IPCHandler.ts @@ -1,6 +1,6 @@ import { ipcMain } from 'electron'; import IpcMainInvokeEvent = Electron.IpcMainInvokeEvent; -import {IPCAnswer, IPCChannel, IPCRequest} from "./IPCConstants"; +import {IPCAnswer, IPCChannel, IPCRequest} from "./RawConstants"; export const IPCHandler = ( diff --git a/src/OSHandler.ts b/src/OSHandler.ts index ce7e816..9bc38ee 100644 --- a/src/OSHandler.ts +++ b/src/OSHandler.ts @@ -1,4 +1,4 @@ -import {WiFiNetwork} from "./IPCConstants"; +import {WiFiNetwork} from "./RawConstants"; import {spawn, exec} from 'node:child_process'; import * as dns from "dns"; import * as process from "process"; diff --git a/src/RawConstants.ts b/src/RawConstants.ts new file mode 100644 index 0000000..6a70d96 --- /dev/null +++ b/src/RawConstants.ts @@ -0,0 +1,78 @@ +export type IPCChannel = + 'WIFI_SCAN' + | 'WIFI_CONNECT' + | 'FUNCTION_TEST' + | 'CLOUD_STATUS' + | 'CLOUD_CONNECT' + | 'SETTINGS' + | 'PREPARING' + +export enum IPCListenChannels { + 'KEYPAD_INPUT' +} + +export interface IPCAnswer { + status: boolean, + data?: any +} + +export interface IPCRequest { + data?: any, +} + +export interface WiFiNetwork { + ssid: string, + isSecured: boolean, + isKnown?: boolean, + psk?: string, + rssi?: number, +} + +export interface FunctionTest { + hasSudo: boolean, + hasWPASupplicant: boolean, + hasInternet: boolean +} + +export type GameSwitch = { + name: GameSwitchNames, + label: string, + depends?: GameSwitchNames, + value: boolean +} + +export type GameInput = { + name: GameInputNames, + type: "number" | "string", + label: string, + depends?: GameSwitchNames, + value: string +} + +export type GameSwitchNames = + "GET_BONUS_PASSING_START" + | "DOUBLE_BONUS_ON_GO" + | "PUT_PAID_PENALTIES_IN_MIDDLE" + | "RECEIVE_PENALTIES_AT_FREE_PARKING" + | "PUT_10_IN_MIDDLE_AFTER_EACH_GO" + | "STREET_MUST_BE_AUCTIONED_IF_NOT_PURCHASED" + | "TWO_HOTELS_PER_STREET_ALLOWED" + | "MORTGAGE_REDUCES_RENT" + | "GOODS_GO_TO_OTHER_PLAYERS_UPON_BANKRUPTCY" + | "STREETS_CAN_BE_SOLD_BACK_TO_THE_BANK" + | "PRISON_CAN_BE_PURCHASED_RENT_GOES_TO_PLAYER" + | "KEEP_MONEY_MORE_SECRET"; + +export type GameInputNames = + "PASSING_GO_CASH" + | "STARTING_CASH" + | "PRISON_RELEASE_FEE"; + +export interface GameRules { + switchValues: { [key in GameSwitchNames]?: boolean }, + inputValues: { [key in GameInputNames]?: string } +} + +export interface Config { + rules?: GameRules +} \ No newline at end of file diff --git a/src/SmartMonopoly.ts b/src/SmartMonopoly.ts index 5d6ec3e..a05c040 100644 --- a/src/SmartMonopoly.ts +++ b/src/SmartMonopoly.ts @@ -1,7 +1,8 @@ import {IPCHandler} from "./IPCHandler"; -import {FunctionTest, WiFiNetwork} from "./IPCConstants"; +import {FunctionTest, GameRules} from "./RawConstants"; import OSHandler from "./OSHandler"; import CloudHandler from "./CloudHandler"; +import {ConfigHandler} from "./ConfigHandler"; const wifiScan = require("node-wifi-scanner"); @@ -40,7 +41,7 @@ export default class SmartMonopoly { } }); - IPCHandler("WIFI_SCAN", async (e, request, args) => { + IPCHandler("WIFI_SCAN", async (e, request) => { try { let networks = await OSHandler.scanWifis(); return {status: true, data: networks}; @@ -49,13 +50,39 @@ export default class SmartMonopoly { } }); - IPCHandler("CLOUD_CONNECT", async (e, request, args) => { + IPCHandler("CLOUD_CONNECT", async (e, request) => { try { await CloudHandler.connect(); return {status: true} } catch (e) { return {status: false, data: e}; } + }); + + IPCHandler("SETTINGS", async(e, request) => { + if(request.data && request.data["rules"]) + { + let rules = request.data.rules as GameRules; + ConfigHandler.set({rules: rules}); + } + + return {status: true, data: ConfigHandler.get()}; + }); + + IPCHandler("PREPARING", async(e, request) => { + const useCloud = !!request.data.useCloud; + console.log("Preparing - useCloud: " + useCloud); + if(useCloud && !CloudHandler.isConnected()) + try { + await CloudHandler.connect(); + }catch(e) + { + return {status: false, data: 'Cloud connection issue: ' + e}; + } + + //todo when using cloud, get session etc. + + return {status: true}; }) } } \ No newline at end of file diff --git a/src/preload.ts b/src/preload.ts index a76b2a8..ea2d3aa 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -2,7 +2,7 @@ // https://www.electronjs.org/docs/latest/tutorial/process-model#preload-scripts import {ipcRenderer, contextBridge} from 'electron'; -import {IPCAnswer, IPCChannel, IPCRequest} from "./IPCConstants"; +import {IPCAnswer, IPCChannel, IPCRequest} from "./RawConstants"; import IpcRendererEvent = Electron.IpcRendererEvent; contextBridge.exposeInMainWorld('api', { diff --git a/src/web/App.tsx b/src/web/App.tsx index 39b25bf..3b25af2 100644 --- a/src/web/App.tsx +++ b/src/web/App.tsx @@ -2,7 +2,6 @@ import {createRoot} from 'react-dom/client'; import React, {Component} from "react"; import Startup from "./Startup"; import WiFi from "./WiFi"; -import Cloud from "./Cloud"; import Game from "./Game"; import GameSetup from "./GameSetup"; import GameEnd from "./GameEnd"; @@ -10,58 +9,8 @@ import Setup from "./Setup"; const root = createRoot(document.getElementById("root")); -//window.app = window.MyNamespace || {}; - -interface HeadingSwitcherState { - counter: number; -} - -class HeadingSwitcher extends Component<{}, HeadingSwitcherState> { - private interval: NodeJS.Timeout; - - constructor(props: {}) { - super(props); - this.state = {counter: 0}; - } - - componentDidMount() { - this.interval = setInterval(() => this.tick(), 500); - } - - componentWillUnmount() { - clearInterval(this.interval); - } - - tick() { - if (this.state.counter > 5) - this.setState({counter: 1}); - else - this.setState({counter: this.state.counter + 1}); - - - } - - render() { - switch (this.state.counter) { - case 1: - return

H1

; - case 2: - return

H2

; - case 3: - return

H3

; - case 4: - return

H4

; - case 5: - return
H5
; - case 6: - return
H6
; - } - } -} - - -enum PAGE { +export enum PAGE { STARTUP, SETUP, WIFI, @@ -83,7 +32,7 @@ export class App extends Component<{}, AppState> { constructor(props: {}) { super(props); this.state = { - currentPage: PAGE.SETUP, + currentPage: PAGE.GAME_SETUP, showWiFi: false, } } @@ -102,6 +51,13 @@ export class App extends Component<{}, AppState> { })); } + public setPage = (page: PAGE) => { + this.setState((prevState) => ({ + ...prevState, + currentPage: page + })); + } + render() { @@ -109,7 +65,7 @@ export class App extends Component<{}, AppState> {
{this.state.showWiFi ? : null} - {this.state.currentPage == PAGE.STARTUP ? { + {this.state.currentPage == PAGE.STARTUP || this.state.currentPage == PAGE.SETUP ? { App.PAGES.set(PAGE.STARTUP, ref); }}/> : null} @@ -117,14 +73,6 @@ export class App extends Component<{}, AppState> { App.PAGES.set(PAGE.SETUP, ref); }}/> : null} - {this.state.currentPage == PAGE.WIFI ? { - App.PAGES.set(PAGE.WIFI, ref); - }}/> : null} - - {this.state.currentPage == PAGE.CLOUD ? { - App.PAGES.set(PAGE.CLOUD, ref); - }}/> : null} - {this.state.currentPage == PAGE.GAME_SETUP ? { App.PAGES.set(PAGE.GAME_SETUP, ref); }}/> : null} diff --git a/src/web/Cloud.tsx b/src/web/Cloud.tsx deleted file mode 100644 index 909b1be..0000000 --- a/src/web/Cloud.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import {Component} from "react"; - - -interface CloudState { - -} - -export default class Cloud extends Component<{}, CloudState> { - constructor(props: {}) { - super(props); - } - - componentDidMount() { - - } - - componentWillUnmount() { - - } - - render() { - return

Test

- } - -} \ No newline at end of file diff --git a/src/web/GameHandler.ts b/src/web/GameHandler.ts new file mode 100644 index 0000000..7c4d191 --- /dev/null +++ b/src/web/GameHandler.ts @@ -0,0 +1,47 @@ +import {PAGE} from "./App"; + +export enum GAME_STATE { + NOT_STARTED, + PREPARING, + PLAYING, + END +} + +export default class GameHandler { + + static GAMESTATE: GAME_STATE = GAME_STATE.NOT_STARTED; + + static setGameState(state: GAME_STATE) + { + switch (state) + { + case GAME_STATE.NOT_STARTED: + window.app.setPage(PAGE.STARTUP); + break; + case GAME_STATE.PREPARING : + window.app.setPage(PAGE.GAME_SETUP); + break; + } + + this.GAMESTATE = state; + } + + static async requestPreparing(useCloud: boolean) + { + let response = await window.api.request("PREPARING", { + data: + { + useCloud: useCloud, + } + }); + + if(!response.status) + { + this.setGameState(GAME_STATE.NOT_STARTED); + throw new Error(response.data); + } + + this.setGameState(GAME_STATE.PREPARING); + return true; + } +} \ No newline at end of file diff --git a/src/web/IPCListener.ts b/src/web/IPCListener.ts new file mode 100644 index 0000000..ecd680b --- /dev/null +++ b/src/web/IPCListener.ts @@ -0,0 +1,25 @@ +import {IPCAnswer, IPCListenChannels} from "../RawConstants"; + +type IPCListen = { + channel: IPCListenChannels, + fn: (message: IPCAnswer, ...args: any) => void, +} + +export default class IPCListener { + private static attachments: Map = new Map(); + + + + public static attach() + { + for(let c of Object.keys(IPCListenChannels)) + { + window.api.listen((c as unknown as IPCListenChannels), (event, message: IPCAnswer, ...args: any) => { + for(let [a, listener] of this.attachments) + { + listener.fn(message, ...args); + } + }); + } + } +} \ No newline at end of file diff --git a/src/web/Setup.tsx b/src/web/Setup.tsx index b54f6b8..cdce4a3 100644 --- a/src/web/Setup.tsx +++ b/src/web/Setup.tsx @@ -1,117 +1,137 @@ import React, {Component} from "react"; -import {FormControl, FormControlLabel, FormGroup, FormLabel, Grid, Switch} from "@mui/material"; - -type GameSwitch = { - name: GameSwitchNames, - label: string, - depends?: GameSwitchNames, - value: boolean -} - -type GameSwitchNames = - "GET_BONUS_PASSING_START" - | "DOUBLE_BONUS_ON_GO" - | "PUT_PAID_PENALTIES_IN_MIDDLE" - | "RECEIVE_PENALTIES_AT_FREE_PARKING" - | "PUT_10_IN_MIDDLE_AFTER_EACH_GO" - | "STREET_MUST_BE_AUCTIONED_IF_NOT_PURCHASED" - | "TWO_HOTELS_PER_STREET_ALLOWED" - | "NO_MORTGAGE_ON_STREETS_WITH_BUILDINGS" - | "MORTGAGE_REDUCES_RENT" - | "GOODS_GO_TO_OTHER_PLAYERS_UPON_BANKRUPTCY" - | "STREETS_CAN_BE_SOLD_BACK_TO_THE_BANK" - | "PRISON_CAN_BE_PURCHASED_RENT_GOES_TO_PLAYER"; - -type GameInputs = { - "PASSING_GO_CASH": string, - "STARTING_CASH": string, - "PRISON_RELEASE_FEE": string -} +import { + Button, + FormControl, + FormControlLabel, + FormGroup, + FormLabel, + Grid, Snackbar, + Switch, + TextField, + Typography +} from "@mui/material"; +import RestartAltIcon from '@mui/icons-material/RestartAlt'; +import CloseIcon from '@mui/icons-material/Close'; +import SaveIcon from '@mui/icons-material/Save'; +import {PAGE} from "./App"; +import {GameInput, GameSwitch, GameRules, GameSwitchNames, GameInputNames, Config} from "../RawConstants"; interface InitialSetupState { open: boolean, switchValues: GameSwitch[], - inputValues: GameInputs + inputValues: GameInput[], + savedMsg: boolean } +const defaultConf: InitialSetupState = { + open: true, + savedMsg: false, + switchValues: [ + { + name: "GET_BONUS_PASSING_START", + label: "Über Los Bonus einziehen", + value: true + }, + { + name: "DOUBLE_BONUS_ON_GO", + label: "Wenn auf Los, doppelten Bonus einziehen", + depends: "GET_BONUS_PASSING_START", + value: true + }, + { + name: "PUT_PAID_PENALTIES_IN_MIDDLE", + label: "Gezahlte Strafen in die 'Mitte' legen", + value: true + }, + { + name: "RECEIVE_PENALTIES_AT_FREE_PARKING", + label: "Bei 'Frei Parken' Strafen aus der 'Mitte' einziehen", + depends: "PUT_PAID_PENALTIES_IN_MIDDLE", + value: true + }, + { + name: "PUT_10_IN_MIDDLE_AFTER_EACH_GO", + label: "Nach jedem Los 10 in die Mitte", + depends: "PUT_PAID_PENALTIES_IN_MIDDLE", + value: false + }, + { + name: "STREET_MUST_BE_AUCTIONED_IF_NOT_PURCHASED", + label: "Straße muss versteigert werden bei Nichtkauf", + value: true + }, + { + name: "TWO_HOTELS_PER_STREET_ALLOWED", + label: "Zwei Hotels pro Straße erlaubt", + value: false + }, + { + name: "MORTGAGE_REDUCES_RENT", + label: "Hypothek verringert Miete", + value: false + }, + { + name: "GOODS_GO_TO_OTHER_PLAYERS_UPON_BANKRUPTCY", + label: "Güter gehen an anderen Spieler über bei Bankrott", + value: true + }, + { + name: "STREETS_CAN_BE_SOLD_BACK_TO_THE_BANK", + label: "Straßen können zurück an die Bank verkauft werden", + value: true + }, + { + name: "PRISON_CAN_BE_PURCHASED_RENT_GOES_TO_PLAYER", + label: "Gefängnis kann erworben werden, Miete geht an den Spieler", + value: false + }, + { + name: "KEEP_MONEY_MORE_SECRET", + label: "Geld von anderen Spielern ungenauer anzeigen", + value: false + } + + ], + inputValues: [ + { + name: "STARTING_CASH", + type: "number", + label: "Start Guthaben", + value: "1500" + }, + { + name: "PASSING_GO_CASH", + type: "number", + label: "Lohn über Los", + value: "200" + }, + { + name: "PRISON_RELEASE_FEE", + type: "number", + label: "Gefängnis Gebühren", + value: "50" + } + ] +} + + export default class Setup extends Component<{}, InitialSetupState> { constructor(props: {}) { super(props); this.state = { - open: true, - switchValues: [ - { - name: "GET_BONUS_PASSING_START", - label: "Über Los Bonus einziehen", - value: true - }, - { - name: "DOUBLE_BONUS_ON_GO", - label: "Wenn auf Los, doppelten Bonus einziehen", - depends: "GET_BONUS_PASSING_START", - value: true - }, - { - name: "PUT_PAID_PENALTIES_IN_MIDDLE", - label: "Gezahlte Strafen in die 'Mitte' legen", - value: true - }, - { - name: "RECEIVE_PENALTIES_AT_FREE_PARKING", - label: "Bei 'Frei Parken' erhaltene Strafen", - depends: "PUT_PAID_PENALTIES_IN_MIDDLE", - value: true - }, - { - name: "PUT_10_IN_MIDDLE_AFTER_EACH_GO", - label: "Nach jedem Los 10 in die Mitte", - depends: "PUT_PAID_PENALTIES_IN_MIDDLE", - value: false - }, - { - name: "STREET_MUST_BE_AUCTIONED_IF_NOT_PURCHASED", - label: "Straße muss versteigert werden bei Nichtkauf", - value: true - }, - { - name: "TWO_HOTELS_PER_STREET_ALLOWED", - label: "Zwei Hotels pro Straße erlaubt", - value: false - }, - { - name: "NO_MORTGAGE_ON_STREETS_WITH_BUILDINGS", - label: "Keine Hypothek auf Straßen mit Bauten", - value: true - }, - { - name: "MORTGAGE_REDUCES_RENT", - label: "Hypothek verringert Miete", - value: false - }, - { - name: "GOODS_GO_TO_OTHER_PLAYERS_UPON_BANKRUPTCY", - label: "Güter gehen an anderen Spieler über bei Bankrott", - value: true - }, - { - name: "STREETS_CAN_BE_SOLD_BACK_TO_THE_BANK", - label: "Straßen können zurück an die Bank verkauft werden", - value: true - }, - { - name: "PRISON_CAN_BE_PURCHASED_RENT_GOES_TO_PLAYER", - label: "Gefängnis kann erworben werden, Miete geht an den Spieler", - value: false - } - ], - inputValues: { - "PASSING_GO_CASH": "200", - "STARTING_CASH": "1500", - "PRISON_RELEASE_FEE": "50" - } + ...defaultConf, } } + reset = () => { + this.setState(prevState => ({ + ...prevState, + ...defaultConf + })) + + //window.api.request("") + } + style = { position: 'absolute', top: '50%', @@ -125,7 +145,7 @@ export default class Setup extends Component<{}, InitialSetupState> { }; onSwitch = (event: React.ChangeEvent) => { - const { name, checked } = event.target; + const {name, checked} = event.target; this.setState((prevState) => ({ ...prevState, @@ -141,8 +161,94 @@ export default class Setup extends Component<{}, InitialSetupState> { })); } - componentDidMount() { + onInput = (event: React.ChangeEvent) => { + const {name, value} = event.target; + this.setState((prevState) => ({ + ...prevState, + inputValues: prevState.inputValues.map((switchObj) => { + if (switchObj.name === name) { + return { + ...switchObj, + value: value + }; + } + return switchObj; + }) + })); + } + + getSettings = () => { + return new Promise((resolve, reject) => { + window.api.request("SETTINGS", {}).then(answer => { + try { + let data = answer.data as Config; + for (let [sw, state] of Object.entries(data.rules.switchValues)) { + this.setState((prevState) => ({ + ...prevState, + switchValues: prevState.switchValues.map((obj) => { + if (obj.name === sw) { + return { + ...obj, + value: state + }; + } + return obj; + }) + })); + } + for (let [sw, state] of Object.entries(data.rules.inputValues)) { + this.setState((prevState) => ({ + ...prevState, + inputValues: prevState.inputValues.map((obj) => { + if (obj.name === sw) { + return { + ...obj, + value: state + }; + } + return obj; + }) + })); + } + resolve(); + } catch(e) + { + reject(e); + } + }) + }) + + } + + saveSettings = (silent = false) => { + let gameSettings: any = { + switchValues: {}, + inputValues: {} + }; + + + for (let ele of this.state.switchValues) { + gameSettings.switchValues[ele.name] = ele.value; + if(!!ele.depends && ele.value) + gameSettings.switchValues[ele.name] = this.checkDependsValue(ele.depends); + } + + for (let ele of this.state.inputValues) { + gameSettings.inputValues[ele.name] = ele.value; + } + + window.api.request("SETTINGS", {data: {rules: gameSettings as GameRules}}).then(); + + if (!silent) + this.setState(prevState => ({ + ...prevState, + savedMsg: true + })); + } + + componentDidMount() { + this.getSettings().then(); } componentWillUnmount() { @@ -153,27 +259,41 @@ export default class Setup extends Component<{}, InitialSetupState> { window.app.toggleWiFiSettings(false); } - checkDependsValue = (depends: string) => { - for(let x of this.state.switchValues) - { - if(x.name == depends) + checkDependsValue = (depends: GameSwitchNames) => { + for (let x of this.state.switchValues) { + if (x.name == depends) return x.value; } } render() { return
- + { + this.setState(prevState => ({ + ...prevState, + savedMsg: false + })) + }} + message={"Einstellungen gespeichert!"} + /> + Einstellungen + - Regeln + Schalter-Regeln {Object.values(this.state.switchValues).map(value => { return ( + } label={value.label} />) })} @@ -182,14 +302,37 @@ export default class Setup extends Component<{}, InitialSetupState> { - Standardwerte + Werte-Regeln - + {Object.values(this.state.inputValues).map(value => { + return ( + + } label={value.label} + />) + })} + + + + + + +
} diff --git a/src/web/Startup.tsx b/src/web/Startup.tsx index f5bfd9b..feb205d 100644 --- a/src/web/Startup.tsx +++ b/src/web/Startup.tsx @@ -2,41 +2,53 @@ import React, {Component} from "react"; import { Backdrop, Box, - CircularProgress, - Fade, - Modal, - Stack, - Typography, Button, + Chip, + CircularProgress, Dialog, - DialogTitle, DialogContent, DialogContentText, DialogActions, Chip, FormControl, Snackbar + DialogActions, + DialogContent, + DialogContentText, + DialogTitle, + Fade, + FormControl, + Modal, + Snackbar, + Stack, + Typography, Zoom } from "@mui/material"; -import {FunctionTest} from "../IPCConstants"; +import {FunctionTest} from "../RawConstants"; import SettingsIcon from '@mui/icons-material/Settings'; import PlayCircleIcon from '@mui/icons-material/PlayCircle'; import CloudOffIcon from '@mui/icons-material/CloudOff'; import CloudIcon from '@mui/icons-material/Cloud'; +import {PAGE} from "./App"; +import GameHandler from "./GameHandler"; + +interface StartupProps { + visible: boolean +} interface StartupState { statusTxt: string, openCloudConnectModal: boolean, showStartBtn: boolean, - isConnected: boolean, - cloudErrorMsg: string, + isCloudConnected: boolean, + snackErrorMsg: string, isConnectionIssue: boolean, startCounter: number, } -export default class Startup extends Component<{}, StartupState> { - constructor(props: {}) { +export default class Startup extends Component { + constructor(props: StartupProps) { super(props); this.state = { statusTxt: "Smart-Monopoly wird gestartet...", openCloudConnectModal: false, showStartBtn: false, - isConnected: false, + isCloudConnected: false, isConnectionIssue: false, - cloudErrorMsg: "", + snackErrorMsg: "", startCounter: 10, }; } @@ -62,7 +74,9 @@ export default class Startup extends Component<{}, StartupState> { let response = await window.api.request("CLOUD_CONNECT", {}); this.setState((prevState) => ({ ...prevState, - cloudErrorMsg: response.data.toString() + snackErrorMsg: response.data.toString(), + isCloudConnected: response.status, + isConnectionIssue: !response.status, })); console.log(response) return response.status; @@ -73,6 +87,27 @@ export default class Startup extends Component<{}, StartupState> { startupBtnClick = () => { // Startup handle + this.setState(prevState => ({ + ...prevState, + showStartBtn: false, + statusTxt: "Kapitalismus an die Macht!" + })); + setTimeout(async () => { + try { + let resp = await GameHandler.requestPreparing(this.state.isCloudConnected); + } catch(e) + { + this.setState(prevState => ({ + ...prevState, + showStartBtn: true, + snackErrorMsg: "Start fehlgeschlagen! \n" + e.toString() + })); + await this.cloudDecision(false); + } + }, 1500) + + + } style = { @@ -88,13 +123,12 @@ export default class Startup extends Component<{}, StartupState> { }; - async cloudDecision(decision: boolean) { this.setState((prevState) => ({ ...prevState, openCloudConnectModal: false, isConnectionIssue: false, - isConnected: false, + isCloudConnected: false, startCounter: 30 })); clearInterval(this.counterInterval); @@ -124,20 +158,19 @@ export default class Startup extends Component<{}, StartupState> { ...prevState, statusTxt: "Bereit zum Spielen?", showStartBtn: true, - isConnectionIssue: !connected, - isConnected: connected }) ) - if(connected) + if (connected) this.counterInterval = setInterval(() => { - if(this.state.startCounter == 0) { + if (!this.props.visible) return; + if (this.state.startCounter == 0) { clearInterval(this.counterInterval); this.startupBtnClick(); return; } this.setState((prevState) => ({ ...prevState, - startCounter: prevState.startCounter-1 + startCounter: prevState.startCounter - 1 })); }, 1000); @@ -151,29 +184,35 @@ export default class Startup extends Component<{}, StartupState> { startCounter: 30 })); this.counterInterval = setInterval(() => { - this.setState((prevState) => ({ - ...prevState, - startCounter: prevState.startCounter-1 - })); - if(this.state.startCounter == 0) { + if (!this.props.visible) return; + + if (this.state.startCounter == 0) { clearInterval(this.counterInterval); this.startupBtnClick(); + return; } + this.setState((prevState) => ({ + ...prevState, + startCounter: prevState.startCounter - 1 + })); + }, 1000); } } render() { - return
+ return
{this.setState(prevState => ({ - ...prevState, - cloudErrorMsg: "" - }))}} - message={this.state.cloudErrorMsg} + onClose={() => { + this.setState(prevState => ({ + ...prevState, + snackErrorMsg: "" + })) + }} + message={this.state.snackErrorMsg} /> { Dafür wird eine WiFi-Verbindung hergestellt

- + @@ -243,16 +283,24 @@ export default class Startup extends Component<{}, StartupState> { - {this.state.showStartBtn && } + - {this.state.showStartBtn && } + - this.setState(prevState => ({ + this.setState(prevState => ({ ...prevState, openCloudConnectModal: true - }))} label={this.state.isConnected ? : }/> + }))} label={this.state.isCloudConnected ? : }/>
diff --git a/src/web/WiFi.tsx b/src/web/WiFi.tsx index 7f63101..20f31c8 100644 --- a/src/web/WiFi.tsx +++ b/src/web/WiFi.tsx @@ -17,7 +17,7 @@ import { import WifiPasswordIcon from "@mui/icons-material/WifiPassword"; import WifiIcon from "@mui/icons-material/Wifi"; -import {IPCAnswer, WiFiNetwork} from "../IPCConstants"; +import {IPCAnswer, WiFiNetwork} from "../RawConstants"; interface WiFiState { diff --git a/src/web/components.css b/src/web/components.css index 64a05ed..bea3bf4 100644 --- a/src/web/components.css +++ b/src/web/components.css @@ -7,3 +7,6 @@ text-align: center; } +.hidden { + display: none; +} \ No newline at end of file diff --git a/src/web/global.ts b/src/web/global.ts index 6a5c7a9..3110d47 100644 --- a/src/web/global.ts +++ b/src/web/global.ts @@ -1,13 +1,13 @@ -import {IPCAnswer, IPCChannel, IPCRequest} from "../IPCConstants"; +import {IPCAnswer, IPCChannel, IPCListenChannels, IPCRequest} from "../RawConstants"; import IpcRendererEvent = Electron.IpcRendererEvent; -import {App} from "./App" +import {App} from "./App"; export {} declare global { interface Window { "api": { request: (channel: IPCChannel, request: IPCRequest, ...args: any) => Promise; - listen: (channel: IPCChannel, func: (event: IpcRendererEvent, message: IPCAnswer, ...args: any) => void) => void; + listen: (channel: IPCListenChannels, func: (event: IpcRendererEvent, message: IPCAnswer, ...args: any) => void) => void; } app: App; } diff --git a/yarn.lock b/yarn.lock index 5420285..b546230 100644 --- a/yarn.lock +++ b/yarn.lock @@ -320,7 +320,7 @@ glob "^7.1.6" minimatch "^3.0.4" -"@electron/fuses@^1.7.0": +"@electron/fuses@^1.7.0", "@electron/fuses@>=1.0.0": version "1.8.0" resolved "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz" integrity sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw== @@ -495,7 +495,7 @@ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@^11.11.4": +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.11.4", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0": version "11.11.4" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz" integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== @@ -525,7 +525,7 @@ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== -"@emotion/styled@^11.11.0": +"@emotion/styled@^11.11.0", "@emotion/styled@^11.3.0": version "11.11.0" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz" integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== @@ -677,14 +677,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" @@ -693,12 +685,20 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@malept/cross-spawn-promise@^1.0.0", "@malept/cross-spawn-promise@^1.1.0": +"@malept/cross-spawn-promise@^1.1.0": version "1.1.1" resolved "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz" integrity sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ== @@ -737,7 +737,7 @@ dependencies: "@babel/runtime" "^7.23.9" -"@mui/material@^5.15.14": +"@mui/material@^5.0.0", "@mui/material@^5.15.14": version "5.15.14" resolved "https://registry.npmjs.org/@mui/material/-/material-5.15.14.tgz" integrity sha512-kEbRw6fASdQ1SQ7LVdWR5OlWV3y7Y54ZxkLzd6LV5tmz+NpO3MJKZXSfgR0LHMP7meKsPiMm4AuzV0pXDpk/BQ== @@ -811,7 +811,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -963,21 +963,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@^9.0.1": - version "9.0.13" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" - integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - "@types/html-minifier-terser@^6.0.0": version "6.1.0" resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" @@ -1027,11 +1012,6 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - "@types/node-forge@^1.3.0": version "1.3.11" resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz" @@ -1080,7 +1060,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.2.71": +"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^18.2.71": version "18.2.71" resolved "https://registry.npmjs.org/@types/react/-/react-18.2.71.tgz" integrity sha512-PxEsB9OjmQeYGffoWnYAd/r5FiJuUw2niFQHPc2v2idwh8wGPkkYzOHuinNJJY6NZqfoTCiOIizDOz38gYNsyw== @@ -1144,7 +1124,7 @@ "@types/websocket@^1.0.10": version "1.0.10" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.10.tgz#804b1a02780da522f5742bc184a6d16a2eb78c7c" + resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.10.tgz" integrity sha512-svjGZvPB7EzuYS94cI7a+qhwgGU1y89wUgjT6E2wVUfmAGIvRfT7obBvRtnhXCSsoMdlG4gBFGE7MfkIXZLoww== dependencies: "@types/node" "*" @@ -1259,7 +1239,7 @@ dependencies: resolve "^1.10.0" -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": +"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== @@ -1360,7 +1340,7 @@ "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": +"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== @@ -1423,12 +1403,12 @@ acorn-walk@^8.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== -agent-base@6, agent-base@^6.0.2: +agent-base@^6.0.2, agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -1469,7 +1449,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1479,7 +1459,7 @@ ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -1627,18 +1607,6 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" -asar@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221" - integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== - dependencies: - chromium-pickle-js "^0.2.0" - commander "^5.0.0" - glob "^7.1.6" - minimatch "^3.0.4" - optionalDependencies: - "@types/glob" "^7.1.1" - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" @@ -1772,7 +1740,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.10: +browserslist@^4.21.10, "browserslist@>= 4.21.0": version "4.23.0" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -1802,7 +1770,7 @@ buffer@^5.5.0: bufferutil@^4.0.1: version "4.0.8" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz" integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== dependencies: node-gyp-build "^4.3.0" @@ -1930,11 +1898,6 @@ chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3: resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -chromium-pickle-js@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" - integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== - clean-css@^5.2.2: version "5.3.3" resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz" @@ -1967,15 +1930,6 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - cliui@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" @@ -2025,16 +1979,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-support@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" @@ -2172,7 +2126,18 @@ cross-spawn-windows-exe@^1.1.0, cross-spawn-windows-exe@^1.2.0: is-wsl "^2.2.0" which "^2.0.2" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2237,9 +2202,9 @@ csstype@^3.0.2, csstype@^3.1.3: resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -d@1, d@^1.0.1, d@^1.0.2: +d@^1.0.1, d@^1.0.2, d@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== dependencies: es5-ext "^0.10.64" @@ -2272,20 +2237,13 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -debug@2.6.9, debug@^2.2.0: +debug@^2.2.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -2293,6 +2251,20 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" @@ -2357,16 +2329,16 @@ delegates@^1.0.0: resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" @@ -2481,50 +2453,6 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-installer-common@^0.10.2: - version "0.10.3" - resolved "https://registry.yarnpkg.com/electron-installer-common/-/electron-installer-common-0.10.3.tgz#40f9db644ca60eb28673d545b67ee0113aef4444" - integrity sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA== - dependencies: - "@malept/cross-spawn-promise" "^1.0.0" - asar "^3.0.0" - debug "^4.1.1" - fs-extra "^9.0.0" - glob "^7.1.4" - lodash "^4.17.15" - parse-author "^2.0.0" - semver "^7.1.1" - tmp-promise "^3.0.2" - optionalDependencies: - "@types/fs-extra" "^9.0.1" - -electron-installer-debian@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/electron-installer-debian/-/electron-installer-debian-3.2.0.tgz#2a9c8220f50a57807de8f93619a0d61ec41271e0" - integrity sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw== - dependencies: - "@malept/cross-spawn-promise" "^1.0.0" - debug "^4.1.1" - electron-installer-common "^0.10.2" - fs-extra "^9.0.0" - get-folder-size "^2.0.1" - lodash "^4.17.4" - word-wrap "^1.2.3" - yargs "^16.0.2" - -electron-installer-redhat@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/electron-installer-redhat/-/electron-installer-redhat-3.4.0.tgz#4a7f8d67b48b7d5b23bd1eb074f4b684ae43b192" - integrity sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw== - dependencies: - "@malept/cross-spawn-promise" "^1.0.0" - debug "^4.1.1" - electron-installer-common "^0.10.2" - fs-extra "^9.0.0" - lodash "^4.17.15" - word-wrap "^1.2.3" - yargs "^16.0.2" - electron-squirrel-startup@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/electron-squirrel-startup/-/electron-squirrel-startup-1.0.0.tgz" @@ -2574,7 +2502,7 @@ encodeurl@~1.0.2: resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.13: +encoding@^0.1.0, encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -2721,7 +2649,7 @@ es-to-primitive@^1.2.1: es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: version "0.10.64" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz" integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== dependencies: es6-iterator "^2.0.3" @@ -2736,7 +2664,7 @@ es6-error@^4.1.1: es6-iterator@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: d "1" @@ -2745,7 +2673,7 @@ es6-iterator@^2.0.3: es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.4" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz" integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== dependencies: d "^1.0.2" @@ -2810,7 +2738,7 @@ eslint-plugin-import@^2.25.0: semver "^6.3.1" tsconfig-paths "^3.15.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1, eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -2831,7 +2759,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.0.1: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.0.1: version "8.57.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -2877,7 +2805,7 @@ eslint@^8.0.1: esniff@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + resolved "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz" integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== dependencies: d "^1.0.1" @@ -2930,7 +2858,7 @@ etag@~1.8.1: event-emitter@^0.3.5: version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== dependencies: d "1" @@ -2993,7 +2921,7 @@ express-ws@^5.0.2: dependencies: ws "^7.4.6" -express@^4.17.1, express@^4.17.3: +"express@^4.0.0 || ^5.0.0-alpha.1", express@^4.17.1, express@^4.17.3: version "4.19.2" resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== @@ -3032,7 +2960,7 @@ express@^4.17.1, express@^4.17.3: ext@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: type "^2.7.2" @@ -3240,7 +3168,16 @@ fs-extra@^10.0.0, fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.1.0, fs-extra@^11.1.1: +fs-extra@^11.1.0: + version "11.2.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.1.1: version "11.2.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -3267,7 +3204,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -3294,11 +3231,6 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -3328,11 +3260,6 @@ galactus@^1.0.0: flora-colossus "^2.0.0" fs-extra "^10.1.0" -gar@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/gar/-/gar-1.0.4.tgz#f777bc7db425c0572fdeb52676172ca1ae9888b8" - integrity sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w== - gauge@^4.0.3: version "4.0.4" resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz" @@ -3352,14 +3279,6 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-folder-size@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/get-folder-size/-/get-folder-size-2.0.1.tgz#3fe0524dd3bad05257ef1311331417bcd020a497" - integrity sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA== - dependencies: - gar "^1.0.4" - tiny-each-async "2.0.3" - get-installed-path@^2.0.3: version "2.1.1" resolved "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz" @@ -3470,7 +3389,7 @@ global-agent@^3.0.0: semver "^7.3.2" serialize-error "^7.0.1" -global-modules@1.0.0, global-modules@^1.0.0: +global-modules@^1.0.0, global-modules@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz" integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== @@ -3689,6 +3608,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -3700,16 +3629,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -3772,13 +3691,6 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -3786,6 +3698,13 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" @@ -3832,7 +3751,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3869,16 +3788,16 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.0.1: version "2.1.0" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz" @@ -4054,7 +3973,7 @@ is-typed-array@^1.1.13: is-typedarray@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: @@ -4318,7 +4237,7 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.20, lodash@^4.17.21, lodash@4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4462,7 +4381,7 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -4596,6 +4515,11 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +ms@^2.0.0, ms@^2.1.1, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -4606,11 +4530,6 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - multicast-dns@^7.2.5: version "7.2.5" resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" @@ -4634,7 +4553,7 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3, negotiator@^0.6.3: +negotiator@^0.6.3, negotiator@0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -4646,7 +4565,7 @@ neo-async@^2.6.2: next-tick@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== nice-try@^1.0.4: @@ -4695,7 +4614,7 @@ node-forge@^1: node-gyp-build@^4.3.0: version "4.8.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz" integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== node-gyp@^9.0.0: @@ -5076,7 +4995,12 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -5185,7 +5109,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.33: +postcss@^8.1.0, postcss@^8.4.33: version "8.4.38" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -5313,7 +5237,7 @@ rcedit@^4.0.0: dependencies: cross-spawn-windows-exe "^1.1.0" -react-dom@^18.2.0: +"react-dom@^17.0.0 || ^18.0.0", react-dom@^18.2.0, react-dom@>=16.6.0, react-dom@>=16.8.0: version "18.2.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -5321,7 +5245,12 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-is@^16.13.1, react-is@^16.7.0: +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^16.7.0: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -5341,7 +5270,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^18.2.0: +"react@^17.0.0 || ^18.0.0", react@^18.2.0, react@>=16.6.0, react@>=16.8.0: version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -5573,15 +5502,20 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex-test@^1.0.3: version "1.0.3" @@ -5641,23 +5575,33 @@ semver-compare@^1.0.0: resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== -"semver@2 || 3 || 4 || 5", semver@^5.5.0: +semver@^5.5.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.2.0, semver@^6.3.1: +semver@^6.2.0: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: version "7.6.0" resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" @@ -5945,15 +5889,29 @@ ssri@^9.0.0: dependencies: minipass "^3.1.1" +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + statuses@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" @@ -5992,20 +5950,6 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -6149,23 +6093,6 @@ thunky@^1.0.2: resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -tiny-each-async@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tiny-each-async/-/tiny-each-async-2.0.3.tgz#8ebbbfd6d6295f1370003fbb37162afe5a0a51d1" - integrity sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA== - -tmp-promise@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" - integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== - dependencies: - tmp "^0.2.0" - -tmp@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" @@ -6284,7 +6211,7 @@ type-is@~1.6.18: type@^2.7.2: version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== typed-array-buffer@^1.0.2: @@ -6333,12 +6260,12 @@ typed-array-length@^1.0.5: typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" -typescript@~4.5.4: +typescript@*, typescript@>=2.7, "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", typescript@>3.6.0, typescript@~4.5.4: version "4.5.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== @@ -6382,7 +6309,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -6410,9 +6337,9 @@ username@^5.1.0: execa "^1.0.0" mem "^4.3.0" -utf-8-validate@^5.0.2: +utf-8-validate@^5.0.2, utf-8-validate@>=5.0.2: version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz" integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== dependencies: node-gyp-build "^4.3.0" @@ -6543,7 +6470,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.69.1: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.11.0, webpack@^5.20.0, webpack@^5.69.1: version "5.91.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz" integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== @@ -6573,7 +6500,7 @@ webpack@^5.69.1: watchpack "^2.4.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -6589,7 +6516,7 @@ websocket-extensions@>=0.1.1: websocket@^1.0.34: version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== dependencies: bufferutil "^4.0.1" @@ -6629,7 +6556,14 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15: gopd "^1.0.1" has-tostringtag "^1.0.2" -which@^1.2.14, which@^1.2.9: +which@^1.2.14: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^1.2.9: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -6655,11 +6589,6 @@ wildcard@^2.0.0: resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -word-wrap@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" @@ -6708,7 +6637,7 @@ xterm-addon-search@^0.8.0: resolved "https://registry.npmjs.org/xterm-addon-search/-/xterm-addon-search-0.8.2.tgz" integrity sha512-I1863mjn8P6uVrqm/X+btalVsqjAKLhnhpbP7SavAOpEkI1jJhbHU2UTp7NjeRtcKTks6UWk/ycgds5snDSejg== -xterm@^4.9.0: +xterm@^4.0.0, xterm@^4.9.0: version "4.19.0" resolved "https://registry.npmjs.org/xterm/-/xterm-4.19.0.tgz" integrity sha512-c3Cp4eOVsYY5Q839dR5IejghRPpxciGmLWWaP9g+ppfMeBChMeLa1DCA+pmX/jyDZ+zxFOmlJL/82qVdayVoGQ== @@ -6720,7 +6649,7 @@ y18n@^5.0.5: yaeti@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== yallist@^4.0.0: @@ -6733,29 +6662,11 @@ yaml@^1.10.0: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^16.0.2: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@^17.0.1: version "17.7.2" resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"