From f7db1ae493be6e4ac6036c9e0fcc1029bfff1861 Mon Sep 17 00:00:00 2001 From: Neuroblack Date: Wed, 5 Apr 2023 07:43:54 +0200 Subject: [PATCH 1/8] feat(tauri/system-tray): add system tray exit button --- src-tauri/src/main.rs | 17 +++++++++++++--- src-tauri/src/system_tray.rs | 39 ++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 src-tauri/src/system_tray.rs diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 3a935a94..2f8711d1 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -40,6 +40,7 @@ mod elevated_sidecar; mod gesture_detector; mod image_cache; mod sleep_detector; +mod system_tray; mod utils; lazy_static! { @@ -177,10 +178,20 @@ fn main() { commands::http::get_http_server_port, commands::afterburner::msi_afterburner_set_profile, commands::notifications::xsoverlay_send_message, - ]); + ]) + .system_tray(system_tray::init()) + .on_system_tray_event(system_tray::event_handler()); - app.run(tauri::generate_context!()) - .expect("An error occurred while running the application"); + app + .on_window_event(|event| match event.event() { + tauri::WindowEvent::CloseRequested { api, .. } => { + event.window().hide().unwrap(); + api.prevent_close(); + } + _ => {} + }) + .run(tauri::generate_context!()) + .expect("An error occurred while running the application"); } fn on_cron_minute_start(_: &str) { diff --git a/src-tauri/src/system_tray.rs b/src-tauri/src/system_tray.rs new file mode 100644 index 00000000..82fdfbbc --- /dev/null +++ b/src-tauri/src/system_tray.rs @@ -0,0 +1,39 @@ +use tauri::Manager; +use tauri::{ + AppHandle, CustomMenuItem, Runtime, SystemTray, SystemTrayEvent, SystemTrayMenu, + SystemTrayMenuItem, +}; + +const SLEEPMODE: &'static str = "sleepmode"; +const QUIT: &'static str = "quit"; + +pub fn init() -> SystemTray { + // Menus + let menu_sleepmode = CustomMenuItem::new(SLEEPMODE, "Disable sleep mode"); + let menu_quit = CustomMenuItem::new(QUIT, "Quit"); + + let tray_menu = SystemTrayMenu::new() + .add_item(menu_sleepmode) + .add_native_item(SystemTrayMenuItem::Separator) + .add_item(menu_quit); + + let tray = SystemTray::new().with_menu(tray_menu); + + return tray; +} + +pub fn event_handler() -> impl Fn(&AppHandle, SystemTrayEvent) + Send + Sync + 'static +{ + return |app, event| match event { + SystemTrayEvent::MenuItemClick { id, .. } => { + match id.as_str() { + QUIT => std::process::exit(0), + SLEEPMODE => { + // TODO + } + _ => {} + } + } + _ => {} + }; +} \ No newline at end of file From 54f42219c7646f8378facf88423a82027c4f9675 Mon Sep 17 00:00:00 2001 From: Neuroblack Date: Thu, 13 Apr 2023 07:10:50 +0200 Subject: [PATCH 2/8] feat(front/settings-general): add exit with system tray input --- package-lock.json | 15 +- src-shared/Cargo.lock | 4 +- src-tauri/src/system_tray.rs | 2 +- src/app/models/settings.ts | 2 + .../settings-general-tab.component.html | 24 + .../settings-general-tab.component.ts | 6 +- src/assets/i18n/en.json | 7 + yarn.lock | 982 +++++++++--------- 8 files changed, 559 insertions(+), 483 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00a1eee2..75f58e37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "oyasumi", - "version": "1.5.1", + "version": "1.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "oyasumi", - "version": "1.5.1", + "version": "1.6.0", "license": "MIT", "dependencies": { "@angular/animations": "^15.2.4", @@ -45,6 +45,7 @@ "tauri-plugin-store-api": "github:tauri-apps/tauri-plugin-store#dev", "three": "^0.146.0", "tslib": "^2.4.1", + "typescript-debounce-decorator": "^0.0.18", "uuid": "^9.0.0", "vrchat": "github:Raphiiko/vrchatapi-javascript#oyasumi-patch", "zone.js": "^0.11.4" @@ -13329,6 +13330,11 @@ "node": ">=4.2.0" } }, + "node_modules/typescript-debounce-decorator": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/typescript-debounce-decorator/-/typescript-debounce-decorator-0.0.18.tgz", + "integrity": "sha512-AaCIL9z/hHkD+x63xrjjPpRGCfYhrwtfP0E5liwnopmvCrXrb7ozcKCalnh82w9c9OM8tZqRslCwOHsKBvw1tw==" + }, "node_modules/ua-parser-js": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz", @@ -23481,6 +23487,11 @@ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, + "typescript-debounce-decorator": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/typescript-debounce-decorator/-/typescript-debounce-decorator-0.0.18.tgz", + "integrity": "sha512-AaCIL9z/hHkD+x63xrjjPpRGCfYhrwtfP0E5liwnopmvCrXrb7ozcKCalnh82w9c9OM8tZqRslCwOHsKBvw1tw==" + }, "ua-parser-js": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz", diff --git a/src-shared/Cargo.lock b/src-shared/Cargo.lock index d720ef97..ed7a8ae9 100644 --- a/src-shared/Cargo.lock +++ b/src-shared/Cargo.lock @@ -26,7 +26,7 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "openvr" version = "0.6.0" -source = "git+https://github.com/Raphiiko/oyasumi-rust-openvr?rev=c2f95d27a6f911cf360420b2279f0d1c9f2af52e#c2f95d27a6f911cf360420b2279f0d1c9f2af52e" +source = "git+https://github.com/Raphiiko/oyasumi-rust-openvr#8218a29e55507021b35a45eeceaeaaa87e794d2f" dependencies = [ "lazy_static", "openvr_sys", @@ -43,7 +43,7 @@ dependencies = [ [[package]] name = "oyasumi-shared" -version = "1.5.1" +version = "1.6.0" dependencies = [ "openvr", "serde", diff --git a/src-tauri/src/system_tray.rs b/src-tauri/src/system_tray.rs index 82fdfbbc..23870dfb 100644 --- a/src-tauri/src/system_tray.rs +++ b/src-tauri/src/system_tray.rs @@ -9,7 +9,7 @@ const QUIT: &'static str = "quit"; pub fn init() -> SystemTray { // Menus - let menu_sleepmode = CustomMenuItem::new(SLEEPMODE, "Disable sleep mode"); + let menu_sleepmode = CustomMenuItem::new(SLEEPMODE, "Enable sleep mode"); let menu_quit = CustomMenuItem::new(QUIT, "Quit"); let tray_menu = SystemTrayMenu::new() diff --git a/src/app/models/settings.ts b/src/app/models/settings.ts index 1c0fe940..375d96e2 100644 --- a/src/app/models/settings.ts +++ b/src/app/models/settings.ts @@ -9,6 +9,7 @@ export interface AppSettings { oscReceivingPort: number; enableDesktopNotifications: boolean; enableXSOverlayNotifications: boolean; + enableTrayExit: boolean; } export const APP_SETTINGS_DEFAULT: AppSettings = { @@ -23,6 +24,7 @@ export const APP_SETTINGS_DEFAULT: AppSettings = { oscReceivingPort: 9001, enableXSOverlayNotifications: false, enableDesktopNotifications: false, + enableTrayExit: false, }; export type ExecutableReferenceStatus = diff --git a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html index 2660bee7..24c0fb5b 100644 --- a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html +++ b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html @@ -74,6 +74,30 @@

settings.general.adminPrivileges.title

+ +
+

settings.general.systemTray.title

+
+
+
+ settings.general.systemTray.close.label + settings.general.systemTray.close.description +
+
+ +
+
+
+
+ +

settings.general.telemetry.title

diff --git a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts index 7a59e1cd..1c91a742 100644 --- a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts +++ b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts @@ -34,7 +34,7 @@ export class SettingsGeneralTabComponent extends SettingsTabComponent implements constructor( settingsService: AppSettingsService, private lighthouse: LighthouseService, - private telemetry: TelemetryService + private telemetry: TelemetryService, ) { super(settingsService); } @@ -103,4 +103,8 @@ export class SettingsGeneralTabComponent extends SettingsTabComponent implements setTelemetryEnabled(enabled: boolean) { this.telemetry.updateSettings({ enabled }); } + + setSystemTrayExitEnabled(enableTrayExit: boolean) { + this.settingsService.updateSettings({ enableTrayExit }) + } } diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 9bad60d9..17ba1661 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -420,6 +420,13 @@ "title": "Telemetry", "label": "Send anonymous usage data", "description": "The data that will be sent is limited to the version of Oyasumi that you are using, and the language you have set. No other data is sent and it is completely anonymous. This data is only used for providing some general usage statistics." + }, + "systemTray": { + "title": "System tray", + "close": { + "label": "Exit with system tray", + "description": "Collapses the program into the system tray upon clicking on exit button" + } } }, "vrchat": { diff --git a/yarn.lock b/yarn.lock index 765735ca..1ad63dcd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@ampproject/remapping@2.2.0", "@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": +"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0", "@ampproject/remapping@2.2.0": version "2.2.0" resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== @@ -173,14 +173,14 @@ "@angular-eslint/bundled-angular-compiler" "15.2.1" "@typescript-eslint/utils" "5.48.2" -"@angular/animations@^15.2.4": +"@angular/animations@^15.2.4", "@angular/animations@15.2.4": version "15.2.4" resolved "https://registry.npmjs.org/@angular/animations/-/animations-15.2.4.tgz" integrity sha512-0qMtJgWWfqOaVp3BhoMWd2SNFaOWUjl1DYaNTfYiqMGWk6H2ULE2Yog4hZNJAkOsCApEF2BNlL1O8arPzTswCQ== dependencies: tslib "^2.3.0" -"@angular/cli@^15.2.4": +"@angular/cli@^15.2.4", "@angular/cli@>= 15.0.0 < 16.0.0": version "15.2.4" resolved "https://registry.npmjs.org/@angular/cli/-/cli-15.2.4.tgz" integrity sha512-nQFnrt9aWwqkyhJMaZvjHXXuxeR1pZNcpZEzTA5nXtpVeNs8U7EBFCyJ+cYecFX0LHe36SoxXcbfnNEKHt3NVQ== @@ -204,14 +204,14 @@ symbol-observable "4.0.0" yargs "17.6.2" -"@angular/common@^15.2.4": +"@angular/common@^15.2.4", "@angular/common@>=13.0.0", "@angular/common@15.2.4": version "15.2.4" resolved "https://registry.npmjs.org/@angular/common/-/common-15.2.4.tgz" integrity sha512-RT6bo3RB768alor27i4KG9rTcsya58f2Pda/MjcNC5iR7WpmA4tE4h9x4JnI/1GCR3U1KAa4qrDrEFUJZoFofw== dependencies: tslib "^2.3.0" -"@angular/compiler-cli@^15.2.4": +"@angular/compiler-cli@^15.0.0", "@angular/compiler-cli@^15.2.4": version "15.2.4" resolved "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.2.4.tgz" integrity sha512-FCRNZ60PIKRt3rmjab7ca1E5Mc8Zt2izwD+VrzWeyBc51g5dVD+T/CRamJbmqRGw1hnn6BBM/VP9oDRcMVwGlg== @@ -227,14 +227,14 @@ tslib "^2.3.0" yargs "^17.2.1" -"@angular/compiler@^15.2.4": +"@angular/compiler@^15.2.4", "@angular/compiler@15.2.4": version "15.2.4" resolved "https://registry.npmjs.org/@angular/compiler/-/compiler-15.2.4.tgz" integrity sha512-M4zqNCiSsNH2tc12yux9ZpGfSQ4vJ08iYxq6RJmS3CFJtDIw0SFc14ycHX+8rXYfLw92j0UTaDEAhjruAM51Zw== dependencies: tslib "^2.3.0" -"@angular/core@^15.2.4": +"@angular/core@^15.2.4", "@angular/core@>=13.0.0", "@angular/core@14 - 15", "@angular/core@15.2.4": version "15.2.4" resolved "https://registry.npmjs.org/@angular/core/-/core-15.2.4.tgz" integrity sha512-ApWxICIOK47F/yh0Di/SFR3qMXZPpVLFainlIEauwpULKCLrYSJSnlF+zaDB6mMI1754skZZE69lX4uS2Byi+w== @@ -255,7 +255,7 @@ dependencies: tslib "^2.3.0" -"@angular/platform-browser@^15.2.4": +"@angular/platform-browser@^15.2.4", "@angular/platform-browser@15.2.4": version "15.2.4" resolved "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-15.2.4.tgz" integrity sha512-RVMqnVNy6kgtyZM7gRJF1nrsFBaGltySeyc4jvTIms7fpqxHvJFJ32r24h5QbgYbq18YwnWmcEkqZqg3nnyOaA== @@ -286,28 +286,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz" integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== -"@babel/core@7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.3" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.3" - "@babel/types" "^7.19.3" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@7.20.12": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0", "@babel/core@7.20.12": version "7.20.12" resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz" integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== @@ -349,14 +328,26 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@7.20.14": - version "7.20.14" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz" - integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== +"@babel/core@7.19.3": + version "7.19.3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz" + integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== dependencies: - "@babel/types" "^7.20.7" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.19.3" + "@babel/helper-compilation-targets" "^7.19.3" + "@babel/helper-module-transforms" "^7.19.0" + "@babel/helpers" "^7.19.0" + "@babel/parser" "^7.19.3" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.3" + "@babel/types" "^7.19.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" "@babel/generator@^7.19.3", "@babel/generator@^7.20.7", "@babel/generator@^7.21.3": version "7.21.3" @@ -368,7 +359,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@7.18.6", "@babel/helper-annotate-as-pure@^7.18.6": +"@babel/generator@7.20.14": + version "7.20.14" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz" + integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== + dependencies: + "@babel/types" "^7.20.7" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== @@ -531,7 +531,7 @@ dependencies: "@babel/types" "^7.20.0" -"@babel/helper-split-export-declaration@7.18.6", "@babel/helper-split-export-declaration@^7.18.6": +"@babel/helper-split-export-declaration@^7.18.6", "@babel/helper-split-export-declaration@7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== @@ -602,7 +602,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-proposal-optional-chaining" "^7.20.7" -"@babel/plugin-proposal-async-generator-functions@7.20.7", "@babel/plugin-proposal-async-generator-functions@^7.20.1": +"@babel/plugin-proposal-async-generator-functions@^7.20.1", "@babel/plugin-proposal-async-generator-functions@7.20.7": version "7.20.7" resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== @@ -843,7 +843,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-async-to-generator@7.20.7", "@babel/plugin-transform-async-to-generator@^7.18.6": +"@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@7.20.7": version "7.20.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz" integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== @@ -1196,13 +1196,6 @@ resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@7.20.13": - version "7.20.13" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz" - integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== - dependencies: - regenerator-runtime "^0.13.11" - "@babel/runtime@^7.8.4": version "7.21.0" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz" @@ -1210,7 +1203,14 @@ dependencies: regenerator-runtime "^0.13.11" -"@babel/template@7.20.7", "@babel/template@^7.18.10", "@babel/template@^7.20.7": +"@babel/runtime@7.20.13": + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@7.20.7": version "7.20.7" resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== @@ -1254,111 +1254,6 @@ resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@esbuild/android-arm64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.8.tgz#b3d5b65a3b2e073a6c7ee36b1f3c30c8f000315b" - integrity sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ== - -"@esbuild/android-arm@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.8.tgz#c41e496af541e175369d48164d0cf01a5f656cf6" - integrity sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w== - -"@esbuild/android-x64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.8.tgz#080fa67c29be77f5a3ca5ee4cc78d5bf927e3a3b" - integrity sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg== - -"@esbuild/darwin-arm64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.8.tgz#053622bf9a82f43d5c075b7818e02618f7b4a397" - integrity sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg== - -"@esbuild/darwin-x64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.8.tgz#8a1aadb358d537d8efad817bb1a5bff91b84734b" - integrity sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw== - -"@esbuild/freebsd-arm64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.8.tgz#e6738d0081ba0721a5c6c674e84c6e7fcea61989" - integrity sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A== - -"@esbuild/freebsd-x64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.8.tgz#1855e562f2b730f4483f6e94086e9e2597feb4c3" - integrity sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q== - -"@esbuild/linux-arm64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.8.tgz#481da38952721a3fdb77c17a36ceaacc4270b5c5" - integrity sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww== - -"@esbuild/linux-arm@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.8.tgz#18127072b270bb6321c6d11be20bfd30e0d6ad17" - integrity sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA== - -"@esbuild/linux-ia32@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.8.tgz#ee400af7b3bc69e8ca2e593ca35156ffb9abd54f" - integrity sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA== - -"@esbuild/linux-loong64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.8.tgz#8c509d8a454693d39824b83b3f66c400872fce82" - integrity sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA== - -"@esbuild/linux-mips64el@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.8.tgz#f2b0d36e63fb26bc3f95b203b6a80638292101ca" - integrity sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA== - -"@esbuild/linux-ppc64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.8.tgz#1e628be003e036e90423716028cc884fe5ba25bd" - integrity sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw== - -"@esbuild/linux-riscv64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.8.tgz#419a815cb4c3fb9f1b78ef5295f5b48b8bf6427a" - integrity sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw== - -"@esbuild/linux-s390x@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.8.tgz#291c49ae5c3d11d226352755c0835911fe1a9e5c" - integrity sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw== - -"@esbuild/linux-x64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.8.tgz#03199d91c76faf80bd54104f5cbf0a489bc39f6a" - integrity sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA== - -"@esbuild/netbsd-x64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.8.tgz#b436d767e1b21852f9ed212e2bb57f77203b0ae2" - integrity sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q== - -"@esbuild/openbsd-x64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.8.tgz#d1481d8539e21d4729cd04a0450a26c2c8789e89" - integrity sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg== - -"@esbuild/sunos-x64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.8.tgz#2cfb8126e079b2c00fd1bf095541e9f5c47877e4" - integrity sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw== - -"@esbuild/win32-arm64@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.8.tgz#7c6ecfd097ca23b82119753bf7072bbaefe51e3a" - integrity sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg== - -"@esbuild/win32-ia32@0.17.8": - version "0.17.8" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.8.tgz#cffec63c3cb0ef8563a04df4e09fa71056171d00" - integrity sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w== - "@esbuild/win32-x64@0.17.8": version "0.17.8" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.8.tgz" @@ -1531,7 +1426,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -1554,7 +1449,7 @@ resolved "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.2.4.tgz" integrity sha512-cQ7MsRoGJgPOVnpvFgWhygeSe6zJ0ITiUhjmmuOgpNDfYkrgYxN3Ot/qvQefFei+oGZ1JJ9bRb8lcPKL/apoBQ== -"@ngx-translate/core@^14.0.0": +"@ngx-translate/core@^14.0.0", "@ngx-translate/core@>=14.0.0": version "14.0.0" resolved "https://registry.npmjs.org/@ngx-translate/core/-/core-14.0.0.tgz" integrity sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w== @@ -1576,7 +1471,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== @@ -1681,46 +1576,6 @@ resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-1.2.0.tgz" integrity sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw== -"@tauri-apps/cli-darwin-arm64@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.2.3.tgz#dae9142e683c00199f4d7e088f22b564b08b9cac" - integrity sha512-phJN3fN8FtZZwqXg08bcxfq1+X1JSDglLvRxOxB7VWPq+O5SuB8uLyssjJsu+PIhyZZnIhTGdjhzLSFhSXfLsw== - -"@tauri-apps/cli-darwin-x64@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.2.3.tgz#c6f84a11a1a7800e3e8e22c8fa5b95d0b3d1f802" - integrity sha512-jFZ/y6z8z6v4yliIbXKBXA7BJgtZVMsITmEXSuD6s5+eCOpDhQxbRkr6CA+FFfr+/r96rWSDSgDenDQuSvPAKw== - -"@tauri-apps/cli-linux-arm-gnueabihf@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.2.3.tgz#ecccec4c255ab32903fb36e1c746ed7b4eff0d1d" - integrity sha512-C7h5vqAwXzY0kRGSU00Fj8PudiDWFCiQqqUNI1N+fhCILrzWZB9TPBwdx33ZfXKt/U4+emdIoo/N34v3TiAOmQ== - -"@tauri-apps/cli-linux-arm64-gnu@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.2.3.tgz#c3915de83a8fbe6f406eaa0b524a17c091a9a2cd" - integrity sha512-buf1c8sdkuUzVDkGPQpyUdAIIdn5r0UgXU6+H5fGPq/Xzt5K69JzXaeo6fHsZEZghbV0hOK+taKV4J0m30UUMQ== - -"@tauri-apps/cli-linux-arm64-musl@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.2.3.tgz#40f9f7cf0b4088964661fd412eff7310cb4ac605" - integrity sha512-x88wPS9W5xAyk392vc4uNHcKBBvCp0wf4H9JFMF9OBwB7vfd59LbQCFcPSu8f0BI7bPrOsyHqspWHuFL8ojQEA== - -"@tauri-apps/cli-linux-x64-gnu@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.2.3.tgz#0b3e4c1fda6205dbe872f4b69506669476f60591" - integrity sha512-ZMz1jxEVe0B4/7NJnlPHmwmSIuwiD6ViXKs8F+OWWz2Y4jn5TGxWKFg7DLx5OwQTRvEIZxxT7lXHi5CuTNAxKg== - -"@tauri-apps/cli-linux-x64-musl@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.2.3.tgz#edcf8f53da50337a2e763d4fda750ef56124036c" - integrity sha512-B/az59EjJhdbZDzawEVox0LQu2ZHCZlk8rJf85AMIktIUoAZPFbwyiUv7/zjzA/sY6Nb58OSJgaPL2/IBy7E0A== - -"@tauri-apps/cli-win32-ia32-msvc@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.2.3.tgz#0592d3e4eee4685674579ba897eef1469c6f1cfe" - integrity sha512-ypdO1OdC5ugNJAKO2m3sb1nsd+0TSvMS9Tr5qN/ZSMvtSduaNwrcZ3D7G/iOIanrqu/Nl8t3LYlgPZGBKlw7Ng== - "@tauri-apps/cli-win32-x64-msvc@1.2.3": version "1.2.3" resolved "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.2.3.tgz" @@ -1975,7 +1830,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@5.48.2": +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@5.48.2": version "5.48.2" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.2.tgz" integrity sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw== @@ -2207,7 +2062,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.2" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== @@ -2220,7 +2075,7 @@ adjust-sourcemap-loader@^4.0.0: loader-utils "^2.0.0" regex-parser "^2.2.11" -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== @@ -2244,7 +2099,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-formats@2.1.1, ajv-formats@^2.1.1: +ajv-formats@^2.1.1, ajv-formats@2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== @@ -2263,17 +2118,27 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@8.12.0, ajv@^8.0.0, ajv@^8.8.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== +ajv@^6.10.0: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: +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== @@ -2283,6 +2148,16 @@ ajv@^6.10.0, 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.8.0, ajv@^8.8.2, ajv@8.12.0: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-colors@4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" @@ -2388,16 +2263,16 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" @@ -2492,7 +2367,7 @@ base64-js@^1.2.0, base64-js@^1.3.1: resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64id@2.0.0, base64id@~2.0.0: +base64id@~2.0.0, base64id@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== @@ -2539,13 +2414,13 @@ bluebird@~3.4.1: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== +body-parser@^1.19.0: + version "1.20.2" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" - content-type "~1.0.4" + content-type "~1.0.5" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -2553,17 +2428,17 @@ body-parser@1.20.1: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.1" + raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" -body-parser@^1.19.0: - version "1.20.2" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" - content-type "~1.0.5" + content-type "~1.0.4" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -2571,7 +2446,7 @@ body-parser@^1.19.0: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.2" + raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" @@ -2612,7 +2487,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@4.21.5, browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: +browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5, "browserslist@>= 4.21.0", browserslist@4.21.5: version "4.21.5" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz" integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== @@ -2667,25 +2542,6 @@ bytes@3.1.2: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacache@17.0.4: - version "17.0.4" - resolved "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz" - integrity sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^8.0.1" - lru-cache "^7.7.1" - minipass "^4.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - cacache@^16.1.0: version "16.1.3" resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz" @@ -2729,6 +2585,25 @@ cacache@^17.0.0: tar "^6.1.11" unique-filename "^3.0.0" +cacache@17.0.4: + version "17.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz" + integrity sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^8.0.1" + lru-cache "^7.7.1" + minipass "^4.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" @@ -2786,7 +2661,7 @@ check-more-types@^2.24.0: resolved "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz" integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== -chokidar@3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.3: +chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.2, chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@3.5.3: version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -2879,16 +2754,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" @@ -2986,7 +2861,7 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.5.0, cookie@^0.5.0: +cookie@^0.5.0, cookie@0.5.0: version "0.5.0" resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== @@ -3130,26 +3005,26 @@ dayjs@^1.8.34: resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - ms "2.0.0" + ms "^2.1.1" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, 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@^3.2.6: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +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.1.1" + ms "2.0.0" deep-equal@^2.0.5: version "2.2.0" @@ -3211,7 +3086,7 @@ 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, depd@^2.0.0: +depd@^2.0.0, 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== @@ -3507,7 +3382,7 @@ eslint-plugin-json@^3.1.0: lodash "^4.17.21" vscode-json-languageservice "^4.1.6" -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== @@ -3515,7 +3390,15 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.0.0, eslint-scope@^7.1.1: +eslint-scope@^7.0.0: + version "7.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-scope@^7.1.1: version "7.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== @@ -3540,7 +3423,7 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.33.0: +eslint@*, "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.20.0 || ^8.0.0", eslint@^8.33.0, eslint@>=5, eslint@>=7.0.0: version "8.36.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz" integrity sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== @@ -3619,7 +3502,12 @@ estraverse@^4.1.1: resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0: +estraverse@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estraverse@^5.2.0: version "5.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -3924,7 +3812,14 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -3948,11 +3843,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.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - fstream@^1.0.12: version "1.0.12" resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" @@ -4028,7 +3918,14 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1, glob-parent@^6.0.2: +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -4040,7 +3937,19 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@8.1.0, glob@^8.0.1: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.7: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.0.1, glob@8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -4051,19 +3960,17 @@ glob@8.1.0, glob@^8.0.1: minimatch "^5.0.1" once "^1.3.0" -glob@^7.1.3, glob@^7.1.4, glob@^7.1.7: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== +glob@^9.3.0: + version "9.3.2" + resolved "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz" + integrity sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA== dependencies: fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" + minimatch "^7.4.1" + minipass "^4.2.4" + path-scurry "^1.6.1" -glob@^9.3.0, glob@^9.3.1: +glob@^9.3.1: version "9.3.2" resolved "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz" integrity sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA== @@ -4227,6 +4134,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" @@ -4238,16 +4155,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" @@ -4282,7 +4189,7 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0: +https-proxy-agent@^5.0.0, https-proxy-agent@5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -4307,14 +4214,21 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@^0.4.24, 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, iconv-lite@^0.6.3: +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -4338,7 +4252,7 @@ ignore-walk@^6.0.0: dependencies: minimatch "^7.4.2" -ignore@5.2.4, ignore@^5.2.0: +ignore@^5.2.0, ignore@5.2.4: version "5.2.4" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -4389,7 +4303,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.0, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, 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== @@ -4439,16 +4353,16 @@ ip@^2.0.0: resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== -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.0.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== +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-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -4730,7 +4644,7 @@ istanbul-reports@^3.0.5: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jasmine-core@^4.1.0, jasmine-core@^4.5.0: +jasmine-core@^4.0.0, jasmine-core@^4.1.0, jasmine-core@^4.5.0: version "4.6.0" resolved "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz" integrity sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ== @@ -4809,7 +4723,7 @@ json5@^2.1.2, json5@^2.2.1, json5@^2.2.2: resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonc-parser@3.2.0, jsonc-parser@^3.0.0: +jsonc-parser@^3.0.0, jsonc-parser@3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== @@ -4860,7 +4774,7 @@ karma-jasmine-html-reporter@~2.0.0: resolved "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz" integrity sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA== -karma-jasmine@~5.1.0: +karma-jasmine@^5.0.0, karma-jasmine@~5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz" integrity sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ== @@ -4874,7 +4788,7 @@ karma-source-map-support@1.4.0: dependencies: source-map-support "^0.5.5" -karma@^6.4.1: +karma@^6.0.0, karma@^6.3.0, karma@^6.4.1: version "6.4.1" resolved "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz" integrity sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA== @@ -4928,7 +4842,7 @@ less-loader@11.1.0: dependencies: klona "^2.0.4" -less@4.1.3: +"less@^3.5.0 || ^4.0.0", less@4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/less/-/less-4.1.3.tgz" integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== @@ -4982,11 +4896,6 @@ loader-runner@^4.2.0: resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== - loader-utils@^2.0.0: version "2.0.4" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" @@ -4996,6 +4905,11 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" +loader-utils@3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" @@ -5128,13 +5042,6 @@ lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -magic-string@0.29.0: - version "0.29.0" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz" - integrity sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - magic-string@^0.27.0: version "0.27.0" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz" @@ -5142,6 +5049,13 @@ magic-string@^0.27.0: dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" +magic-string@0.29.0: + version "0.29.0" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz" + integrity sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + make-dir@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" @@ -5250,7 +5164,7 @@ 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== @@ -5262,7 +5176,7 @@ mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, dependencies: mime-db "1.52.0" -mime@1.6.0, mime@^1.4.1: +mime@^1.4.1, mime@1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -5301,14 +5215,28 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.0.1: version "5.1.6" resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimatch@^7.4.1, minimatch@^7.4.2: +minimatch@^5.1.0: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^7.4.1: + version "7.4.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz" + integrity sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^7.4.2: version "7.4.3" resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz" integrity sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A== @@ -5385,7 +5313,17 @@ minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: dependencies: yallist "^4.0.0" -minipass@^4.0.0, minipass@^4.0.2, minipass@^4.2.4: +minipass@^4.0.0, minipass@^4.2.4: + version "4.2.5" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz" + integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== + +minipass@^4.0.2: + version "4.2.5" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz" + integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== + +minipass@^4.2.4: version "4.2.5" resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz" integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== @@ -5398,7 +5336,7 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -"mkdirp@>=0.5 0", mkdirp@^0.5.5: +mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -5410,11 +5348,23 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +"mkdirp@>=0.5 0": + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + moment@^2.29.4: version "2.29.4" resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== +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" @@ -5425,11 +5375,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" @@ -5444,9 +5389,7 @@ mute-stream@0.0.8: integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nanoid@^3.3.4: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + version "3.3.5" natural-compare-lite@^1.4.0: version "1.4.0" @@ -5467,7 +5410,7 @@ needle@^3.1.0: iconv-lite "^0.6.3" sax "^1.2.4" -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== @@ -5493,29 +5436,11 @@ ngx-simple-modal@^1.4.17: dependencies: tslib "^1.9.0" -nice-napi@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b" - integrity sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA== - dependencies: - node-addon-api "^3.0.0" - node-gyp-build "^4.2.2" - -node-addon-api@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - node-forge@^1: version "1.3.1" resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-gyp-build@^4.2.2: - version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== - node-gyp@^9.0.0: version "9.3.1" resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz" @@ -5583,7 +5508,7 @@ npm-normalize-package-bin@^3.0.0: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz" integrity sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q== -npm-package-arg@10.1.0, npm-package-arg@^10.0.0: +npm-package-arg@^10.0.0, npm-package-arg@10.1.0: version "10.1.0" resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz" integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== @@ -5600,7 +5525,7 @@ npm-packlist@^7.0.0: dependencies: ignore-walk "^6.0.0" -npm-pick-manifest@8.0.1, npm-pick-manifest@^8.0.0: +npm-pick-manifest@^8.0.0, npm-pick-manifest@8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz" integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== @@ -5692,13 +5617,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" @@ -5706,6 +5624,13 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + on-headers@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" @@ -5732,19 +5657,19 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" -open@8.4.1: - version "8.4.1" - resolved "https://registry.npmjs.org/open/-/open-8.4.1.tgz" - integrity sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg== +open@^8.0.9: + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" is-wsl "^2.2.0" -open@^8.0.9: - version "8.4.2" - resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== +open@8.4.1: + version "8.4.1" + resolved "https://registry.npmjs.org/open/-/open-8.4.1.tgz" + integrity sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -5762,7 +5687,7 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@5.4.1, ora@^5.4.1: +ora@^5.4.1, ora@5.4.1: version "5.4.1" resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== @@ -6047,7 +5972,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.21, postcss@^8.2.14, postcss@^8.3.7, postcss@^8.4.19: +"postcss@^7.0.0 || ^8.0.1", postcss@^8.1.0, postcss@^8.2.14, postcss@^8.3.7, postcss@^8.4.19, postcss@8.4.21: version "8.4.21" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz" integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== @@ -6179,7 +6104,46 @@ read-package-json@^6.0.0: normalize-package-data "^5.0.0" npm-normalize-package-bin "^3.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.3.6: +readable-stream@^2.0.0: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.0.2: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.0.5: version "2.3.8" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -6201,6 +6165,19 @@ readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdir-glob@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz" @@ -6318,7 +6295,7 @@ resolve-url-loader@5.0.0: postcss "^8.2.14" source-map "0.6.1" -resolve@1.22.1, resolve@^1.14.2: +resolve@^1.14.2, resolve@1.22.1: version "1.22.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -6355,13 +6332,6 @@ rfdc@^1.3.0: resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== -rimraf@2: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" @@ -6369,6 +6339,13 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@2: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" @@ -6381,6 +6358,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +"rxjs@^6.5.3 || ^7.4.0", rxjs@^7.5.5, rxjs@^7.5.7: + version "7.8.0" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + dependencies: + tslib "^2.1.0" + rxjs@6.6.7: version "6.6.7" resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" @@ -6388,22 +6372,20 @@ rxjs@6.6.7: dependencies: tslib "^1.9.0" -rxjs@^7.5.5, rxjs@^7.5.7: - version "7.8.0" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz" - integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== - dependencies: - tslib "^2.1.0" +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.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +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== "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" @@ -6423,7 +6405,7 @@ sass-material-colors@^0.0.5: resolved "https://registry.npmjs.org/sass-material-colors/-/sass-material-colors-0.0.5.tgz" integrity sha512-WqBonSUkR5U9xs9adPVIymIdcT2Ku7PN0Q57yFfcLHj/E63wDqZ/Y5i/m9RmkRyr/jmR85g6ZIS053fyAR8G2A== -sass@1.58.1: +sass@^1.3.0, sass@1.58.1: version "1.58.1" resolved "https://registry.npmjs.org/sass/-/sass-1.58.1.tgz" integrity sha512-bnINi6nPXbP1XNRaranMFEBZWUfdW/AF16Ql5+ypRxfTvCRTTKrLsMIakyDcayUt2t/RZotmL4kgJwNH5xO+bg== @@ -6444,7 +6426,16 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== @@ -6475,23 +6466,38 @@ selfsigned@^2.1.1: dependencies: node-forge "^1" -semver@7.3.8, semver@^7.0.0, semver@^7.1.1, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: - version "7.3.8" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - semver@^5.6.0: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.1.1: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^6.1.2: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.0.0, semver@^7.1.1, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@7.3.8: + version "7.3.8" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" @@ -6676,7 +6682,7 @@ socks@^2.6.2: ip "^2.0.0" smart-buffer "^4.2.0" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: +source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0": version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -6690,7 +6696,7 @@ source-map-loader@4.0.1: iconv-lite "^0.6.3" source-map-js "^1.0.2" -source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.20: +source-map-support@^0.5.5, source-map-support@~0.5.20, source-map-support@0.5.21: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -6698,7 +6704,7 @@ source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.20 buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -6776,16 +6782,21 @@ ssri@^9.0.0: dependencies: minipass "^3.1.1" -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== -"statuses@>= 1.4.0 < 2", statuses@~1.5.0: +statuses@~1.5.0: 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== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" @@ -6802,15 +6813,6 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.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" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" @@ -6825,6 +6827,15 @@ string_decoder@~1.1.1: 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" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + 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" @@ -6842,7 +6853,7 @@ strip-final-newline@^3.0.0: resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -6935,20 +6946,20 @@ terser-webpack-plugin@^5.1.3: serialize-javascript "^6.0.1" terser "^5.16.5" -terser@5.16.3: - version "5.16.3" - resolved "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz" - integrity sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q== +terser@^5.16.5: + version "5.16.8" + resolved "https://registry.npmjs.org/terser/-/terser-5.16.8.tgz" + integrity sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" commander "^2.20.0" source-map-support "~0.5.20" -terser@^5.16.5: - version "5.16.8" - resolved "https://registry.npmjs.org/terser/-/terser-5.16.8.tgz" - integrity sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA== +terser@5.16.3: + version "5.16.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz" + integrity sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -6964,7 +6975,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@0.2.0, text-table@^0.2.0: +text-table@^0.2.0, text-table@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== @@ -6984,13 +6995,6 @@ thunky@^1.0.2: resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -tmp@0.2.1, tmp@^0.2.0, tmp@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" @@ -6998,6 +7002,13 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmp@^0.2.0, tmp@^0.2.1, tmp@0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + 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" @@ -7025,16 +7036,21 @@ tree-kill@1.2.2: resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -tslib@2.5.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.1: - version "2.5.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.9.0: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.1, tslib@2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" @@ -7082,10 +7098,10 @@ typed-assert@^1.0.8: typescript-debounce-decorator@^0.0.18: version "0.0.18" - resolved "https://registry.yarnpkg.com/typescript-debounce-decorator/-/typescript-debounce-decorator-0.0.18.tgz#5edda67e18952bb52a64a622ec319e3e323cd5b7" + resolved "https://registry.npmjs.org/typescript-debounce-decorator/-/typescript-debounce-decorator-0.0.18.tgz" integrity sha512-AaCIL9z/hHkD+x63xrjjPpRGCfYhrwtfP0E5liwnopmvCrXrb7ozcKCalnh82w9c9OM8tZqRslCwOHsKBvw1tw== -typescript@^4.8.4: +typescript@*, typescript@^4.8.4, "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@>=4.8.2 <5.0": version "4.9.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -7151,7 +7167,7 @@ universalify@^0.1.0: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -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== @@ -7197,7 +7213,12 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.0, uuid@^8.3.2: +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -7291,29 +7312,29 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webpack-dev-middleware@6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.0.1.tgz" - integrity sha512-PZPZ6jFinmqVPJZbisfggDiC+2EeGZ1ZByyMP5sOFJcPPWSexalISz+cvm+j+oYPT7FIJyxT76esjnw9DhE5sw== +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" - memfs "^3.4.12" + memfs "^3.4.3" mime-types "^2.1.31" range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== +webpack-dev-middleware@6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.0.1.tgz" + integrity sha512-PZPZ6jFinmqVPJZbisfggDiC+2EeGZ1ZByyMP5sOFJcPPWSexalISz+cvm+j+oYPT7FIJyxT76esjnw9DhE5sw== dependencies: colorette "^2.0.10" - memfs "^3.4.3" + memfs "^3.4.12" mime-types "^2.1.31" range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@4.11.1: +webpack-dev-server@^4.0.0, webpack-dev-server@4.11.1: version "4.11.1" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz" integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw== @@ -7368,7 +7389,7 @@ webpack-subresource-integrity@5.1.0: dependencies: typed-assert "^1.0.8" -webpack@5.76.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.12.0, webpack@^5.30.0, webpack@^5.54.0, webpack@^5.72.1, webpack@>=5, webpack@5.76.1: version "5.76.1" resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz" integrity sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ== @@ -7428,7 +7449,7 @@ webpack@^5.75.0: watchpack "^2.4.0" 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== @@ -7482,7 +7503,14 @@ which@^1.2.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -7572,19 +7600,6 @@ yargs-parser@^21.1.1: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@17.6.2: - version "17.6.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" - integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yargs@^16.1.1: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" @@ -7611,6 +7626,19 @@ yargs@^17.2.1: y18n "^5.0.5" yargs-parser "^21.1.1" +yargs@17.6.2: + version "17.6.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" @@ -7625,7 +7653,7 @@ zip-stream@^4.1.0: compress-commons "^4.1.0" readable-stream "^3.6.0" -zone.js@^0.11.4: +zone.js@^0.11.4, "zone.js@~0.11.4 || ~0.12.0 || ~0.13.0": version "0.11.8" resolved "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz" integrity sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA== From 90676606c96103d72da4cf843bb6a724e376f571 Mon Sep 17 00:00:00 2001 From: Neuroblack Date: Thu, 13 Apr 2023 07:22:12 +0200 Subject: [PATCH 3/8] feat(i18n): translate system tray setting to french --- src/assets/i18n/fr.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index d7a9b2aa..8dace6b2 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -420,6 +420,13 @@ "title": "Télémétrie", "label": "Envoyer des données d'utilisation anonymes", "description": "Les données envoyées seront limitées à la version d'Oyasumi que vous utilisez, et au langage paramétré. Aucune autre donnée n'est envoyée, et ces dernières sont complètement anonymes. Ces données sont utilisées à des fins statistiques." + }, + "systemTray": { + "title": "Barre d'état", + "close": { + "label": "Fermer l'application dans la barre d'état", + "description": "Réduit l'application dans la barre d'état système lorsque vous cliquez sur le bouton 'Fermer'" + } } }, "vrchat": { From b4d7b9800959c6cf890524d325ca703f54eafae2 Mon Sep 17 00:00:00 2001 From: Neuroblack Date: Tue, 18 Apr 2023 07:57:19 +0200 Subject: [PATCH 4/8] feat(front/settings-general): add listener when changing tray exit setting --- src-tauri/src/{ => commands}/system_tray.rs | 22 ++++++++----- src-tauri/src/main.rs | 33 +++---------------- src/app/app.module.ts | 3 ++ src/app/models/settings.ts | 4 +-- src/app/services/system-tray.service.ts | 31 +++++++++++++++++ .../settings-general-tab.component.html | 4 +-- .../settings-general-tab.component.ts | 4 +-- 7 files changed, 58 insertions(+), 43 deletions(-) rename src-tauri/src/{ => commands}/system_tray.rs (58%) create mode 100644 src/app/services/system-tray.service.ts diff --git a/src-tauri/src/system_tray.rs b/src-tauri/src/commands/system_tray.rs similarity index 58% rename from src-tauri/src/system_tray.rs rename to src-tauri/src/commands/system_tray.rs index 23870dfb..0b3f451d 100644 --- a/src-tauri/src/system_tray.rs +++ b/src-tauri/src/commands/system_tray.rs @@ -1,20 +1,16 @@ use tauri::Manager; use tauri::{ AppHandle, CustomMenuItem, Runtime, SystemTray, SystemTrayEvent, SystemTrayMenu, - SystemTrayMenuItem, }; -const SLEEPMODE: &'static str = "sleepmode"; const QUIT: &'static str = "quit"; pub fn init() -> SystemTray { // Menus - let menu_sleepmode = CustomMenuItem::new(SLEEPMODE, "Enable sleep mode"); let menu_quit = CustomMenuItem::new(QUIT, "Quit"); let tray_menu = SystemTrayMenu::new() - .add_item(menu_sleepmode) - .add_native_item(SystemTrayMenuItem::Separator) + //.add_native_item(SystemTrayMenuItem::Separator) .add_item(menu_quit); let tray = SystemTray::new().with_menu(tray_menu); @@ -28,12 +24,22 @@ pub fn event_handler() -> impl Fn(&AppHandle, SystemTrayEvent) + SystemTrayEvent::MenuItemClick { id, .. } => { match id.as_str() { QUIT => std::process::exit(0), - SLEEPMODE => { - // TODO - } _ => {} } + }, + + // When clicking the tray icon, restore and focus window. + SystemTrayEvent::LeftClick { tray_id, .. } => { + let window = app.get_window("main").unwrap(); + window.show().unwrap(); + window.set_focus().unwrap(); } _ => {} }; +} + +#[tauri::command] +pub fn set_exit_with_system_tray(app_handle: AppHandle, status: bool) { + // TODO : use something similar as lazy statics (see main.rs) + println!("Rust has been called"); } \ No newline at end of file diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index a18059f4..f02602a1 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -27,6 +27,7 @@ mod commands { pub mod os; pub mod osc; pub mod splash; + pub mod system_tray; } mod background { @@ -40,7 +41,6 @@ mod elevated_sidecar; mod gesture_detector; mod image_cache; mod sleep_detector; -mod system_tray; mod utils; lazy_static! { @@ -86,32 +86,6 @@ fn main() { } } })) - // .on_window_event(|event| if let tauri::WindowEvent::CloseRequested { api, .. } = event.event() { - // event.window().hide().unwrap(); - // api.prevent_close(); - // }) - // .system_tray( - // SystemTray::new() - // ) - // .on_system_tray_event(|app, event| match event { - // SystemTrayEvent::LeftClick { - // position: _, - // size: _, - // .. - // } => { - // let window = app.get_window("main").unwrap(); - // window.show().unwrap(); - // window.set_focus().unwrap(); - // } - // SystemTrayEvent::RightClick { - // position: _, - // size: _, - // .. - // } => { - // // TODO: Implement context menu - // } - // _ => (), - // }) .setup(|app| { // Set up window reference let window = app.get_window("main").unwrap(); @@ -182,9 +156,10 @@ fn main() { commands::http::get_http_server_port, commands::afterburner::msi_afterburner_set_profile, commands::notifications::xsoverlay_send_message, + commands::system_tray::set_exit_with_system_tray, ]) - .system_tray(system_tray::init()) - .on_system_tray_event(system_tray::event_handler()); + .system_tray(commands::system_tray::init()) + .on_system_tray_event(commands::system_tray::event_handler()); app .on_window_event(|event| match event.event() { diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d9a6828f..f33a9082 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -110,6 +110,7 @@ import { RenderResolutionAutomationService } from './services/render-resolution- import { SleepingAnimationsTabComponent } from './views/dashboard-view/views/osc-automations-view/tabs/sleeping-animations-tab/sleeping-animations-tab.component'; import { OscGeneralTabComponent } from './views/dashboard-view/views/osc-automations-view/tabs/osc-general-tab/osc-general-tab.component'; import { OscGeneralAutomationsService } from './services/osc-general-automations.service'; +import { SystemTrayService } from './services/system-tray.service'; [localeEN, localeFR, localeCN_TW, localeNL, localeKO, localeJP].forEach((locale) => registerLocaleData(locale) @@ -251,6 +252,7 @@ export class AppModule { private brightnessControlService: BrightnessControlService, private brightnessControlAutomationService: BrightnessControlAutomationService, private renderResolutionAutomationService: RenderResolutionAutomationService, + private systemTrayService: SystemTrayService, private eventLog: EventLogService ) { this.init(); @@ -275,6 +277,7 @@ export class AppModule { this.vrchatService.init(), this.vrchatLogService.init(), this.imageCacheService.init(), + this.systemTrayService.init(), ]); // Initialize GPU control services await this.sidecarService.init().then(async () => { diff --git a/src/app/models/settings.ts b/src/app/models/settings.ts index 375d96e2..f1447c34 100644 --- a/src/app/models/settings.ts +++ b/src/app/models/settings.ts @@ -9,7 +9,7 @@ export interface AppSettings { oscReceivingPort: number; enableDesktopNotifications: boolean; enableXSOverlayNotifications: boolean; - enableTrayExit: boolean; + exitWithSystemTray: boolean; } export const APP_SETTINGS_DEFAULT: AppSettings = { @@ -24,7 +24,7 @@ export const APP_SETTINGS_DEFAULT: AppSettings = { oscReceivingPort: 9001, enableXSOverlayNotifications: false, enableDesktopNotifications: false, - enableTrayExit: false, + exitWithSystemTray: false, }; export type ExecutableReferenceStatus = diff --git a/src/app/services/system-tray.service.ts b/src/app/services/system-tray.service.ts new file mode 100644 index 00000000..7fe8e5e3 --- /dev/null +++ b/src/app/services/system-tray.service.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; +import { AppSettingsService } from './app-settings.service'; +import { debounceTime, filter, map, pairwise } from 'rxjs'; +import { invoke } from '@tauri-apps/api'; + +const SYSTEM_TRAY_EXIT_COMMAND = 'set_exit_with_system_tray'; + +@Injectable({ + providedIn: 'root', +}) +export class SystemTrayService { + constructor(private readonly _appSettingsService: AppSettingsService) { + } + + async init() { + // Update tauri system tray status when the system tray exit value is changed in the settings. + this._appSettingsService.settings + .pipe( + map(settings => settings.exitWithSystemTray), + pairwise(), + filter(([oldVal, newVal]) => oldVal !== newVal), + map(([_, newVal]) => newVal), + debounceTime(100) + ) + .subscribe(exitWithSystemTray => this.updateSystemTrayExit(exitWithSystemTray)); + } + + private async updateSystemTrayExit(exitWithSystemTray: boolean) { + await invoke(SYSTEM_TRAY_EXIT_COMMAND, { status: exitWithSystemTray }); + } +} diff --git a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html index 24c0fb5b..bbeca39c 100644 --- a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html +++ b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html @@ -87,8 +87,8 @@

settings.general.systemTray.title

diff --git a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts index 1c91a742..20ccc9e2 100644 --- a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts +++ b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts @@ -104,7 +104,7 @@ export class SettingsGeneralTabComponent extends SettingsTabComponent implements this.telemetry.updateSettings({ enabled }); } - setSystemTrayExitEnabled(enableTrayExit: boolean) { - this.settingsService.updateSettings({ enableTrayExit }) + setExitWithSystemTray(exitWithSystemTray: boolean) { + this.settingsService.updateSettings({ exitWithSystemTray }) } } From ae05c5e98d8d326c73b8607fc303526dc8e0756b Mon Sep 17 00:00:00 2001 From: Neuroblack Date: Sun, 23 Apr 2023 16:09:17 +0200 Subject: [PATCH 5/8] feat(system-tray): add command to exit with system tray behaviour --- src-tauri/src/commands/system_tray.rs | 105 +++++++++++++++++++++----- src-tauri/src/main.rs | 24 +++++- 2 files changed, 105 insertions(+), 24 deletions(-) diff --git a/src-tauri/src/commands/system_tray.rs b/src-tauri/src/commands/system_tray.rs index 0b3f451d..e14035ac 100644 --- a/src-tauri/src/commands/system_tray.rs +++ b/src-tauri/src/commands/system_tray.rs @@ -1,11 +1,68 @@ -use tauri::Manager; +use tauri::{Manager, GlobalWindowEvent, SystemTrayHandle}; use tauri::{ AppHandle, CustomMenuItem, Runtime, SystemTray, SystemTrayEvent, SystemTrayMenu, }; +use crate::SYSTEMTRAY_MANAGER; + const QUIT: &'static str = "quit"; -pub fn init() -> SystemTray { +// pub fn init() -> SystemTray { +// // Menus +// let menu_quit = CustomMenuItem::new(QUIT, "Quit"); + +// let tray_menu = SystemTrayMenu::new() +// //.add_native_item(SystemTrayMenuItem::Separator) +// .add_item(menu_quit); + +// let tray = SystemTray::new().with_menu(tray_menu); + +// return tray; +// } + +// pub fn event_handler() -> impl Fn(&AppHandle, SystemTrayEvent) + Send + Sync + 'static +// { +// return |app, event| match event { +// SystemTrayEvent::MenuItemClick { id, .. } => { +// match id.as_str() { +// QUIT => std::process::exit(0), +// _ => {} +// } +// }, + +// // When clicking the tray icon, restore and focus window. +// SystemTrayEvent::LeftClick { tray_id, .. } => { +// let window = app.get_window("main").unwrap(); +// window.show().unwrap(); +// window.set_focus().unwrap(); +// } +// _ => {} +// }; +// } + +#[derive(Debug, Clone)] +pub struct SystemTrayManager { + pub exit_with_system_tray: bool, +} + +impl SystemTrayManager { + pub fn new() -> SystemTrayManager { + SystemTrayManager { exit_with_system_tray: false } + } + + // pub fn handle_window_exit(&self) -> impl Fn(GlobalWindowEvent) + Send + Sync + 'static { + // return |event| match event.event() { + // tauri::WindowEvent::CloseRequested { api, .. } => { + // event.window().hide().unwrap(); + // api.prevent_close(); + // } + // _ => {} + // } + // } +} + +// Initializes the system tray with menus. +pub fn init_system_tray() -> SystemTray { // Menus let menu_quit = CustomMenuItem::new(QUIT, "Quit"); @@ -18,28 +75,36 @@ pub fn init() -> SystemTray { return tray; } -pub fn event_handler() -> impl Fn(&AppHandle, SystemTrayEvent) + Send + Sync + 'static +pub fn handle_events() -> impl Fn(&AppHandle, SystemTrayEvent) + Send + Sync + 'static { - return |app, event| match event { - SystemTrayEvent::MenuItemClick { id, .. } => { - match id.as_str() { - QUIT => std::process::exit(0), - _ => {} + return |app, event| { + let manager_guard = SYSTEMTRAY_MANAGER.lock().unwrap(); + let manager = manager_guard.as_ref().unwrap(); + + match event { + SystemTrayEvent::MenuItemClick { id, .. } => { + match id.as_str() { + QUIT => std::process::exit(0), + _ => {} + } + }, + + // When clicking the tray icon, restore and focus window. + SystemTrayEvent::LeftClick { tray_id, .. } => { + let window = app.get_window("main").unwrap(); + window.show().unwrap(); + window.set_focus().unwrap(); } - }, - - // When clicking the tray icon, restore and focus window. - SystemTrayEvent::LeftClick { tray_id, .. } => { - let window = app.get_window("main").unwrap(); - window.show().unwrap(); - window.set_focus().unwrap(); - } - _ => {} - }; + _ => {} + }; + } } #[tauri::command] pub fn set_exit_with_system_tray(app_handle: AppHandle, status: bool) { // TODO : use something similar as lazy statics (see main.rs) - println!("Rust has been called"); -} \ No newline at end of file + let mut manager_guard = SYSTEMTRAY_MANAGER.lock().unwrap(); + let mut manager: &mut SystemTrayManager = manager_guard.as_mut().unwrap(); + manager.exit_with_system_tray = status; + println!("Status successfully changed {}", manager.exit_with_system_tray) +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index f02602a1..c4e3a7f8 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -9,6 +9,7 @@ extern crate lazy_static; use crate::commands::admin::start_elevation_sidecar; use crate::image_cache::ImageCache; use background::openvr::OpenVRManager; +use commands::system_tray::SystemTrayManager; use cronjob::CronJob; use log::{info, LevelFilter}; use oyasumi_shared::windows::is_elevated; @@ -52,9 +53,11 @@ lazy_static! { static ref SIDECAR_HTTP_SERVER_PORT: Mutex> = Default::default(); static ref SIDECAR_PID: Mutex> = Default::default(); static ref IMAGE_CACHE: Mutex> = Default::default(); + static ref SYSTEMTRAY_MANAGER: Mutex> = Default::default(); } fn main() { + let app = tauri::Builder::default() .plugin(tauri_plugin_store::Builder::default().build()) .plugin(tauri_plugin_fs_extra::init()) @@ -110,6 +113,10 @@ fn main() { background::http_server::spawn_http_server_thread(); // Load sounds commands::os::load_sounds(); + + // Initialize the system tray manager + let system_tray_manager = SystemTrayManager::new(); + *SYSTEMTRAY_MANAGER.lock().unwrap() = Some(system_tray_manager); }); // Setup start of minute cronjob let mut cron = CronJob::new("CRON_MINUTE_START", on_cron_minute_start); @@ -158,14 +165,22 @@ fn main() { commands::notifications::xsoverlay_send_message, commands::system_tray::set_exit_with_system_tray, ]) - .system_tray(commands::system_tray::init()) - .on_system_tray_event(commands::system_tray::event_handler()); + .system_tray(commands::system_tray::init_system_tray()) + .on_system_tray_event(commands::system_tray::handle_events()); app .on_window_event(|event| match event.event() { tauri::WindowEvent::CloseRequested { api, .. } => { - event.window().hide().unwrap(); - api.prevent_close(); + let manager_guard = SYSTEMTRAY_MANAGER.lock().unwrap(); + let manager = manager_guard.as_ref().unwrap(); + + if manager.exit_with_system_tray { + event.window().hide().unwrap(); + api.prevent_close(); + } + else { + std::process::exit(1); + } } _ => {} }) @@ -174,6 +189,7 @@ fn main() { } fn on_cron_minute_start(_: &str) { + let window_guard = TAURI_WINDOW.lock().unwrap(); let window = window_guard.as_ref().unwrap(); let _ = window.emit_all("CRON_MINUTE_START", ()); From 8ffceb04c4c6a420fcce0ada45dc52b8815fc0e1 Mon Sep 17 00:00:00 2001 From: Neuroblack Date: Sun, 23 Apr 2023 16:54:50 +0200 Subject: [PATCH 6/8] fix(front/settings-general): send system tray exit command when loading settings --- src-tauri/src/commands/system_tray.rs | 34 --------------------------- src/app/app.module.ts | 5 ++-- 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/src-tauri/src/commands/system_tray.rs b/src-tauri/src/commands/system_tray.rs index e14035ac..0d04b8cd 100644 --- a/src-tauri/src/commands/system_tray.rs +++ b/src-tauri/src/commands/system_tray.rs @@ -7,39 +7,6 @@ use crate::SYSTEMTRAY_MANAGER; const QUIT: &'static str = "quit"; -// pub fn init() -> SystemTray { -// // Menus -// let menu_quit = CustomMenuItem::new(QUIT, "Quit"); - -// let tray_menu = SystemTrayMenu::new() -// //.add_native_item(SystemTrayMenuItem::Separator) -// .add_item(menu_quit); - -// let tray = SystemTray::new().with_menu(tray_menu); - -// return tray; -// } - -// pub fn event_handler() -> impl Fn(&AppHandle, SystemTrayEvent) + Send + Sync + 'static -// { -// return |app, event| match event { -// SystemTrayEvent::MenuItemClick { id, .. } => { -// match id.as_str() { -// QUIT => std::process::exit(0), -// _ => {} -// } -// }, - -// // When clicking the tray icon, restore and focus window. -// SystemTrayEvent::LeftClick { tray_id, .. } => { -// let window = app.get_window("main").unwrap(); -// window.show().unwrap(); -// window.set_focus().unwrap(); -// } -// _ => {} -// }; -// } - #[derive(Debug, Clone)] pub struct SystemTrayManager { pub exit_with_system_tray: bool, @@ -102,7 +69,6 @@ pub fn handle_events() -> impl Fn(&AppHandle, SystemTrayEvent) + #[tauri::command] pub fn set_exit_with_system_tray(app_handle: AppHandle, status: bool) { - // TODO : use something similar as lazy statics (see main.rs) let mut manager_guard = SYSTEMTRAY_MANAGER.lock().unwrap(); let mut manager: &mut SystemTrayManager = manager_guard.as_mut().unwrap(); manager.exit_with_system_tray = status; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index f33a9082..216444ac 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -263,8 +263,8 @@ export class AppModule { await CachedValue.cleanCache(); // Preload assets await this.preloadAssets(); - // Initialize app settings and event log - await Promise.all([this.appSettingsService.init(), this.eventLog.init()]); + // Initialize app settings, event log and system tray settings. + await Promise.all([this.appSettingsService.init(), this.eventLog.init(), this.systemTrayService.init() ]); // Initialize telemetry and updates await Promise.all([this.updateService.init(), this.telemetryService.init()]); // Initialize general utility services @@ -277,7 +277,6 @@ export class AppModule { this.vrchatService.init(), this.vrchatLogService.init(), this.imageCacheService.init(), - this.systemTrayService.init(), ]); // Initialize GPU control services await this.sidecarService.init().then(async () => { From bca8f47ae6e70a873a169cbc77e18077e5d2c89b Mon Sep 17 00:00:00 2001 From: Neuroblack Date: Mon, 1 May 2023 14:35:43 +0200 Subject: [PATCH 7/8] feat: add option to start the app reduced in the system tray --- src-tauri/src/commands/splash.rs | 13 ++++++-- src-tauri/src/commands/system_tray.rs | 19 ++++++++---- src-tauri/src/main.rs | 5 +-- src/app/models/settings.ts | 6 ++-- src/app/services/system-tray.service.ts | 31 ++++++++++++++----- .../settings-general-tab.component.html | 20 ++++++++++-- .../settings-general-tab.component.ts | 8 +++-- src/assets/i18n/en.json | 6 +++- 8 files changed, 84 insertions(+), 24 deletions(-) diff --git a/src-tauri/src/commands/splash.rs b/src-tauri/src/commands/splash.rs index 07e010ad..667cccf7 100644 --- a/src-tauri/src/commands/splash.rs +++ b/src-tauri/src/commands/splash.rs @@ -1,6 +1,8 @@ use log::debug; use tauri::Manager; +use crate::{commands::system_tray::SystemTrayManager, SYSTEMTRAY_MANAGER}; + #[tauri::command] pub async fn close_splashscreen(window: tauri::Window) { debug!("[Core] Closing splash screen"); @@ -8,6 +10,13 @@ pub async fn close_splashscreen(window: tauri::Window) { if let Some(splashscreen) = window.get_window("splashscreen") { splashscreen.close().unwrap(); } - // Show main window - window.get_window("main").unwrap().show().unwrap(); + + // Show the window if the "Start with system tray" config is set to false. + // Otherwise, keep the window hidden until the user clicks the system tray icon to show it. + let manager_guard = SYSTEMTRAY_MANAGER.lock().unwrap(); + let manager: &SystemTrayManager = manager_guard.as_ref().unwrap(); + + if !manager.start_in_tray { + window.get_window("main").unwrap().show().unwrap(); + } } diff --git a/src-tauri/src/commands/system_tray.rs b/src-tauri/src/commands/system_tray.rs index 0d04b8cd..92bdbba4 100644 --- a/src-tauri/src/commands/system_tray.rs +++ b/src-tauri/src/commands/system_tray.rs @@ -1,4 +1,4 @@ -use tauri::{Manager, GlobalWindowEvent, SystemTrayHandle}; +use tauri::Manager; use tauri::{ AppHandle, CustomMenuItem, Runtime, SystemTray, SystemTrayEvent, SystemTrayMenu, }; @@ -9,12 +9,13 @@ const QUIT: &'static str = "quit"; #[derive(Debug, Clone)] pub struct SystemTrayManager { - pub exit_with_system_tray: bool, + pub exit_in_tray: bool, + pub start_in_tray: bool, } impl SystemTrayManager { pub fn new() -> SystemTrayManager { - SystemTrayManager { exit_with_system_tray: false } + SystemTrayManager { exit_in_tray: false, start_in_tray: false, } } // pub fn handle_window_exit(&self) -> impl Fn(GlobalWindowEvent) + Send + Sync + 'static { @@ -68,9 +69,15 @@ pub fn handle_events() -> impl Fn(&AppHandle, SystemTrayEvent) + } #[tauri::command] -pub fn set_exit_with_system_tray(app_handle: AppHandle, status: bool) { +pub fn set_exit_in_system_tray(app_handle: AppHandle, status: bool) { let mut manager_guard = SYSTEMTRAY_MANAGER.lock().unwrap(); let mut manager: &mut SystemTrayManager = manager_guard.as_mut().unwrap(); - manager.exit_with_system_tray = status; - println!("Status successfully changed {}", manager.exit_with_system_tray) + manager.exit_in_tray = status; } + +#[tauri::command] +pub fn set_start_in_system_tray(app_handle: AppHandle, status: bool) { + let mut manager_guard = SYSTEMTRAY_MANAGER.lock().unwrap(); + let mut manager: &mut SystemTrayManager = manager_guard.as_mut().unwrap(); + manager.start_in_tray = status; +} \ No newline at end of file diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index c4e3a7f8..8c7b071a 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -163,7 +163,8 @@ fn main() { commands::http::get_http_server_port, commands::afterburner::msi_afterburner_set_profile, commands::notifications::xsoverlay_send_message, - commands::system_tray::set_exit_with_system_tray, + commands::system_tray::set_exit_in_system_tray, + commands::system_tray::set_start_in_system_tray, ]) .system_tray(commands::system_tray::init_system_tray()) .on_system_tray_event(commands::system_tray::handle_events()); @@ -174,7 +175,7 @@ fn main() { let manager_guard = SYSTEMTRAY_MANAGER.lock().unwrap(); let manager = manager_guard.as_ref().unwrap(); - if manager.exit_with_system_tray { + if manager.exit_in_tray { event.window().hide().unwrap(); api.prevent_close(); } diff --git a/src/app/models/settings.ts b/src/app/models/settings.ts index f1447c34..441e2b54 100644 --- a/src/app/models/settings.ts +++ b/src/app/models/settings.ts @@ -9,7 +9,8 @@ export interface AppSettings { oscReceivingPort: number; enableDesktopNotifications: boolean; enableXSOverlayNotifications: boolean; - exitWithSystemTray: boolean; + exitInSystemTray: boolean; + startInSystemTray: boolean; } export const APP_SETTINGS_DEFAULT: AppSettings = { @@ -24,7 +25,8 @@ export const APP_SETTINGS_DEFAULT: AppSettings = { oscReceivingPort: 9001, enableXSOverlayNotifications: false, enableDesktopNotifications: false, - exitWithSystemTray: false, + exitInSystemTray: false, + startInSystemTray: false, }; export type ExecutableReferenceStatus = diff --git a/src/app/services/system-tray.service.ts b/src/app/services/system-tray.service.ts index 7fe8e5e3..41066ed5 100644 --- a/src/app/services/system-tray.service.ts +++ b/src/app/services/system-tray.service.ts @@ -1,9 +1,10 @@ import { Injectable } from '@angular/core'; import { AppSettingsService } from './app-settings.service'; -import { debounceTime, filter, map, pairwise } from 'rxjs'; +import { debounceTime, filter, first, last, map, pairwise, take } from 'rxjs'; import { invoke } from '@tauri-apps/api'; -const SYSTEM_TRAY_EXIT_COMMAND = 'set_exit_with_system_tray'; +const SYSTEM_TRAY_EXIT_COMMAND = 'set_exit_in_system_tray'; +const START_WITH_SYSTEM_TRAY_COMMAND = 'set_start_in_system_tray'; @Injectable({ providedIn: 'root', @@ -13,19 +14,35 @@ export class SystemTrayService { } async init() { - // Update tauri system tray status when the system tray exit value is changed in the settings. + // Update exit in system tray behaviour following the setting. this._appSettingsService.settings .pipe( - map(settings => settings.exitWithSystemTray), + map(settings => settings.exitInSystemTray), pairwise(), filter(([oldVal, newVal]) => oldVal !== newVal), map(([_, newVal]) => newVal), debounceTime(100) ) - .subscribe(exitWithSystemTray => this.updateSystemTrayExit(exitWithSystemTray)); + .subscribe(exitInSystemTray => this.updateSystemTrayExit(exitInSystemTray)); + + // Update start in system tray behaviour following the settings. + // Send command only upon loading setings, in order to hide or show the window upon startup. + this._appSettingsService.settings + .pipe( + map(settings => settings.startInSystemTray), + pairwise(), + filter(([oldVal, newVal]) => oldVal !== newVal), + map(([_, newVal]) => newVal), + debounceTime(100) + ) + .subscribe(startInSystemTray => this.updateSystemTrayStart(startInSystemTray)); + } + + private async updateSystemTrayExit(exitInSystemTray: boolean) { + await invoke(SYSTEM_TRAY_EXIT_COMMAND, { status: exitInSystemTray }); } - private async updateSystemTrayExit(exitWithSystemTray: boolean) { - await invoke(SYSTEM_TRAY_EXIT_COMMAND, { status: exitWithSystemTray }); + private async updateSystemTrayStart(startInSystemTray: boolean) { + await invoke(START_WITH_SYSTEM_TRAY_COMMAND, { status: startInSystemTray }); } } diff --git a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html index bbeca39c..eb789ded 100644 --- a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html +++ b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.html @@ -87,8 +87,24 @@

