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/commands/splash.rs b/src-tauri/src/commands/splash.rs index 07e010ad..e196f935 100644 --- a/src-tauri/src/commands/splash.rs +++ b/src-tauri/src/commands/splash.rs @@ -1,3 +1,4 @@ +use crate::system_tray::SYSTEMTRAY_MANAGER; use log::debug; use tauri::Manager; @@ -8,6 +9,16 @@ 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 in system tray" option is set to false. + // Otherwise, keep the window hidden until the user clicks the system tray icon to show it. + if !SYSTEMTRAY_MANAGER + .lock() + .await + .as_ref() + .unwrap() + .start_in_tray + { + window.get_window("main").unwrap().show().unwrap(); + } } diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 54329966..88efc5db 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -14,6 +14,7 @@ mod image_cache; mod openvr; mod os; mod osc; +mod system_tray; mod utils; mod vrc_log_parser; @@ -25,6 +26,7 @@ use tauri::{plugin::TauriPlugin, Manager, Wry}; use tauri_plugin_log::{LogTarget, RotationStrategy}; fn main() { + // Construct Oyasumi Tauri application let app = tauri::Builder::default() .plugin(tauri_plugin_store::Builder::default().build()) .plugin(tauri_plugin_fs_extra::init()) @@ -42,8 +44,11 @@ fn main() { } Ok(()) }) + .system_tray(system_tray::init_system_tray()) + .on_system_tray_event(system_tray::handle_system_tray_events()) + .on_window_event(system_tray::handle_window_events()) .invoke_handler(configure_command_handlers()); - + // Run Oyasumi app.run(tauri::generate_context!()) .expect("An error occurred while running the application"); } @@ -65,6 +70,8 @@ fn configure_command_handlers() -> impl Fn(tauri::Invoke) { osc::commands::osc_valid_addr, osc::commands::start_osc_server, osc::commands::stop_osc_server, + system_tray::commands::set_close_to_system_tray, + system_tray::commands::set_start_in_system_tray, elevated_sidecar::commands::elevation_sidecar_running, elevated_sidecar::commands::start_elevation_sidecar, vrc_log_parser::commands::init_vrc_log_watcher, @@ -123,6 +130,8 @@ async fn app_setup(app_handle: tauri::AppHandle) { } // Get dependencies let cache_dir = app_handle.path_resolver().app_cache_dir().unwrap(); + // Initialize the system tray manager + system_tray::init().await; // Initialize Image Cache image_cache::init(cache_dir).await; // Initialize OpenVR Manager diff --git a/src-tauri/src/system_tray/commands.rs b/src-tauri/src/system_tray/commands.rs new file mode 100644 index 00000000..00511d90 --- /dev/null +++ b/src-tauri/src/system_tray/commands.rs @@ -0,0 +1,15 @@ +use super::{SystemTrayManager, SYSTEMTRAY_MANAGER}; + +#[tauri::command] +pub async fn set_close_to_system_tray(enabled: bool) { + let mut manager_guard = SYSTEMTRAY_MANAGER.lock().await; + let mut manager: &mut SystemTrayManager = manager_guard.as_mut().unwrap(); + manager.close_to_tray = enabled; +} + +#[tauri::command] +pub async fn set_start_in_system_tray(enabled: bool) { + let mut manager_guard = SYSTEMTRAY_MANAGER.lock().await; + let mut manager: &mut SystemTrayManager = manager_guard.as_mut().unwrap(); + manager.start_in_tray = enabled; +} diff --git a/src-tauri/src/system_tray/mod.rs b/src-tauri/src/system_tray/mod.rs new file mode 100644 index 00000000..4076fd90 --- /dev/null +++ b/src-tauri/src/system_tray/mod.rs @@ -0,0 +1,79 @@ +pub mod commands; + +use tauri::{AppHandle, CustomMenuItem, Runtime, SystemTray, SystemTrayEvent, SystemTrayMenu}; +use tauri::{GlobalWindowEvent, Manager}; +use tokio::sync::Mutex; + +const QUIT: &str = "quit"; + +lazy_static! { + pub static ref SYSTEMTRAY_MANAGER: Mutex> = Default::default(); +} + +#[derive(Debug, Clone)] +pub struct SystemTrayManager { + pub close_to_tray: bool, + pub start_in_tray: bool, +} + +impl SystemTrayManager { + pub fn new() -> SystemTrayManager { + SystemTrayManager { + close_to_tray: false, + start_in_tray: false, + } + } +} + +pub async fn init() { + // Initialize the system tray manager + let system_tray_manager = SystemTrayManager::new(); + *SYSTEMTRAY_MANAGER.lock().await = Some(system_tray_manager); +} + +// Initializes the system tray with menus. +pub fn init_system_tray() -> SystemTray { + // Menus + let menu_quit = CustomMenuItem::new(QUIT, "Quit"); + + let tray_menu = SystemTrayMenu::new() + //.add_native_item(SystemTrayMenuItem::Separator) + .add_item(menu_quit); + + SystemTray::new().with_menu(tray_menu) +} + +pub fn handle_system_tray_events( +) -> impl Fn(&AppHandle, SystemTrayEvent) + Send + Sync + 'static { + |app, event| { + match event { + SystemTrayEvent::MenuItemClick { id, .. } => { + if id.as_str() == QUIT { + std::process::exit(0); + } + } + // When clicking the tray icon, restore and focus window. + SystemTrayEvent::LeftClick { .. } => { + let window = app.get_window("main").unwrap(); + window.show().unwrap(); + window.set_focus().unwrap(); + } + _ => {} + }; + } +} + +pub fn handle_window_events() -> impl Fn(GlobalWindowEvent) + Send + Sync + 'static { + |event| { + if let tauri::WindowEvent::CloseRequested { api, .. } = event.event() { + let manager_guard = tauri::async_runtime::block_on(SYSTEMTRAY_MANAGER.lock()); + let manager = manager_guard.as_ref().unwrap(); + if manager.close_to_tray { + event.window().hide().unwrap(); + api.prevent_close(); + } else { + std::process::exit(0); + } + } + } +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 4cb947cd..8c9092c5 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -102,6 +102,7 @@ import localeKO from '@angular/common/locales/ko'; import { ResolutionAutomationsViewComponent } from './views/dashboard-view/views/resolution-automations-view/resolution-automations-view.component'; import { RenderResolutionAutomationService } from './services/render-resolution-automation.service'; import { OscGeneralAutomationsService } from './services/osc-general-automations.service'; +import { SystemTrayService } from './services/system-tray.service'; import pMinDelay from 'p-min-delay'; import { SPLASH_MIN_DURATION } from './globals'; import { ModalService } from './services/modal.service'; @@ -237,6 +238,7 @@ export class AppModule { private brightnessControlService: BrightnessControlService, private brightnessControlAutomationService: BrightnessControlAutomationService, private renderResolutionAutomationService: RenderResolutionAutomationService, + private systemTrayService: SystemTrayService, private eventLog: EventLogService ) { this.init(); @@ -249,8 +251,12 @@ 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 base utilities + await Promise.all([ + this.appSettingsService.init(), + this.eventLog.init(), + this.systemTrayService.init(), + ]); // Initialize telemetry await Promise.all([this.telemetryService.init()]); // Initialize general utility services @@ -299,6 +305,11 @@ export class AppModule { SPLASH_MIN_DURATION ); // Close the splash screen after initialization + await Promise.all([ + this.appSettingsService.init(), + this.eventLog.init(), + this.systemTrayService.init(), + ]); await invoke('close_splashscreen'); // Show language selection modal if user hasn't picked a language yet const settings = await firstValueFrom(this.appSettingsService.settings); diff --git a/src/app/migrations/app-settings.migrations.ts b/src/app/migrations/app-settings.migrations.ts index 47be0786..c50fddaa 100644 --- a/src/app/migrations/app-settings.migrations.ts +++ b/src/app/migrations/app-settings.migrations.ts @@ -1,9 +1,9 @@ -import { cloneDeep } from 'lodash'; +import { cloneDeep, merge } from 'lodash'; import { APP_SETTINGS_DEFAULT, AppSettings } from '../models/settings'; import { info } from 'tauri-plugin-log-api'; const migrations: { [v: number]: (data: any) => any } = { - 1: toLatest, + 1: resetToLatest, 2: from1to2, 3: from2to3, 4: from3to4, @@ -14,7 +14,7 @@ export function migrateAppSettings(data: any): AppSettings { let currentVersion = data.version || 0; // Reset to latest when the current version is higher than the latest if (currentVersion > APP_SETTINGS_DEFAULT.version) { - data = toLatest(data); + data = resetToLatest(data); info( `[app-settings-migrations] Reset future app settings version back to version ${ currentVersion + '' @@ -26,10 +26,11 @@ export function migrateAppSettings(data: any): AppSettings { currentVersion = data.version; info(`[app-settings-migrations] Migrated app settings to version ${currentVersion + ''}`); } + data = merge({}, APP_SETTINGS_DEFAULT, data); return data as AppSettings; } -function toLatest(data: any): any { +function resetToLatest(data: any): any { // Reset to latest data = cloneDeep(APP_SETTINGS_DEFAULT); return data; @@ -38,8 +39,6 @@ function toLatest(data: any): any { function from4to5(data: any): any { data.version = 5; data.userLanguagePicked = true; - data.oscEnableExpressionMenu = APP_SETTINGS_DEFAULT.oscEnableExpressionMenu; - data.oscEnableExternalControl = APP_SETTINGS_DEFAULT.oscEnableExternalControl; return data; } @@ -53,12 +52,7 @@ function from3to4(data: any): any { function from2to3(data: any): any { data.version = 3; - data.oscSendingHost = APP_SETTINGS_DEFAULT.oscSendingHost; - data.oscSendingPort = APP_SETTINGS_DEFAULT.oscSendingPort; - data.oscReceivingHost = APP_SETTINGS_DEFAULT.oscReceivingHost; - data.oscReceivingPort = APP_SETTINGS_DEFAULT.oscReceivingPort; - data.enableXSOverlayNotifications = APP_SETTINGS_DEFAULT.enableXSOverlayNotifications; - data.enableDesktopNotifications = APP_SETTINGS_DEFAULT.enableDesktopNotifications; + // Missing keys are now always added by default return data; } diff --git a/src/app/migrations/automation-configs.migrations.ts b/src/app/migrations/automation-configs.migrations.ts index 1d1be13a..7b2727ab 100644 --- a/src/app/migrations/automation-configs.migrations.ts +++ b/src/app/migrations/automation-configs.migrations.ts @@ -1,24 +1,23 @@ -import { cloneDeep } from 'lodash'; +import { cloneDeep, merge } from 'lodash'; import { AUTOMATION_CONFIGS_DEFAULT, AutomationConfigs } from '../models/automations'; import { info } from 'tauri-plugin-log-api'; const migrations: { [v: number]: (data: any) => any } = { - 1: toLatest, - 2: toLatest, + 1: resetToLatest, + 2: resetToLatest, 3: from2to3, 4: from3to4, 5: from4to5, 6: from5to6, 7: from6to7, 8: from7to8, - 9: from8to9, }; export function migrateAutomationConfigs(data: any): AutomationConfigs { let currentVersion = data.version || 0; // Reset to latest when the current version is higher than the latest if (currentVersion > AUTOMATION_CONFIGS_DEFAULT.version) { - data = toLatest(data); + data = resetToLatest(data); info( `[automation-configs-migrations] Reset future automation configs version back to version ${ currentVersion + '' @@ -34,51 +33,25 @@ export function migrateAutomationConfigs(data: any): AutomationConfigs { }` ); } + data = merge({}, AUTOMATION_CONFIGS_DEFAULT, data); return data as AutomationConfigs; } -function toLatest(data: any): any { +function resetToLatest(data: any): any { // Reset to latest data = cloneDeep(AUTOMATION_CONFIGS_DEFAULT); return data; } -function from8to9(data: any): any { - data.version = 9; - data.SLEEP_MODE_ENABLE_FOR_SLEEP_DETECTOR = { - ...data.SLEEP_MODE_ENABLE_FOR_SLEEP_DETECTOR, - detectionWindowMinutes: - AUTOMATION_CONFIGS_DEFAULT.SLEEP_MODE_ENABLE_FOR_SLEEP_DETECTOR.detectionWindowMinutes, - }; - return data; -} - function from7to8(data: any): any { data.version = 8; - data.DISPLAY_BRIGHTNESS_ON_SLEEP_MODE_ENABLE = cloneDeep( - AUTOMATION_CONFIGS_DEFAULT.DISPLAY_BRIGHTNESS_ON_SLEEP_MODE_ENABLE - ); - data.DISPLAY_BRIGHTNESS_ON_SLEEP_MODE_DISABLE = cloneDeep( - AUTOMATION_CONFIGS_DEFAULT.DISPLAY_BRIGHTNESS_ON_SLEEP_MODE_DISABLE - ); - data.RENDER_RESOLUTION_ON_SLEEP_MODE_ENABLE = cloneDeep( - AUTOMATION_CONFIGS_DEFAULT.RENDER_RESOLUTION_ON_SLEEP_MODE_ENABLE - ); - data.RENDER_RESOLUTION_ON_SLEEP_MODE_DISABLE = cloneDeep( - AUTOMATION_CONFIGS_DEFAULT.RENDER_RESOLUTION_ON_SLEEP_MODE_DISABLE - ); - data.OSC_GENERAL = cloneDeep(AUTOMATION_CONFIGS_DEFAULT.OSC_GENERAL); + // Missing keys are now always added by default return data; } function from6to7(data: any): any { data.version = 7; - data.SLEEP_MODE_CHANGE_ON_STEAMVR_STATUS = cloneDeep( - AUTOMATION_CONFIGS_DEFAULT.SLEEP_MODE_CHANGE_ON_STEAMVR_STATUS - ); - data.SLEEP_MODE_ENABLE_FOR_SLEEP_DETECTOR = cloneDeep( - AUTOMATION_CONFIGS_DEFAULT.SLEEP_MODE_ENABLE_FOR_SLEEP_DETECTOR - ); + // Missing keys are now always added by default return data; } @@ -91,22 +64,18 @@ function from5to6(data: any): any { function from4to5(data: any): any { data.version = 5; - data.AUTO_ACCEPT_INVITE_REQUESTS = cloneDeep( - AUTOMATION_CONFIGS_DEFAULT.AUTO_ACCEPT_INVITE_REQUESTS - ); + // Missing keys are now always added by default return data; } function from3to4(data: any): any { data.version = 4; - data.CHANGE_STATUS_BASED_ON_PLAYER_COUNT = cloneDeep( - AUTOMATION_CONFIGS_DEFAULT.CHANGE_STATUS_BASED_ON_PLAYER_COUNT - ); + // Missing keys are now always added by default return data; } function from2to3(data: any): any { data.version = 3; - data.SLEEPING_ANIMATIONS = cloneDeep(AUTOMATION_CONFIGS_DEFAULT.SLEEPING_ANIMATIONS); + // Missing keys are now always added by default return data; } diff --git a/src/app/migrations/telemetry-settings.migrations.ts b/src/app/migrations/telemetry-settings.migrations.ts index 38d03b6e..006196bc 100644 --- a/src/app/migrations/telemetry-settings.migrations.ts +++ b/src/app/migrations/telemetry-settings.migrations.ts @@ -1,4 +1,4 @@ -import { cloneDeep } from 'lodash'; +import { cloneDeep, merge } from 'lodash'; import { TELEMETRY_SETTINGS_DEFAULT, TelemetrySettings } from '../models/telemetry-settings'; import { info } from 'tauri-plugin-log-api'; import { v4 as uuidv4 } from 'uuid'; @@ -27,6 +27,7 @@ export function migrateTelemetrySettings(data: any): TelemetrySettings { }` ); } + data = merge({}, TELEMETRY_SETTINGS_DEFAULT, data); return data as TelemetrySettings; } diff --git a/src/app/migrations/vrchat-api-settings.migrations.ts b/src/app/migrations/vrchat-api-settings.migrations.ts index d4252be5..e67333af 100644 --- a/src/app/migrations/vrchat-api-settings.migrations.ts +++ b/src/app/migrations/vrchat-api-settings.migrations.ts @@ -1,4 +1,4 @@ -import { cloneDeep } from 'lodash'; +import { cloneDeep, merge } from 'lodash'; import { VRCHAT_API_SETTINGS_DEFAULT, VRChatApiSettings } from '../models/vrchat-api-settings'; import { info } from 'tauri-plugin-log-api'; @@ -26,6 +26,7 @@ export function migrateVRChatApiSettings(data: any): VRChatApiSettings { }` ); } + data = merge({}, VRCHAT_API_SETTINGS_DEFAULT, data); return data as VRChatApiSettings; } diff --git a/src/app/models/automations.ts b/src/app/models/automations.ts index c1d64e1c..9fd0f181 100644 --- a/src/app/models/automations.ts +++ b/src/app/models/automations.ts @@ -33,7 +33,7 @@ export type AutomationType = | 'RENDER_RESOLUTION_ON_SLEEP_MODE_DISABLE'; export interface AutomationConfigs { - version: 9; + version: 8; GPU_POWER_LIMITS: GPUPowerLimitsAutomationConfig; MSI_AFTERBURNER: MSIAfterburnerAutomationConfig; // SLEEP MODE AUTOMATIONS @@ -183,7 +183,7 @@ export interface AutoAcceptInviteRequestsAutomationConfig extends AutomationConf // export const AUTOMATION_CONFIGS_DEFAULT: AutomationConfigs = { - version: 9, + version: 8, // BRIGHTNESS AUTOMATIONS DISPLAY_BRIGHTNESS_ON_SLEEP_MODE_ENABLE: { enabled: false, diff --git a/src/app/models/settings.ts b/src/app/models/settings.ts index d1fa49c7..fd931baf 100644 --- a/src/app/models/settings.ts +++ b/src/app/models/settings.ts @@ -12,6 +12,8 @@ export interface AppSettings { oscEnableExternalControl: boolean; enableDesktopNotifications: boolean; enableXSOverlayNotifications: boolean; + exitInSystemTray: boolean; + startInSystemTray: boolean; } export const APP_SETTINGS_DEFAULT: AppSettings = { @@ -29,6 +31,8 @@ export const APP_SETTINGS_DEFAULT: AppSettings = { oscEnableExternalControl: true, enableXSOverlayNotifications: false, enableDesktopNotifications: 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 new file mode 100644 index 00000000..71db3837 --- /dev/null +++ b/src/app/services/system-tray.service.ts @@ -0,0 +1,43 @@ +import { Injectable } from '@angular/core'; +import { AppSettingsService } from './app-settings.service'; +import { debounceTime, distinctUntilChanged, map } from 'rxjs'; +import { invoke } from '@tauri-apps/api'; + +const CLOSE_TO_SYSTEM_TRAY_COMMAND = 'set_close_to_system_tray'; +const START_IN_SYSTEM_TRAY_COMMAND = 'set_start_in_system_tray'; + +@Injectable({ + providedIn: 'root', +}) +export class SystemTrayService { + constructor(private readonly _appSettingsService: AppSettingsService) {} + + async init() { + // Update exit in system tray behaviour following the setting. + this._appSettingsService.settings + .pipe( + map((settings) => settings.exitInSystemTray), + distinctUntilChanged(), + debounceTime(100) + ) + .subscribe((exitInSystemTray) => this.updateCloseToSystemTray(exitInSystemTray)); + + // Update start in system tray behaviour following the settings. + // Send command only upon loading settings, in order to hide or show the window upon startup. + this._appSettingsService.settings + .pipe( + map((settings) => settings.startInSystemTray), + distinctUntilChanged(), + debounceTime(100) + ) + .subscribe((startInSystemTray) => this.updateStartInSystemTray(startInSystemTray)); + } + + private async updateCloseToSystemTray(enabled: boolean) { + await invoke(CLOSE_TO_SYSTEM_TRAY_COMMAND, { enabled }); + } + + private async updateStartInSystemTray(enabled: boolean) { + await invoke(START_IN_SYSTEM_TRAY_COMMAND, { enabled }); + } +} 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..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 @@ -74,6 +74,46 @@