settings.general.systemTray.title

+
+
+
+
+ settings.general.systemTray.start.label + settings.general.systemTray.start.description +
+
+ diff --git a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts index 20ccc9e2..d1ac6b61 100644 --- a/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts +++ b/src/app/views/dashboard-view/views/settings-view/settings-general-tab/settings-general-tab.component.ts @@ -104,7 +104,11 @@ export class SettingsGeneralTabComponent extends SettingsTabComponent implements this.telemetry.updateSettings({ enabled }); } - setExitWithSystemTray(exitWithSystemTray: boolean) { - this.settingsService.updateSettings({ exitWithSystemTray }) + setExitInSystemTray(exitInSystemTray: boolean) { + this.settingsService.updateSettings({ exitInSystemTray }) + } + + setStartInSystemTray(startInSystemTray: boolean) { + this.settingsService.updateSettings({ startInSystemTray }) } } diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 17ba1661..56aaaf0b 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -424,8 +424,12 @@ "systemTray": { "title": "System tray", "close": { - "label": "Exit with system tray", + "label": "Exit in system tray", "description": "Collapses the program into the system tray upon clicking on exit button" + }, + "start": { + "label": "Start in system tray", + "description": "Starts the program reduced in the system tray." } } }, From cb8edc459c6ab3bf512b66e2f9fe5adea603caec Mon Sep 17 00:00:00 2001 From: Neuroblack Date: Mon, 1 May 2023 14:37:44 +0200 Subject: [PATCH 8/8] feat(i18n): update french translation for system tray menus --- src/assets/i18n/fr.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 8dace6b2..c4fe2efe 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -426,6 +426,10 @@ "close": { "label": "Fermer l'application dans la barre d'état", "description": "Réduit l'application dans la barre d'état système lorsque vous cliquez sur le bouton 'Fermer'" + }, + "start": { + "label": "Démarrer dans la barre d'état", + "description": "Démarrer l'application cachée dans la barre d'état. Vous pouvez la restaurer en cliquant sur l'icône dans la barre d'état." } } },