settings.general.adminPrivileges.title

+ +
+

settings.general.systemTray.title

+
+
+
+ settings.general.systemTray.close.label + settings.general.systemTray.close.description +
+
+ +
+
+
+
+ settings.general.systemTray.start.label + settings.general.systemTray.start.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 8d8e38fa..52499e55 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 @@ -106,4 +106,12 @@ export class SettingsGeneralTabComponent extends SettingsTabComponent implements setTelemetryEnabled(enabled: boolean) { this.telemetry.updateSettings({ enabled }); } + + 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 f03a6bff..17a6f343 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -424,6 +424,17 @@ "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": "Close to the system tray", + "description": "Closes Oyasumi to the system tray instead of exiting the program." + }, + "start": { + "label": "Start in the system tray", + "description": "Starts Oyasumi minimized to the system tray." + } } }, "vrchat": { diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 7e8783d5..c69116e7 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -417,6 +417,17 @@ "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'" + }, + "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." + } } }, "vrchat": { diff --git a/yarn.lock b/yarn.lock index 165a1055..0b95caa7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -354,7 +354,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== @@ -511,7 +520,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== @@ -1536,7 +1545,7 @@ resolved "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.0.0.tgz" integrity sha512-I5zjGtJu2wwIdM+OFUHXezmwTJ0wpParVJgCxR0cLd0CIbpRYSjOSZQN/nR9ZnTKAI5uFZ3MM2p/VRQGUUHUcw== -"@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== @@ -1558,7 +1567,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== @@ -2299,7 +2308,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== @@ -2312,7 +2321,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== @@ -2336,7 +2345,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== @@ -2361,11 +2370,11 @@ ajv@8.12.0, ajv@^8.0.0, ajv@^8.9.0: integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== 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.10.0, ajv@^6.12.4, ajv@^6.12.5: +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== @@ -2503,11 +2512,6 @@ array-flatten@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-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" @@ -2616,7 +2620,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== @@ -2679,7 +2683,7 @@ body-parser@1.20.1: integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 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" @@ -2687,17 +2691,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" @@ -2705,7 +2709,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" @@ -2901,7 +2905,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== @@ -3129,7 +3133,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== @@ -3277,26 +3281,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" decompress-response@^6.0.0: version "6.0.0" @@ -3376,7 +3380,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== @@ -3706,7 +3710,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== @@ -3806,7 +3810,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== @@ -4165,7 +4174,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== @@ -4189,11 +4205,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" @@ -4274,7 +4285,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== @@ -4326,11 +4344,9 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.7: 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" + minimatch "^7.4.1" + minipass "^4.2.4" + path-scurry "^1.6.1" globals@^11.1.0: version "11.12.0" @@ -4486,6 +4502,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" @@ -4497,16 +4523,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" @@ -4541,7 +4557,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== @@ -4566,14 +4582,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== @@ -4648,7 +4671,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== @@ -4703,16 +4726,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" @@ -5102,7 +5125,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== @@ -5162,7 +5185,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== @@ -5238,7 +5261,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== @@ -5297,11 +5320,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" @@ -5311,6 +5329,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" @@ -5563,7 +5586,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== @@ -5575,7 +5598,7 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, 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== @@ -5626,7 +5649,7 @@ 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== @@ -5715,6 +5738,16 @@ minipass@^5.0.0: resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== +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== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" @@ -5740,6 +5773,13 @@ 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" @@ -5807,7 +5847,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== @@ -5928,7 +5968,7 @@ npm-normalize-package-bin@^3.0.0: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz" integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== -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== @@ -5945,7 +5985,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== @@ -6087,13 +6127,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" @@ -6101,6 +6134,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" @@ -6148,7 +6188,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== @@ -6614,7 +6654,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== @@ -6636,6 +6715,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.3" resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz" @@ -6785,6 +6877,13 @@ rfdc@^1.3.0: resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rimraf@2: version "2.7.1" resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" @@ -6825,7 +6924,7 @@ rxjs@7.8.1, rxjs@^7.5.5, rxjs@^7.5.7: dependencies: tslib "^2.1.0" -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== @@ -6883,6 +6982,15 @@ schema-utils@^3.1.1, schema-utils@^3.1.2: 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== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + schema-utils@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz" @@ -6924,7 +7032,7 @@ semver@^5.6.0: 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== @@ -7165,7 +7273,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== @@ -7179,7 +7287,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== @@ -7187,7 +7295,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== @@ -7265,16 +7373,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" @@ -7352,7 +7465,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== @@ -7488,7 +7601,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== @@ -7522,6 +7635,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" @@ -7568,6 +7688,11 @@ tslib@^1.8.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" @@ -7742,7 +7867,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== @@ -7858,18 +7988,18 @@ webpack-dev-middleware@6.0.2: integrity sha512-iOddiJzPcQC6lwOIu60vscbGWth8PCRcWRCwoQcTQf9RMoOWBHg5EyzpGdtSmGMrSPd5vHEfFXmVErQEmkRngQ== 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" @@ -8014,7 +8144,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==