From 979539d3db1ee4121b139aac86a1866ed24657c0 Mon Sep 17 00:00:00 2001 From: andrei-mihnea-cerbu Date: Tue, 29 Oct 2024 15:07:26 +0200 Subject: [PATCH] program finalizat --- .gitignore | 4 +- CEO/package-lock.json | 5086 ++++++++++++++++- CEO/package.json | 53 +- CEO/render/assets/2581896.png | Bin 0 -> 42634 bytes CEO/render/assets/background.png | Bin 304850 -> 0 bytes CEO/render/assets/cloud-computing.webp | Bin 0 -> 11780 bytes CEO/render/assets/loading.gif | Bin 72191 -> 0 bytes CEO/render/assets/mail_2772213.png | Bin 0 -> 21879 bytes CEO/render/assets/refresh-data.webp | Bin 0 -> 9132 bytes CEO/render/css/announcement.css | 133 + CEO/render/css/departments_management.css | 176 - CEO/render/css/loading.css | 59 + CEO/render/css/login.css | 209 +- CEO/render/css/main_menu.css | 371 +- CEO/render/css/normalizer.css | 41 + CEO/render/css/overview_departments.css | 215 + CEO/render/css/overview_users.css | 153 + CEO/render/css/profile.css | 184 +- CEO/render/css/reset_password.css | 217 +- CEO/render/css/share_file.css | 279 +- CEO/render/css/sign_up.css | 117 - CEO/render/css/uc_not_found.css | 59 - CEO/render/css/users_management.css | 141 - CEO/render/css/welcome.css | 59 - CEO/render/html/announcement.html | 36 + .../backup_retrieve.html} | 10 +- CEO/render/html/departments_management.html | 48 - CEO/render/html/login.html | 18 +- CEO/render/html/main_menu.html | 111 +- CEO/render/html/overview_departments.html | 57 + CEO/render/html/overview_users.html | 34 + CEO/render/html/profile.html | 39 +- CEO/render/html/reset_database.html | 30 + CEO/render/html/reset_password.html | 18 +- CEO/render/html/send_announcement.html | 30 + CEO/render/html/share_file.html | 50 +- CEO/render/html/sign_up.html | 63 - CEO/render/html/uc_not_found.html | 11 +- CEO/render/html/users_management.html | 29 - CEO/render/html/welcome.html | 9 +- CEO/render/js/announcement.js | 22 + CEO/render/js/departments_management.js | 216 - CEO/render/js/helpers.js | 20 +- CEO/render/js/login.js | 172 +- CEO/render/js/main_menu.js | 416 +- CEO/render/js/overview_departments.js | 209 + CEO/render/js/overview_users.js | 150 + CEO/render/js/profile.js | 7 +- CEO/render/js/reset_database.js | 31 + CEO/render/js/reset_password.js | 37 +- CEO/render/js/share_file.js | 152 +- CEO/render/js/sign_up.js | 134 - CEO/render/js/users_management.js | 142 - CEO/src/helpers/announcement_sender.ts | 84 + CEO/src/helpers/backup_manager.ts | 332 +- CEO/src/helpers/backup_retrieval.ts | 256 +- CEO/src/helpers/department_sharer.ts | 216 +- CEO/src/helpers/file_sharer.ts | 126 +- CEO/src/helpers/task_scheduler.ts | 76 - CEO/src/helpers/users_info_fetcher.ts | 42 +- CEO/src/helpers/worker_manager.ts | 75 +- CEO/src/main/main.ts | 96 +- CEO/src/main/preload.ts | 6 +- CEO/src/network/operation_codes.ts | 10 +- .../network/operations_base/operation_base.ts | 3 - .../tcp_client_communicator.ts | 2 - CEO/src/network/tcp/tcp_client.ts | 3 - CEO/src/workers/backup_retrieval_worker.ts | 14 +- .../src/workers/directories_watcher_worker.ts | 6 +- CEO/src/workers/network_scanner_worker.ts | 94 + .../workers/resource_coordinator_worker.ts | 4 +- CEO/src/workers/send_announcement_worker.ts | 19 + UC/src/db_managers/user_database.ts | 5 +- User/.env | 4 +- User/package-lock.json | 4112 ++++++++++++- User/package.json | 53 +- User/render/assets/2581896.png | Bin 0 -> 42634 bytes User/render/assets/background.png | Bin 304850 -> 0 bytes User/render/assets/cloud-computing.webp | Bin 0 -> 11780 bytes User/render/assets/icon.icns | Bin 0 -> 47115 bytes User/render/assets/icon.ico | Bin 0 -> 12947 bytes .../render/assets/icon.png | Bin User/render/assets/loading.gif | Bin 72191 -> 0 bytes User/render/assets/refresh-data.webp | Bin 0 -> 9132 bytes User/render/css/announcement.css | 79 + User/render/css/loading.css | 59 + User/render/css/login.css | 209 +- User/render/css/main_menu.css | 360 +- User/render/css/normalizer.css | 41 + User/render/css/profile.css | 184 +- User/render/css/reset_password.css | 217 +- User/render/css/share_file.css | 279 +- User/render/css/sign_up.css | 226 +- User/render/css/uc_not_found.css | 59 - User/render/css/welcome.css | 59 - User/render/html/announcement.html | 31 + User/render/html/backup_retreive.html | 26 - .../render/html/backup_retrieve.html | 12 +- User/render/html/login.html | 20 +- User/render/html/main_menu.html | 59 +- User/render/html/profile.html | 39 +- User/render/html/reset_database.html | 31 + User/render/html/reset_password.html | 18 +- User/render/html/share_file.html | 50 +- User/render/html/sign_up.html | 21 +- User/render/html/uc_not_found.html | 11 +- User/render/html/welcome.html | 9 +- User/render/js/announcement.js | 35 + User/render/js/helpers.js | 19 +- User/render/js/login.js | 184 +- User/render/js/main_menu.js | 13 +- User/render/js/profile.js | 7 +- User/render/js/reset_database.js | 4 + User/render/js/reset_password.js | 37 +- User/render/js/share_file.js | 152 +- User/render/js/sign_up.js | 94 +- User/src/helpers/backup_manager.ts | 332 +- User/src/helpers/backup_retrieval.ts | 256 +- User/src/helpers/department_sharer.ts | 216 +- User/src/helpers/file_sharer.ts | 126 +- User/src/helpers/task_scheduler.ts | 76 - User/src/helpers/users_info_fetcher.ts | 42 +- User/src/helpers/window_manager.ts | 43 + User/src/helpers/worker_manager.ts | 45 +- User/src/main/main.ts | 78 +- User/src/main/preload.ts | 5 +- User/src/network/operation_codes.ts | 1 + .../network/operations_base/operation_base.ts | 3 - .../user_to_user_operations.ts | 112 +- .../tcp_client_communicator.ts | 2 - User/src/network/tcp/tcp_client.ts | 3 - User/src/workers/backup_retrieval_worker.ts | 14 +- .../src/workers/directories_watcher_worker.ts | 6 +- User/src/workers/network_scanner_worker.ts | 167 + .../workers/resource_coordinator_worker.ts | 4 +- app_icons/icon.icns | Bin 0 -> 47115 bytes app_icons/icon.ico | Bin 0 -> 12947 bytes .../hard-disk.png => app_icons/icon.png | Bin 138 files changed, 14602 insertions(+), 5068 deletions(-) create mode 100644 CEO/render/assets/2581896.png delete mode 100644 CEO/render/assets/background.png create mode 100644 CEO/render/assets/cloud-computing.webp delete mode 100644 CEO/render/assets/loading.gif create mode 100644 CEO/render/assets/mail_2772213.png create mode 100644 CEO/render/assets/refresh-data.webp create mode 100644 CEO/render/css/announcement.css delete mode 100644 CEO/render/css/departments_management.css create mode 100644 CEO/render/css/loading.css create mode 100644 CEO/render/css/normalizer.css create mode 100644 CEO/render/css/overview_departments.css create mode 100644 CEO/render/css/overview_users.css delete mode 100644 CEO/render/css/sign_up.css delete mode 100644 CEO/render/css/uc_not_found.css delete mode 100644 CEO/render/css/users_management.css delete mode 100644 CEO/render/css/welcome.css create mode 100644 CEO/render/html/announcement.html rename CEO/render/{js/backup_retreive.html => html/backup_retrieve.html} (56%) delete mode 100644 CEO/render/html/departments_management.html create mode 100644 CEO/render/html/overview_departments.html create mode 100644 CEO/render/html/overview_users.html create mode 100644 CEO/render/html/reset_database.html create mode 100644 CEO/render/html/send_announcement.html delete mode 100644 CEO/render/html/sign_up.html delete mode 100644 CEO/render/html/users_management.html create mode 100644 CEO/render/js/announcement.js delete mode 100644 CEO/render/js/departments_management.js create mode 100644 CEO/render/js/overview_departments.js create mode 100644 CEO/render/js/overview_users.js create mode 100644 CEO/render/js/reset_database.js delete mode 100644 CEO/render/js/sign_up.js delete mode 100644 CEO/render/js/users_management.js create mode 100644 CEO/src/helpers/announcement_sender.ts delete mode 100644 CEO/src/helpers/task_scheduler.ts rename User/src/workers/watcher_worker.ts => CEO/src/workers/directories_watcher_worker.ts (93%) create mode 100644 CEO/src/workers/network_scanner_worker.ts create mode 100644 CEO/src/workers/send_announcement_worker.ts create mode 100644 User/render/assets/2581896.png delete mode 100644 User/render/assets/background.png create mode 100644 User/render/assets/cloud-computing.webp create mode 100644 User/render/assets/icon.icns create mode 100644 User/render/assets/icon.ico rename CEO/render/assets/hard-disk.png => User/render/assets/icon.png (100%) delete mode 100644 User/render/assets/loading.gif create mode 100644 User/render/assets/refresh-data.webp create mode 100644 User/render/css/announcement.css create mode 100644 User/render/css/loading.css create mode 100644 User/render/css/normalizer.css delete mode 100644 User/render/css/uc_not_found.css delete mode 100644 User/render/css/welcome.css create mode 100644 User/render/html/announcement.html delete mode 100644 User/render/html/backup_retreive.html rename CEO/render/html/backup_retreive.html => User/render/html/backup_retrieve.html (51%) create mode 100644 User/render/html/reset_database.html create mode 100644 User/render/js/announcement.js create mode 100644 User/render/js/reset_database.js delete mode 100644 User/src/helpers/task_scheduler.ts rename CEO/src/workers/watcher_worker.ts => User/src/workers/directories_watcher_worker.ts (93%) create mode 100644 User/src/workers/network_scanner_worker.ts create mode 100644 app_icons/icon.icns create mode 100644 app_icons/icon.ico rename User/render/assets/hard-disk.png => app_icons/icon.png (100%) diff --git a/.gitignore b/.gitignore index 34c4656..71802b2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ node_modules/ # Ignore build artifacts dist/ .idea +out/ +json_files/ # Ignore environment-specific settings *.log @@ -15,4 +17,4 @@ yarn-error.log* .env.* # Keep the .env file -!.env +!.env \ No newline at end of file diff --git a/CEO/package-lock.json b/CEO/package-lock.json index 471427f..2b2fb4b 100644 --- a/CEO/package-lock.json +++ b/CEO/package-lock.json @@ -10,24 +10,433 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", - "electron": "^32.0.1", "ping": "^0.4.4", "uuid": "^10.0.0" }, "devDependencies": { - "@types/electron": "^1.6.10", - "@types/node": "^22.6.1", + "@electron-forge/cli": "^6.0.0", + "@electron-forge/maker-deb": "^6.0.0", + "@electron-forge/maker-rpm": "^6.0.0", + "@electron-forge/maker-squirrel": "^6.0.0", + "@electron-forge/maker-zip": "^6.0.0", "@types/ping": "^0.4.4", "@types/uuid": "^10.0.0", "copyfiles": "^2.4.1", - "electronmon": "^2.0.3", + "del-cli": "^5.0.0", + "electron": "^33.0.2", "typescript": "^5.6.2" } }, + "node_modules/@babel/code-frame": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", + "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@electron-forge/cli": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-6.4.2.tgz", + "integrity": "sha512-bM6YVTV0uUEpIL1jkpARlSm4Li26XZn+avC/lyTdpPqnd65T/oXZNkrAD+2Jb0RlgplOaM21qWm7ybtvKDGDyA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-cli?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "MIT", + "dependencies": { + "@electron-forge/core": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "@electron/get": "^2.0.0", + "chalk": "^4.0.0", + "commander": "^4.1.1", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "listr2": "^5.0.3", + "semver": "^7.2.1" + }, + "bin": { + "electron-forge": "dist/electron-forge.js", + "electron-forge-vscode-nix": "script/vscode.sh", + "electron-forge-vscode-win": "script/vscode.cmd" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/cli/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@electron-forge/cli/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-6.4.2.tgz", + "integrity": "sha512-VtrFZ1Q7NG1ov0jJO/tUvUiYdWZ0Y31xw762is/jfpRPD6V/soOpwJJAoWoPK9TZVkTm2pkS8S5LikCMbNCLxw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-core?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "MIT", + "dependencies": { + "@electron-forge/core-utils": "6.4.2", + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/plugin-base": "6.4.2", + "@electron-forge/publisher-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "@electron-forge/template-vite": "6.4.2", + "@electron-forge/template-vite-typescript": "6.4.2", + "@electron-forge/template-webpack": "6.4.2", + "@electron-forge/template-webpack-typescript": "6.4.2", + "@electron/get": "^2.0.0", + "@electron/rebuild": "^3.2.10", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "electron-packager": "^17.1.2", + "fast-glob": "^3.2.7", + "filenamify": "^4.1.0", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "got": "^11.8.5", + "interpret": "^3.1.1", + "listr2": "^5.0.3", + "lodash": "^4.17.20", + "log-symbols": "^4.0.0", + "node-fetch": "^2.6.7", + "progress": "^2.0.3", + "rechoir": "^0.8.0", + "resolve-package": "^1.0.1", + "semver": "^7.2.1", + "source-map-support": "^0.5.13", + "sudo-prompt": "^9.1.1", + "username": "^5.1.0", + "yarn-or-npm": "^3.0.1" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/core-utils": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-6.4.2.tgz", + "integrity": "sha512-CjB3aakmRsXAMMDYc8PxNTMf4FdI29y4PErfv7eCXlL5oo3JW0VSKZIV7R8/Po0S0got85q2kmhZgCKuxL1BNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron/rebuild": "^3.2.10", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "log-symbols": "^4.0.0", + "semver": "^7.2.1", + "yarn-or-npm": "^3.0.1" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/core/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/maker-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-6.4.2.tgz", + "integrity": "sha512-zW3GH+LqDK9nxQmQEFkJPR8RqiX0lVk6a4mXll3ngujN1fPevO4ivUAWmaEVeC1dH/hXbN7s9m0S6a37MigftQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "fs-extra": "^10.0.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/maker-deb": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-6.4.2.tgz", + "integrity": "sha512-tlV8ffivgBP94vtYXgAeXgzeKCaRyLuWH9LT8PQW1QrYbAFpCMmuwk/zFaJkyMklImCWmDFTPYMEqdEJGd7Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-installer-debian": "^3.2.0" + } + }, + "node_modules/@electron-forge/maker-rpm": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-6.4.2.tgz", + "integrity": "sha512-+hfbY5pYbAer0y07OtOzVgVBHoTRmemqqZ//T0mKJpyK2ThHKGTvyW8FFlr5jlQs5LoDCM2WHKE8oGtRhivsMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-installer-redhat": "^3.2.0" + } + }, + "node_modules/@electron-forge/maker-squirrel": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-6.4.2.tgz", + "integrity": "sha512-ukK3RcFaBrQXUzR52PsHxfwDq5XKSnj6A1kkXiyHWqgj+HIU97prBScBb5JRtasPvYN+nDdQO2vlInsLaqcx9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-winstaller": "^5.0.0" + } + }, + "node_modules/@electron-forge/maker-zip": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-6.4.2.tgz", + "integrity": "sha512-k2nfhhnxcYbUS7rCKCisuqEalxtH9l73+lrtfL0aQZiE/BLbDXyNckDIDOPvX0tBEg62nVzUdJonZwOhZVvAMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "cross-zip": "^4.0.0", + "fs-extra": "^10.0.0", + "got": "^11.8.5" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/plugin-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-6.4.2.tgz", + "integrity": "sha512-g6AAtQ7fZ94djBmwcnWasQ8xgaNVNjgaQ00GLK0NkmQ7n0PNbsnlMDuw9vdfTiL6WaLg5nxNSYc9bFJP/rtyeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/publisher-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-6.4.2.tgz", + "integrity": "sha512-Tnf9O8MFzdT1gsb5EDDaQUoslt7gUuUywtsr+lT/fpBlBQbei2fvioTwvZ1Q1cmsKnld7XhRh6unfgdWLTZzgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-6.4.2.tgz", + "integrity": "sha512-vsQh+64Fr2Vxg6k8DAahWq4MAdB2F2qTig+LgIJENv8ksbzC1YIq05SBAS/g2674cdr7WdwyukMy2rgxe3rhnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "username": "^5.1.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-vite": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-6.4.2.tgz", + "integrity": "sha512-NX7jHRblBmIqufMbqWgpI/VnpgF/qMSTq9ZPmDSXamBhid336MC6+DoWzDpXceQZEp0m/jpMLR04ynr8O4jGlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/@electron-forge/template-vite-typescript": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-6.4.2.tgz", + "integrity": "sha512-h3pn6onvC/nLglmJuelYU82Qzrh0l6MqvbBGoT39bbDoRLIqmlhWTWppHgDJVXAGrSoH+9BEpptipeBQWirFwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/@electron-forge/template-webpack": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-6.4.2.tgz", + "integrity": "sha512-9QYr/td4cmnGOj8UF25W6An/eI+JXj9T/b+KFybL3cQ87H1yrQOn2T84Bm5/JaB4SPdIu4FdKRjqwR7C7R0g2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-webpack-typescript": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-6.4.2.tgz", + "integrity": "sha512-MPAZQ4v6piCED7NT1LTVQf61o6Eg/laNoKbhbrFBSH1i20OUwbtV2MLj6Op292ynI9+1qdHKmFgctr6qPTCAQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron/asar": { + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.14.tgz", + "integrity": "sha512-hc52QkesULqbxTRC1vOmSBN1YndUkieoNMfvpe988h0MEoGGqbijkOqv4/2M9PufBJxiTVoDdBmBFfXPowZDQg==", + "dev": true, + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/@electron/get": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", @@ -48,6 +457,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -61,6 +471,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -69,14 +480,269 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, "engines": { "node": ">= 4.0.0" } }, + "node_modules/@electron/osx-sign": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz", + "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==", + "dev": true, + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@electron/rebuild": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.1.tgz", + "integrity": "sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "node-gyp": "^9.0.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/rebuild/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/rebuild/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/rebuild/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "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" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/rebuild/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/windows-sign": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.1.3.tgz", + "integrity": "sha512-OqVSdAe+/88fIjvTDWiy+5Ho1nXsiBhE5RTsIQ6M/zcxcDAEP2TlQCkOyusItnmzXRN+XTFaK9gKhiZ6KGyXQw==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, "engines": { "node": ">=10" }, @@ -88,6 +754,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -95,10 +762,20 @@ "node": ">=10" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -106,47 +783,84 @@ "@types/responselike": "^1.0.0" } }, - "node_modules/@types/electron": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/@types/electron/-/electron-1.6.10.tgz", - "integrity": "sha512-MOCVyzIwkBEloreoCVrTV108vSf8fFIJPsGruLCoAoBZdxtnJUqKA4lNonf/2u1twSjAspPEfmEheC+TLm/cMw==", - "deprecated": "This is a stub types definition for electron (https://github.com/electron/electron). electron provides its own type definitions, so you don't need @types/electron installed!", + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, + "optional": true, "dependencies": { - "electron": "*" + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" } }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, "node_modules/@types/node": { "version": "22.6.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.6.1.tgz", "integrity": "sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==", + "dev": true, "dependencies": { "undici-types": "~6.19.2" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, "node_modules/@types/ping": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/@types/ping/-/ping-0.4.4.tgz", "integrity": "sha512-ifvo6w2f5eJYlXm+HiVx67iJe8WZp87sfa683nlqED5Vnt9Z93onkokNoWqOG21EaE8fMxyKPobE+mkPEyxsdw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -155,17 +869,91 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, "optional": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, + "dependencies": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -190,16 +978,221 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asar": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", + "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + }, + "optionalDependencies": { + "@types/glob": "^7.1.1" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bl/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, "node_modules/boolean": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, "optional": true }, "node_modules/brace-expansion": { @@ -224,18 +1217,188 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, "engines": { "node": "*" } }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, "engines": { "node": ">=10.6.0" } @@ -244,6 +1407,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -257,40 +1421,147 @@ "node": ">=8" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "dev": true, + "dependencies": { + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true, + "optional": true + }, + "node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" }, "engines": { "node": ">=8" } }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -302,10 +1573,20 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, "dependencies": { "mimic-response": "^1.0.0" }, @@ -331,12 +1612,52 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, "node_modules/copyfiles": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", @@ -362,10 +1683,105 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn-windows-exe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz", + "integrity": "sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-cross-spawn-windows-exe?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "is-wsl": "^2.2.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-spawn-windows-exe/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-zip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-4.0.1.tgz", + "integrity": "sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.10" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -378,10 +1794,57 @@ } } }, + "node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -396,6 +1859,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, "engines": { "node": ">=10" }, @@ -403,10 +1867,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, "engines": { "node": ">=10" } @@ -415,6 +1892,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "optional": true, "dependencies": { "es-define-property": "^1.0.0", @@ -432,6 +1910,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "optional": true, "dependencies": { "define-data-property": "^1.0.1", @@ -445,12 +1924,82 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/del": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-7.1.0.tgz", + "integrity": "sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==", + "dev": true, + "dependencies": { + "globby": "^13.1.2", + "graceful-fs": "^4.2.10", + "is-glob": "^4.0.3", + "is-path-cwd": "^3.0.0", + "is-path-inside": "^4.0.0", + "p-map": "^5.5.0", + "rimraf": "^3.0.2", + "slash": "^4.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del-cli": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del-cli/-/del-cli-5.1.0.tgz", + "integrity": "sha512-xwMeh2acluWeccsfzE7VLsG3yTr7nWikbfw+xhMnpRrF15pGSkw+3/vJZWlGoE4I86UiLRNHicmKt4tkIX9Jtg==", + "dev": true, + "dependencies": { + "del": "^7.1.0", + "meow": "^10.1.3" + }, + "bin": { + "del": "cli.js", + "del-cli": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, "optional": true }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -463,10 +2012,12 @@ } }, "node_modules/electron": { - "version": "32.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-32.0.1.tgz", - "integrity": "sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA==", + "version": "33.0.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-33.0.2.tgz", + "integrity": "sha512-C2WksfP0COsMHbYXSJG68j6S3TjuGDrw/YT42B526yXalIlNQZ2GeAYKryg6AEMkIp3p8TUfDRD0+HyiyCt/nw==", + "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@electron/get": "^2.0.0", "@types/node": "^20.9.0", @@ -479,30 +2030,469 @@ "node": ">= 12.20.55" } }, - "node_modules/electron/node_modules/@types/node": { - "version": "20.16.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.6.tgz", - "integrity": "sha512-T7PpxM/6yeDE+AdlVysT62BX6/bECZOmQAgiFg5NoBd5MQheZ3tzal7f1wvzfiEcmrcJNRi2zRr2nY2zF+0uqw==", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/electronmon": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/electronmon/-/electronmon-2.0.3.tgz", - "integrity": "sha512-vpsNupi9sCzOCvx8GACbSHKEImkNF2a6pU5Io2yabARbJeQ/8ZuY7t/43LilF6Qw0nZ0MbKQt4sO3x0F3drpQQ==", + "node_modules/electron-installer-common": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/electron-installer-common/-/electron-installer-common-0.10.3.tgz", + "integrity": "sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA==", "dev": true, + "license": "Apache-2.0", + "optional": true, "dependencies": { - "chalk": "^3.0.0", - "import-from": "^3.0.0", - "runtime-required": "^1.1.0", - "watchboy": "^0.4.3" - }, - "bin": { - "electronmon": "bin/cli.js" + "@malept/cross-spawn-promise": "^1.0.0", + "asar": "^3.0.0", + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "glob": "^7.1.4", + "lodash": "^4.17.15", + "parse-author": "^2.0.0", + "semver": "^7.1.1", + "tmp-promise": "^3.0.2" }, "engines": { - "node": ">=10.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "url": "https://github.com/electron-userland/electron-installer-common?sponsor=1" + }, + "optionalDependencies": { + "@types/fs-extra": "^9.0.1" + } + }, + "node_modules/electron-installer-common/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-common/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-common/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-debian": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-3.2.0.tgz", + "integrity": "sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin", + "linux" + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "electron-installer-common": "^0.10.2", + "fs-extra": "^9.0.0", + "get-folder-size": "^2.0.1", + "lodash": "^4.17.4", + "word-wrap": "^1.2.3", + "yargs": "^16.0.2" + }, + "bin": { + "electron-installer-debian": "src/cli.js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-debian/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-debian/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-redhat": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/electron-installer-redhat/-/electron-installer-redhat-3.4.0.tgz", + "integrity": "sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin", + "linux" + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "electron-installer-common": "^0.10.2", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "word-wrap": "^1.2.3", + "yargs": "^16.0.2" + }, + "bin": { + "electron-installer-redhat": "src/cli.js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-redhat/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-redhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager": { + "version": "17.1.2", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-17.1.2.tgz", + "integrity": "sha512-XofXdikjYI7MVBcnXeoOvRR+yFFFHOLs3J7PF5KYQweigtgLshcH4W660PsvHr4lYZ03JBpLyEcUB8DzHZ+BNw==", + "deprecated": "Please use @electron/packager moving forward. There is no API change, just a package name change", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@electron/asar": "^3.2.1", + "@electron/get": "^2.0.0", + "@electron/notarize": "^1.2.3", + "@electron/osx-sign": "^1.0.5", + "@electron/universal": "^1.3.2", + "cross-spawn-windows-exe": "^1.2.0", + "debug": "^4.0.1", + "extract-zip": "^2.0.0", + "filenamify": "^4.1.0", + "fs-extra": "^11.1.0", + "galactus": "^1.0.0", + "get-package-info": "^1.0.0", + "junk": "^3.1.0", + "parse-author": "^2.0.0", + "plist": "^3.0.0", + "rcedit": "^3.0.1", + "resolve": "^1.1.6", + "semver": "^7.1.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "electron-packager": "bin/electron-packager.js" + }, + "engines": { + "node": ">= 14.17.5" + }, + "funding": { + "url": "https://github.com/electron/electron-packager?sponsor=1" + } + }, + "node_modules/electron-packager/node_modules/@electron/notarize": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz", + "integrity": "sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-packager/node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager/node_modules/@electron/universal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", + "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/electron-packager/node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-packager/node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "node_modules/electron-packager/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/electron-packager/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-winstaller": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", + "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.21", + "temp": "^0.9.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "@electron/windows-sign": "^1.1.2" + } + }, + "node_modules/electron-winstaller/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron-winstaller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optional": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-winstaller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/electron/node_modules/@types/node": { + "version": "20.17.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.2.tgz", + "integrity": "sha512-OOHK4sjXqkL7yQ7VEEHcf6+0jSvKjWqwnaCtY7AKD/VLEvRHMsxxu7eI8ErnjxHS8VwmekD4PeVCpu4qZEZSxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" } }, "node_modules/emoji-regex": { @@ -511,10 +2501,21 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "dependencies": { "once": "^1.4.0" } @@ -523,14 +2524,31 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "engines": { "node": ">=6" } }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "optional": true, "dependencies": { "get-intrinsic": "^1.2.4" @@ -543,6 +2561,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "optional": true, "engines": { "node": ">= 0.4" @@ -552,6 +2571,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, "optional": true }, "node_modules/escalade": { @@ -567,6 +2587,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "optional": true, "engines": { "node": ">=10" @@ -575,10 +2596,135 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -594,14 +2740,68 @@ "@types/yauzl": "^2.9.1" } }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "dependencies": { "pend": "~1.2.0" } }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -614,6 +2814,62 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flora-colossus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz", + "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -624,11 +2880,55 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "optional": true, + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/galactus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz", + "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "flora-colossus": "^2.0.0", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/gar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz", + "integrity": "sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -638,10 +2938,36 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-folder-size": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-folder-size/-/get-folder-size-2.0.1.tgz", + "integrity": "sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "gar": "^1.0.4", + "tiny-each-async": "2.0.3" + }, + "bin": { + "get-folder-size": "bin/get-folder-size" + } + }, + "node_modules/get-installed-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", + "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-modules": "1.0.0" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, "optional": true, "dependencies": { "es-errors": "^1.3.0", @@ -657,10 +2983,179 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/get-package-info/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/get-package-info/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-package-info/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-package-info/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/get-package-info/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -692,10 +3187,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/global-agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, "optional": true, "dependencies": { "boolean": "^3.0.1", @@ -713,6 +3221,7 @@ "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, "optional": true, "dependencies": { "lru-cache": "^6.0.0" @@ -724,10 +3233,56 @@ "node": ">=10" } }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globalthis": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "optional": true, "dependencies": { "define-properties": "^1.1.3" @@ -739,10 +3294,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "optional": true, "dependencies": { "get-intrinsic": "^1.1.3" @@ -755,6 +3330,7 @@ "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -778,12 +3354,32 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "optional": true, "dependencies": { "es-define-property": "^1.0.0" @@ -796,6 +3392,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "optional": true, "engines": { "node": ">= 0.4" @@ -808,6 +3405,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "optional": true, "engines": { "node": ">= 0.4" @@ -816,11 +3414,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "optional": true, + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -828,15 +3432,42 @@ "node": ">= 0.4" } }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -845,18 +3476,84 @@ "node": ">=10.19.0" } }, - "node_modules/import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "dependencies": { - "resolve-from": "^5.0.0" + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -874,6 +3571,82 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -883,6 +3656,33 @@ "node": ">=8" } }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -892,41 +3692,381 @@ "node": ">=0.12.0" } }, + "node_modules/is-path-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", + "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, "optional": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, "dependencies": { "json-buffer": "3.0.1" } }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/listr2": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", + "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/listr2/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, "engines": { "node": ">=8" } @@ -935,7 +4075,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -943,10 +4083,111 @@ "node": ">=10" } }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/https-proxy-agent": { + "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==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, "optional": true, "dependencies": { "escape-string-regexp": "^4.0.0" @@ -955,6 +4196,68 @@ "node": ">=10" } }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -968,10 +4271,29 @@ "node": ">=8.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, "engines": { "node": ">=4" } @@ -988,6 +4310,119 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -1003,7 +4438,127 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.71.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", + "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-api-version": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz", + "integrity": "sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-api-version/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/noms": { "version": "0.0.0", @@ -1015,10 +4570,53 @@ "readable-stream": "~1.0.31" } }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, "engines": { "node": ">=10" }, @@ -1026,10 +4624,50 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "optional": true, "engines": { "node": ">= 0.4" @@ -1039,14 +4677,189 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "dev": true, + "dependencies": { + "aggregate-error": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "author-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } @@ -1060,10 +4873,42 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", @@ -1078,12 +4923,13 @@ } }, "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, "node_modules/ping": { @@ -1094,6 +4940,127 @@ "node": ">=4.0.0" } }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -1104,23 +5071,149 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, "engines": { "node": ">=0.4.0" } }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rcedit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-3.1.0.tgz", + "integrity": "sha512-WRlRdY1qZbu1L11DklT07KuHfRk42l0NFFJdaExELEu4fEQ982bP5Z6OWGPj/wLLIuKRQDCxZJGAwoFsxhZhNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn-windows-exe": "^1.1.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/read-binary-file-arch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "bin": { + "read-binary-file-arch": "cli.js" + } + }, + "node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, "engines": { "node": ">=10" }, @@ -1140,11 +5233,34 @@ "string_decoder": "~0.10.x" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dev": true, + "dependencies": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/require-directory": { "version": "2.1.1", @@ -1155,24 +5271,63 @@ "node": ">=0.10.0" } }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" + } + }, + "node_modules/resolve-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-package/-/resolve-package-1.0.1.tgz", + "integrity": "sha512-rzB7NnQpOkPHBWFPP3prUMqOP6yg3HkRGgcvR+lDyvyHoY3fZLFLYDkPXh78SPVBAE6VTCk/V+j8we4djg6o4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-installed-path": "^2.0.3" + }, + "engines": { + "node": ">=4", + "npm": ">=2" } }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, "dependencies": { "lowercase-keys": "^2.0.0" }, @@ -1180,10 +5335,66 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, "optional": true, "dependencies": { "boolean": "^3.0.1", @@ -1197,13 +5408,37 @@ "node": ">=8.0" } }, - "node_modules/runtime-required": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz", - "integrity": "sha512-yX97f5E0WfNpcQnfVjap6vzQcvErkYYCx6eTK4siqGEdC8lglwypUFgZVTX7ShvIlgfkC4XGFl9O1KTYcff0pw==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "engines": { - "node": ">=4.0.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" } }, "node_modules/safe-buffer": { @@ -1212,10 +5447,18 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -1224,12 +5467,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, "optional": true }, "node_modules/serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, "optional": true, "dependencies": { "type-fest": "^0.13.1" @@ -1241,11 +5486,183 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true + }, "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "optional": true + "dev": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } }, "node_modules/string_decoder": { "version": "0.10.31", @@ -1279,10 +5696,76 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, "dependencies": { "debug": "^4.1.0" }, @@ -1290,6 +5773,108 @@ "node": ">= 8.0" } }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -1330,6 +5915,34 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/tiny-each-async": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tiny-each-async/-/tiny-each-async-2.0.3.tgz", + "integrity": "sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "optional": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1342,10 +5955,60 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "dev": true, + "license": "0BSD" + }, "node_modules/type-fest": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, "optional": true, "engines": { "node": ">=10" @@ -1370,30 +6033,40 @@ "node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true }, - "node_modules/unixify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", - "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, "dependencies": { - "normalize-path": "^2.1.1" + "unique-slug": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/unixify/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, "dependencies": { - "remove-trailing-separator": "^1.0.1" + "imurmurhash": "^0.1.4" }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" } }, "node_modules/untildify": { @@ -1405,6 +6078,20 @@ "node": ">=8" } }, + "node_modules/username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -1423,19 +6110,76 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/watchboy": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/watchboy/-/watchboy-0.4.3.tgz", - "integrity": "sha512-GHs1HxwvxSMBsqd/WfTOZhj5gBdMqf5HQpfgtKxDfZRxrlYPDdVLRB61LCeRzJaWANmvSIMlfmRVDwVmJFgAKA==", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "dependencies": { - "lodash.difference": "^4.5.0", - "micromatch": "^4.0.2", - "pify": "^4.0.1", - "unixify": "^1.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=8.0.0" + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { @@ -1458,7 +6202,17 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } }, "node_modules/xtend": { "version": "4.0.2", @@ -1482,7 +6236,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true + "dev": true }, "node_modules/yargs": { "version": "16.2.0", @@ -1511,14 +6265,118 @@ "node": ">=10" } }, + "node_modules/yarn-or-npm": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz", + "integrity": "sha512-fTiQP6WbDAh5QZAVdbMQkecZoahnbOjClTQhzv74WX5h2Uaidj1isf9FDes11TKtsZ0/ZVfZsqZ+O3x6aLERHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.5", + "pkg-dir": "^4.2.0" + }, + "bin": { + "yarn-or-npm": "bin/index.js", + "yon": "bin/index.js" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/yarn-or-npm/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/yarn-or-npm/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yarn-or-npm/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/yarn-or-npm/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-or-npm/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-or-npm/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/CEO/package.json b/CEO/package.json index 3416073..3bbd272 100644 --- a/CEO/package.json +++ b/CEO/package.json @@ -4,25 +4,68 @@ "version": "1.0.0", "description": "Aplicatie P2P pentru stocarea resurselor digitale", "scripts": { - "clean": "del-cli dist", - "start": "tsc && copyfiles -u 1 'src/**/*' dist && electron dist/main/main.js" + "clean": "del-cli dist && del-cli out", + "build-dist": "tsc && copyfiles -u 1 'src/**/*' dist", + "start-dev": "tsc && copyfiles -u 1 'src/**/*' dist && electron dist/main/main.js", + "start": "npm run clean && npm run build-dist && electron-forge start", + "package": "npm run clean && npm run build-dist && electron-forge package", + "make": "npm run clean && npm run build-dist && electron-forge make" }, "main": "dist/main/main.js", "author": "Cerbu Andrei - Mihnea", "license": "ISC", "dependencies": { "dotenv": "^16.4.5", - "electron": "^32.0.1", "ping": "^0.4.4", "uuid": "^10.0.0" }, "devDependencies": { - "@types/electron": "^1.6.10", - "@types/node": "^22.6.1", + "@electron-forge/cli": "^6.0.0", + "@electron-forge/maker-deb": "^6.0.0", + "@electron-forge/maker-rpm": "^6.0.0", + "@electron-forge/maker-squirrel": "^6.0.0", + "@electron-forge/maker-zip": "^6.0.0", "@types/ping": "^0.4.4", "@types/uuid": "^10.0.0", "copyfiles": "^2.4.1", "del-cli": "^5.0.0", + "electron": "^33.0.2", "typescript": "^5.6.2" + }, + "config": { + "forge": { + "packagerConfig": { + "name": "CeoApp", + "icon": "../app_icons/icon.ico", + "ignore": [ + "src", + ".idea", + "tsconfig.json" + ] + }, + "makers": [ + { + "name": "@electron-forge/maker-squirrel", + "config": { + "name": "CEOApp", + "setupIcon": "../app_icons/icon.ico" + } + }, + { + "name": "@electron-forge/maker-zip", + "platforms": ["darwin"], + "config": { + "icon": "../app_icons/icon.icns" + } + }, + { + "name": "@electron-forge/maker-deb", + "platforms": ["linux"], + "config": { + "icon": "../app_icons/icon.png" + } + } + ] + } } } diff --git a/CEO/render/assets/2581896.png b/CEO/render/assets/2581896.png new file mode 100644 index 0000000000000000000000000000000000000000..6a3d2a0da9639de00e9def8c4592263550ccff3a GIT binary patch literal 42634 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 literal 0 HcmV?d00001 diff --git a/CEO/render/assets/background.png b/CEO/render/assets/background.png deleted file mode 100644 index fc8f921b636ecf6d610faf78108b9ddaf946f9ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304850 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

a552%I$VSeGKa;?$Jnb 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

JD9WQ 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 diff --git a/CEO/render/assets/cloud-computing.webp b/CEO/render/assets/cloud-computing.webp new file mode 100644 index 0000000000000000000000000000000000000000..1272400093e3d05f11f706caf72d98ddc1b38a72 GIT binary patch literal 11780 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 literal 0 HcmV?d00001 diff --git a/CEO/render/assets/loading.gif b/CEO/render/assets/loading.gif deleted file mode 100644 index aaac0761f39798b83f7e421627652254da5276b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72191 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 diff --git a/CEO/render/assets/mail_2772213.png b/CEO/render/assets/mail_2772213.png new file mode 100644 index 0000000000000000000000000000000000000000..0563cd50f6df1d3eae33b982f82558419a0ce2b1 GIT binary patch literal 21879 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

xpuzV(^n&&GQW$WCy@L_R}=A` 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 S4|pUM!Wf%hd}HW(|Nj8knaRrl literal 0 HcmV?d00001 diff --git a/CEO/render/assets/refresh-data.webp b/CEO/render/assets/refresh-data.webp new file mode 100644 index 0000000000000000000000000000000000000000..cb54150c3d53d1fc98572224ebdc4f03eab0d68e GIT binary patch literal 9132 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 literal 0 HcmV?d00001 diff --git a/CEO/render/css/announcement.css b/CEO/render/css/announcement.css new file mode 100644 index 0000000..d4a8d8c --- /dev/null +++ b/CEO/render/css/announcement.css @@ -0,0 +1,133 @@ +body, html { + height: 100vh; + width: 100vw; + margin: 0; + padding: 0; + font-family: "Pridi", sans-serif; + background-color: #4A628A; +} + +h4, h1 { + margin: 0; +} + +.page { + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; +} + +.container { + border-radius: 10px; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-evenly; + height: 90%; + width: 35%; +} + +.header { + text-align: center; + padding: 16px; +} + +.title { + font-size: 48px; + font-weight: 500; + color: white; +} + +.subheading { + padding-top: 8px; + font-size: 16px; + color: rgba(255, 255, 255, 0.8); +} + +.announcement-form { + display: flex; + flex-direction: column; + align-items: center; + width: 80%; +} + +textarea { + height: 230px; + width: 100%; + padding: 15px; + font-size: 1em; + border-radius: 8px; + border: 1px solid #ccc; + resize: none; + background-color: #3A4A6C; /* Darker background for the textarea */ + color: #f0f0f0; /* Light text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; +} + +textarea::placeholder { + opacity: 0.7; + color: white; +} + +/* Customize the textarea scrollbar */ +textarea::-webkit-scrollbar { + width: 10px; /* Width of the scrollbar */ +} + +textarea::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); /* Track background color */ + border-radius: 10px; /* Rounded corners for the track */ +} + +textarea::-webkit-scrollbar-thumb { + background-color: rgba(74, 98, 138, 0.8); /* Scrollbar handle color */ + border-radius: 10px; /* Rounded corners for the scrollbar handle */ +} + +textarea::-webkit-scrollbar-thumb:hover { + background-color: rgba(74, 98, 138, 1); /* Darker color on hover */ +} + +textarea:focus { + outline: none; + border-color: #4A628A; + box-shadow: 0 0 5px rgba(74, 98, 138, 0.5); + background-color: #334466; /* Slightly brighter background on focus */ +} + + +.announcement-form-footer { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + margin-top: 20px; + gap: 10px; /* Space between buttons */ +} + +button#submitAnnouncement { + width: 100%; + padding: 16px; + font-weight: 300; + background-color: #4A628A; + color: white; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +button#backButton { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ +} diff --git a/CEO/render/css/departments_management.css b/CEO/render/css/departments_management.css deleted file mode 100644 index c215647..0000000 --- a/CEO/render/css/departments_management.css +++ /dev/null @@ -1,176 +0,0 @@ -/* Global styles for body and background */ -body, html { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; -} - -/* Container starts hidden */ -.container { - opacity: 0; - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; - text-align: center; -} - -/* Container styling to match your previous design */ -.left_block, .right_block { - background-color: rgba(83, 92, 145, 0.71); - padding: 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - color: white; -} - -.left_block { - width: 45%; -} - -.right_block { - width: 45%; -} - -h1 { - margin-bottom: 2rem; - font-size: 2rem; - color: white; -} - -/* Enable scrolling in the departments container */ -#departments-container { - max-height: 50vh; /* Limit the height of the container */ - overflow-y: auto; /* Enable vertical scrolling */ -} - -/* Scrollbar styling for departments container */ -#departments-container::-webkit-scrollbar { - width: 10px; -} - -#departments-container::-webkit-scrollbar-track { - background: #1B1A55; -} - -#departments-container::-webkit-scrollbar-thumb { - background: #535C91; - border: 2px solid #1B1A55; -} - -#departments-container::-webkit-scrollbar-thumb:hover { - background: #555; -} - -/* Form styling */ -form { - display: flex; - flex-direction: column; - gap: 1.5rem; -} - -label { - font-size: 1rem; - color: white; -} - -input[type="text"] { - padding: 0.8rem; - font-size: 1rem; - border-radius: 5px; - border: 1px solid #ccc; - width: 100%; -} - -button[type="submit"], #createDepartmentButton { - background-color: #23BDEE; - color: white; - padding: 0.8rem; - font-size: 1rem; - border: none; - border-radius: 5px; - cursor: pointer; - text-transform: uppercase; -} - -button[type="submit"]:hover, #createDepartmentButton:hover { - background-color: #1da1cb; -} - -/* Department card styling */ -.department-card { - background-color: #ffffff; - color: #333; - padding: 1rem; - margin: 1rem 0; - border-radius: 5px; - display: flex; - justify-content: space-between; - align-items: center; -} - -.department-card button { - padding: 0.5rem 1rem; - margin-left: 10px; - border: none; - border-radius: 5px; - cursor: pointer; -} - -.modify-button { - background-color: #4CAF50; - color: white; -} - -.delete-button { - background-color: #f44336; - color: white; -} - -/* Modal styles */ -.modal { - display: none; - position: fixed; - z-index: 1; - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: auto; - background-color: rgba(0, 0, 0, 0.5); -} - -.modal-content { - background-color: white; - margin: 15% auto; - padding: 20px; - border: 1px solid #888; - width: 50%; -} - -.close { - color: #aaa; - float: right; - font-size: 28px; - font-weight: bold; -} - -.close:hover, .close:focus { - color: black; - text-decoration: none; - cursor: pointer; -} - -/* Footer style */ -.footer { - margin-top: 20px; - text-align: right; -} diff --git a/CEO/render/css/loading.css b/CEO/render/css/loading.css new file mode 100644 index 0000000..a365a5a --- /dev/null +++ b/CEO/render/css/loading.css @@ -0,0 +1,59 @@ +body, html { + height: 100vh; + width: 100vw; + margin: 0; + padding: 0; + + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} + +h4, h2, h1{ + margin: 0; +} + +.container{ + height: 100vh; + width: 100vw; + display: flex; + flex-direction: column; + justify-content: space-evenly; + align-items: center; +} + +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +img{ + width: 200px; + height: 200px; +} + +p{ + color: white; +} + +.loading-section{ + display: flex; + flex-direction: column; + align-items: center; +} + +.spinner { + margin-bottom: 8px; + width: 15px; + height: 15px; + border: 3px solid #f3f3f3; + border-top: 3px solid #2196F3; + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} \ No newline at end of file diff --git a/CEO/render/css/login.css b/CEO/render/css/login.css index 2e9d6d5..d9062ef 100644 --- a/CEO/render/css/login.css +++ b/CEO/render/css/login.css @@ -1,110 +1,143 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; +h4, h2, h1{ + margin: 0; +} +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; } .container { - opacity: 0; - - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - line-height: 2.5rem; - margin-bottom: 10rem; -} - -.login-form { - background-color: #535C91; - opacity: 71; - padding: 9vh 3vh 5vh; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - width: 25%; -} - -.login-form-title { - margin: 0 0 5vh 0; - text-align: center; -} - -.login-form-title h2 { - color: #FFFFFF; - font-size: 5vh; - margin: 0; - padding: 0; -} - -.login-form hr { - width: 40%; -} - -.login-form-content { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 70%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; border-radius: 10px; -} - -button { - font-weight: bold; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-evenly; + height: 90%; width: 35%; - font-size: 1rem; - padding: 10px; - border: none; - border-radius: 5px; - margin-top: 1rem; - cursor: pointer; } -button:hover { - filter: brightness(85%); +.header{ + text-align: center; + padding-bottom: 16px; + padding-top: 16px; +} + +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +.subheading{ + padding-top: 8px; + font-size: 16px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 0.8); +} + +.login-form{ + display: flex; + flex-direction: column; + align-items: center; + width: 80%; +} + +.login-title { + font-size: 24px; + font-weight: 500; + color: white; + margin-bottom: 16px; +} + +.login-form-content input { + width: 100%; + padding: 15px; + margin: 10px 0; + border: 1px solid #ccc; /* Light gray border */ + border-radius: 8px; /* Rounded corners */ + font-size: 1em; + font-family: inherit; + box-sizing: border-box; + background-color: #f9f9f9; /* Light background */ + color: #333; /* Dark text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for interaction */ +} + +/* Placeholder Text Styling */ +.login-form-content input::placeholder { + color: #aaa; /* Lighter color for placeholders */ +} + +/* Focus State Styling */ +.login-form-content input:focus { + outline: none; /* Remove default focus outline */ + border-color: #4A628A; /* Blue border on focus */ + box-shadow: 0 0 5px rgba(74, 98, 138, 0.5); /* Subtle shadow for focus */ + background-color: #fff; /* Slightly brighter background on focus */ +} + +/* Input Field Hover Effect */ +.login-form-content input:hover { + border-color: #888; /* Darker gray border on hover */ +} + +/* Disabled Input Styling */ +.login-form-content input:disabled { + background-color: #e0e0e0; /* Light gray background for disabled input */ + cursor: not-allowed; /* Show "not allowed" cursor */ + opacity: 0.7; /* Slight transparency */ } .login-form-footer { - margin-top: 3vh; display: flex; - flex-wrap: wrap; - align-content: center; + width: 100%; + flex-direction: column; + justify-content: space-between; /* Align buttons next to each other */ align-items: center; - justify-content: space-evenly; + gap: 10px; /* Space between buttons */ + margin-top: 20px; +} + +/* Styling for buttons */ +.login-form-footer button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ } button[name="submit"] { - background-color: #F44336; - color: white; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } - -button[name="signup"] { - background-color: #2196F3; - color: white; -} \ No newline at end of file diff --git a/CEO/render/css/main_menu.css b/CEO/render/css/main_menu.css index f80103b..47169e2 100644 --- a/CEO/render/css/main_menu.css +++ b/CEO/render/css/main_menu.css @@ -1,245 +1,208 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} + +h4, h2, h1{ + margin: 0; +} + +.title{ + font-size: 32px; font-weight: 500; - font-style: normal; - - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; -} - -.overlay { - display: none; - position: fixed; - width: 100%; - height: 100%; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.85); - z-index: 2; - cursor: pointer; -} - -.ceo-validation-form { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 300px; - padding: 20px; - background: #1B1A55; - border-radius: 10px; - cursor: default; -} - -.ceo-validation-form h2 { - text-align: center; + letter-spacing: -1px; color: white; } -.ceo-validation-form p { - color: white; - text-align: center; - font-size: 1rem; - padding: 0.5rem; -} - -.form-actions { - text-align: center; - padding-top: 20px; -} - -.form-actions button { - padding: 10px 20px; - margin: 0 10px; - border: none; - border-radius: 5px; - cursor: pointer; -} - -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 80%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; - border-radius: 10px; -} - -#back_button { - background-color: #f44336; - width: 35%; - height: auto; +.user{ + display: inline; color: white; } - -#submit_button { - background-color: #4CAF50; - width: 35%; - height: auto; - color: white; -} - -.container { - opacity: 0; - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; - text-align: center; -} - -.left_block { - display: flex; - flex-direction: column; - background-color: #535C91; - opacity: 71; - padding: 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - color: white; -} - -.left_block_top { - display: flex; +.navbar{ + padding-top: 8px; + padding-right: 32px; + padding-left: 32px; + height: 10%; + display:flex; flex-direction: row; justify-content: space-between; - text-align: left; + align-items: center; } - -.left_block_top h1 { - padding: 0; - margin: 0; -} - -.left_block_top img { - margin: 0 3vw 0 5vw; - width: 8vw; - height: 8vw; -} - -.left_block_content { - margin: 2rem 0 2rem 0; -} - -.left_block_buttons { +.welcome{ display: flex; flex-direction: row; - align-content: center; align-items: center; +} + +img{ + padding-right: 8px; + width:25px; + height: auto; +} + +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; +} + +.container{ + width:100%; + height:100%; + display: flex; + flex-direction: row; justify-content: center; } -button { - margin: 0 1rem 0 1rem; - width: 15vw; - height: 10vh; - border: none; - border-radius: 10px; - color: white; - font-size: 1rem; - font-weight: bold; - text-transform: uppercase; +.left_block{ + background: linear-gradient(to bottom, #131A24, #4A628A); + width: 25%; + display: flex; + flex-direction: column; +} + +.notification-title{ + padding-top: 16px; + padding-bottom: 16px; + text-align: center; + height: 10%; + display: flex; + justify-content: center; + align-items: center; +} + +.notifications{ + overflow-y: auto; + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + flex-grow: 1; /* Allow it to take available space */ + max-height: calc(90% - 80px); +} + +.right_block_content button:last-child { + background-color: #FF6347; +} + +.right_block_content button:nth-child(8) { + background-color: #FF6347; +} + +.right_block_content button:last-child:hover { + background-color: #fd4c29; +} + +.alert, .logout-button{ cursor: pointer; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); - outline: none; - transition: background-color 0.3s ease; + border-radius: 15px; + width: 80%; + min-height: 64px; + height: auto; + padding:12px; + background: #FF6347; + font-weight: bold; + font-size: 12px; +} +.notification{ + cursor: pointer; + border-radius: 15px; + width: 80%; + min-height: 64px; + height: auto; + padding:12px; + background: rgba(186, 229, 255); + font-weight: bold; + font-size: 12px; } -button:hover { - filter: brightness(85%); +.notification:hover{ + background: #d9efff; } -.left_block_footer { +.alert:hover, .logout-button:hover{ + background: rgb(244, 44, 44); +} + +.notif-title{ + font-size: 24px; + font-weight: 300; + letter-spacing: -1px; + color: white; +} + +.left-content{ + height: 90%; + width: 100%; + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; +} + +.left_block_footer{ display: flex; align-items: center; - justify-content: end; + justify-content: center; + width: 100%; + padding-bottom: 16px; } -.right_block { - display: flex; +.right_block_content{ + height: 90%; +} + +.right_block{ + width: 75%; + display:flex; flex-direction: column; - background-color: #535C91; - opacity: 71; - padding: 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - color: white; + justify-content: center; } -.notifications { - display: flex; - margin: 1rem 2rem 2rem 3rem; - flex-direction: column; - align-items: start; - height: 40vh; /* Fixed height */ - width: 80%; /* Full width */ - overflow: auto; /* Enable scrolling */ - font-size: 1.2rem; - color: white; - font-weight: bold; -} - -.notifications::-webkit-scrollbar { - width: 10px; -} - -.notifications::-webkit-scrollbar-track { - background: #1B1A55; -} - -.notifications::-webkit-scrollbar-thumb { - background: #535C91; - border: 2px solid #1B1A55; -} - -.notifications::-webkit-scrollbar-thumb:hover { - background: #555; -} - -button[name="logout"] { - margin: 0; - padding: 0; - width: 10vw; - height: 5vh; - background-color: #F44336; -} - -button[name="alert"] { - margin: 0.7rem; - background-color: #F44336; -} - -button[name="notification"] { - margin: 0.7rem; - background-color: #23BDEE; +.right_block_content { + display: grid; + grid-template-columns: repeat(3, 1fr); /* 3 equal-width columns */ + gap: 8px; /* Spacing between buttons */ + padding: 32px; /* Optional padding */ } button[name="menu_button"] { - margin: 0.7rem; - background-color: #1B1A55; + padding: 10px 20px; + font-size: 16px; + background-color: rgba(186,229,244,0.4); /* Button background */ + color: white; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; } -/* Disclaimer Modal Styles */ -#disclaimer-modal { - display: none; /* Initially hidden */ +button[name="menu_button"]:hover { + background-color: #3B5173; /* Darker background on hover */ } -.cancel-button { - background-color: #f44336; /* Red color for cancel */ +.notifications::-webkit-scrollbar { + width: 4px; /* Width of the scrollbar */ } -.submit-button { - background-color: #4CAF50; /* Green color foQQr submit */ +.notifications::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); /* Track background color */ + border-radius: 10px; /* Rounded corners for the track */ } + +.notifications::-webkit-scrollbar-thumb { + background-color: rgba(74, 98, 138, 0.8); /* Scrollbar handle color */ + border-radius: 10px; /* Rounded corners for the scrollbar handle */ +} + +.notifications::-webkit-scrollbar-thumb:hover { + background-color: rgba(74, 98, 138, 1); /* Darker color on hover */ +} \ No newline at end of file diff --git a/CEO/render/css/normalizer.css b/CEO/render/css/normalizer.css new file mode 100644 index 0000000..98fe5ba --- /dev/null +++ b/CEO/render/css/normalizer.css @@ -0,0 +1,41 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, hr +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/CEO/render/css/overview_departments.css b/CEO/render/css/overview_departments.css new file mode 100644 index 0000000..36cf2af --- /dev/null +++ b/CEO/render/css/overview_departments.css @@ -0,0 +1,215 @@ +body, html { + height: 100vh; + width: 100vw; + margin: 0; + padding: 0; + + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} + +h4, h2, h1{ + margin: 0; +} + +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; +} + +.container { + border-radius: 10px; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-evenly; + height: 90%; + width: 35%; +} + +.header{ + text-align: center; + padding-bottom: 16px; + padding-top: 32px; +} + +.title{ + font-size: 24px; + font-weight: 500; + color: white; + margin-bottom: 32px; +} + +.departments-container{ + overflow-y: hidden; + width: 100%; + height: 370px; + max-height: 370px; + display: flex; + flex-direction: column; + gap: 8px; + align-items: center; +} + +.department-name{ + width:70%; + font-size: 16px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 1); +} + +.user-management-container{ + display: flex; + flex-direction: column; + align-items: center; + width: 80%; +} + +.footer { + display: flex; + width: 100%; + flex-direction: row; + justify-content: space-between; /* Align buttons next to each other */ + align-items: center; + gap: 10px; /* Space between buttons */ + margin-top: 20px; +} + +/* Styling for buttons */ +.user-management-container button, .modal button { + flex: 1; /* Ensure buttons are equal width */ + padding: 8px 16px 8px 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ +} + +.department-card{ + width: 100%; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + gap: 8px; +} + +.delete-button { + width: auto; + margin-right: 8px; + background-color: #ED4B4B; /* Blue background */ + color: white; /* White text color */ +} + +button[name="submit"] { + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ +} + +.departments-container::-webkit-scrollbar { + width: 4px; /* Width of the scrollbar */ +} + +.departments-container::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); /* Track background color */ + border-radius: 10px; /* Rounded corners for the track */ +} + +.departments-container::-webkit-scrollbar-thumb { + background-color: rgba(74, 98, 138, 0.8); /* Scrollbar handle color */ + border-radius: 10px; /* Rounded corners for the scrollbar handle */ +} + +.departments-container::-webkit-scrollbar-thumb:hover { + background-color: rgba(74, 98, 138, 1); /* Darker color on hover */ +} + +.departments-container:empty { + overflow-y: hidden; +} + +.user-name{ + padding-top: 8px; + font-size: 20px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 1); +} + +.user-department{ + font-weight: lighter; + padding-top: 8px; + font-size: 14px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 0.8); +} + +.modal { + display: none; /* Hidden by default */ + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + backdrop-filter: blur(5px);/* Black with opacity */ +} + +.modal-content { + background-color: #fefefe; + margin: 15% auto; + padding: 16px; + border: 1px solid #888; + width: 100%; + max-width: 400px; + border-radius: 8px; + text-align: center; +} + +.close-button { + float: right; + font-size: 24px; + font-weight: bold; + cursor: pointer; + color: #aaa; +} + +.close-button:hover, +.close-button:focus { + color: black; + text-decoration: none; + cursor: pointer; +} + +input{ + width: 100%; + padding: 15px; + margin-bottom: 16px; + border: 1px solid #ccc; /* Light gray border */ + border-radius: 8px; /* Rounded corners */ + font-size: 12px; + font-family: inherit; + box-sizing: border-box; + background-color: #f9f9f9; /* Light background */ + color: #333; /* Dark text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for interaction */ +} + + diff --git a/CEO/render/css/overview_users.css b/CEO/render/css/overview_users.css new file mode 100644 index 0000000..b792daf --- /dev/null +++ b/CEO/render/css/overview_users.css @@ -0,0 +1,153 @@ +body, html { + height: 100vh; + width: 100vw; + margin: 0; + padding: 0; + + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} + +h4, h2, h1{ + margin: 0; +} + +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; +} + +.container { + border-radius: 10px; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-evenly; + height: 90%; + width: 35%; +} + +.header{ + text-align: center; + padding-bottom: 16px; + padding-top: 32px; +} + +.title{ + font-size: 24px; + font-weight: 500; + color: white; + margin-bottom: 32px; +} + +.users-container{ + overflow-y: hidden; + width: 100%; + height: 370px; + max-height: 370px; + display: flex; + flex-direction: column; + gap: 8px; + align-items: center; +} + +.user-management-container{ + display: flex; + flex-direction: column; + align-items: center; + width: 80%; +} + +.footer { + display: flex; + width: 100%; + flex-direction: column; + justify-content: space-between; /* Align buttons next to each other */ + align-items: center; + gap: 10px; /* Space between buttons */ + margin-top: 20px; +} + +/* Styling for buttons */ +.user-management-container button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ +} + +.user-info{ + display: flex; + flex-direction: column; + width: 70%; +} + +.user-card{ + width: 100%; + display: flex; + flex-direction: row; + justify-content: center; + align-items: stretch; +} + +.delete-button { + width: auto; + margin-right: 8px; + background-color: #ED4B4B; /* Blue background */ + color: white; /* White text color */ +} + +.users-container::-webkit-scrollbar { + width: 4px; /* Width of the scrollbar */ +} + +.users-container::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); /* Track background color */ + border-radius: 10px; /* Rounded corners for the track */ +} + +.users-container::-webkit-scrollbar-thumb { + background-color: rgba(74, 98, 138, 0.8); /* Scrollbar handle color */ + border-radius: 10px; /* Rounded corners for the scrollbar handle */ +} + +.users-container::-webkit-scrollbar-thumb:hover { + background-color: rgba(74, 98, 138, 1); /* Darker color on hover */ +} + +.users-container:empty { + overflow-y: hidden; +} + +.user-name{ + padding-top: 8px; + font-size: 20px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 1); +} + +.user-department{ + font-weight: lighter; + padding-top: 8px; + font-size: 14px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 0.8); +} \ No newline at end of file diff --git a/CEO/render/css/profile.css b/CEO/render/css/profile.css index 5bbe960..67879da 100644 --- a/CEO/render/css/profile.css +++ b/CEO/render/css/profile.css @@ -1,110 +1,136 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; +h4, h2, h1{ + margin: 0; +} +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; } .container { - opacity: 0; - + border-radius: 10px; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); display: flex; - flex-direction: row; - justify-content: space-evenly; + flex-direction: column; align-items: center; - min-height: 100vh; - text-align: center; /* Center the text for all child elements */ + justify-content: space-evenly; + height: 90%; + width: 35%; } -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - line-height: 2.5rem; - margin-bottom: 10rem; -} - -.profile-form { - background-color: #535C91; - opacity: 71; - padding: 13vh 3vh 5vh; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - width: 25%; -} - -.profile-form-title { - margin-bottom: 5vh; -} - -.profile-form hr { - width: 40%; -} - -.profile-form-title h2 { - color: #FFFFFF; - margin: 0; - padding: 0; +.header{ text-align: center; - font-size: 5vh; + padding-bottom: 16px; + padding-top: 16px; } -.profile-form-content { +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +.subheading{ + padding-top: 8px; + font-size: 16px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 0.8); +} + +.profile-form{ display: flex; - flex-wrap: wrap; - justify-content: center; + flex-direction: column; + align-items: center; + width: 80%; +} + +.profile-form-content input { + width: 100%; + padding: 15px; + margin: 10px 0; + border: 1px solid #ccc; /* Light gray border */ + border-radius: 8px; /* Rounded corners */ + font-size: 1em; + font-family: inherit; + box-sizing: border-box; + background-color: #f9f9f9; /* Light background */ + color: #333; /* Dark text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for interaction */ +} + +/* Placeholder Text Styling */ +.profile-form-content input::placeholder { + color: #aaa; /* Lighter color for placeholders */ +} + +/* Focus State Styling */ +.profile-form-content input:focus { + outline: none; /* Remove default focus outline */ + border-color: #4A628A; /* Blue border on focus */ + box-shadow: 0 0 5px rgba(74, 98, 138, 0.5); /* Subtle shadow for focus */ + background-color: #fff; /* Slightly brighter background on focus */ +} + +/* Input Field Hover Effect */ +.profile-form-content input:hover { + border-color: #888; /* Darker gray border on hover */ +} + +/* Disabled Input Styling */ +.profile-form-content input:disabled { + background-color: #e0e0e0; /* Light gray background for disabled input */ + cursor: not-allowed; /* Show "not allowed" cursor */ + opacity: 0.7; /* Slight transparency */ } .profile-form-footer { - margin-top: 7vh; display: flex; - flex-direction: row; - justify-content: center; + width: 100%; + flex-direction: column; + justify-content: space-between; /* Align buttons next to each other */ + align-items: center; + gap: 10px; /* Space between buttons */ + margin-top: 20px; } -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 70%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; - border-radius: 10px; -} - -button { - font-weight: bold; - width: 35%; - font-size: 1rem; - padding: 10px; +/* Styling for buttons */ +.profile-form button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; border: none; - border-radius: 5px; - margin-top: 1rem; + border-radius: 8px; cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; } -button:hover { - filter: brightness(85%); +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ } button[name="submit"] { - background-color: #F44336; - color: white; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } - -button[name="login"] { - background-color: #2196F3; - color: white; - margin-right: 5rem; -} \ No newline at end of file diff --git a/CEO/render/css/reset_password.css b/CEO/render/css/reset_password.css index 2e9d6d5..c1cd8a6 100644 --- a/CEO/render/css/reset_password.css +++ b/CEO/render/css/reset_password.css @@ -1,110 +1,151 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; +h4, h2, h1{ + margin: 0; +} +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; } .container { - opacity: 0; - - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - line-height: 2.5rem; - margin-bottom: 10rem; -} - -.login-form { - background-color: #535C91; - opacity: 71; - padding: 9vh 3vh 5vh; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - width: 25%; -} - -.login-form-title { - margin: 0 0 5vh 0; - text-align: center; -} - -.login-form-title h2 { - color: #FFFFFF; - font-size: 5vh; - margin: 0; - padding: 0; -} - -.login-form hr { - width: 40%; -} - -.login-form-content { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 70%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; border-radius: 10px; -} - -button { - font-weight: bold; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + height: 90%; width: 35%; - font-size: 1rem; - padding: 10px; - border: none; - border-radius: 5px; - margin-top: 1rem; - cursor: pointer; } -button:hover { - filter: brightness(85%); +.header{ + display: flex; + width: 80%; + flex-direction: column; + align-items: center; + justify-content: center; + height: 20%; + text-align: center; + padding-bottom: 16px; + padding-top: 16px; +} + +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +.subheading{ + font-size: 16px; + letter-spacing: -0.5px; + padding-top: 8px; + color: rgba(255,255,255, 0.8); +} + +.login-form{ + height: 80%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-around; + width: 80%; +} + +.login-title { + font-size: 24px; + font-weight: 500; + color: white; + margin-bottom: 16px; +} + +.login-form-content input { + width: 100%; + padding: 15px; + margin: 10px 0; + border: 1px solid #ccc; /* Light gray border */ + border-radius: 8px; /* Rounded corners */ + font-size: 1em; + font-family: inherit; + box-sizing: border-box; + background-color: #f9f9f9; /* Light background */ + color: #333; /* Dark text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for interaction */ +} + +/* Placeholder Text Styling */ +.login-form-content input::placeholder { + color: #aaa; /* Lighter color for placeholders */ +} + +/* Focus State Styling */ +.login-form-content input:focus { + outline: none; /* Remove default focus outline */ + border-color: #4A628A; /* Blue border on focus */ + box-shadow: 0 0 5px rgba(74, 98, 138, 0.5); /* Subtle shadow for focus */ + background-color: #fff; /* Slightly brighter background on focus */ +} + +/* Input Field Hover Effect */ +.login-form-content input:hover { + border-color: #888; /* Darker gray border on hover */ +} + +/* Disabled Input Styling */ +.login-form-content input:disabled { + background-color: #e0e0e0; /* Light gray background for disabled input */ + cursor: not-allowed; /* Show "not allowed" cursor */ + opacity: 0.7; /* Slight transparency */ } .login-form-footer { - margin-top: 3vh; display: flex; - flex-wrap: wrap; - align-content: center; + width: 100%; + flex-direction: column; + justify-content: space-between; /* Align buttons next to each other */ align-items: center; - justify-content: space-evenly; + gap: 10px; /* Space between buttons */ + margin-top: 20px; +} + +/* Styling for buttons */ +.login-form-footer button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ } button[name="submit"] { - background-color: #F44336; - color: white; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } - -button[name="signup"] { - background-color: #2196F3; - color: white; -} \ No newline at end of file diff --git a/CEO/render/css/share_file.css b/CEO/render/css/share_file.css index 671485b..1a11178 100644 --- a/CEO/render/css/share_file.css +++ b/CEO/render/css/share_file.css @@ -1,191 +1,162 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; +h4, h2, h1{ + margin: 0; +} +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; } .container { - opacity: 0; - - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; - text-align: center; -} - -h1, h2 { - padding: 0; - margin: 0; -} - -h2 { - font-size: 1rem; -} - -.left_block { - display: flex; - flex-direction: column; - background-color: #535C91; - opacity: 71; - padding: 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - color: white; -} - -.left_block_top { - display: flex; - flex-direction: row; - justify-content: space-between; -} - -.left_block_top_left { - display: flex; - flex-direction: column; - justify-content: start; - text-align: left; -} - -.left_block_top_left hr { - margin: 0 0 1rem 0; - width: 45%; -} - -.left_block_top_right { - width: 10vw; - - display: flex; - flex-wrap: wrap; - align-content: center; - justify-content: center; - - padding: 0 2vh 0 2vh; - background-color: #1B1A55; - margin: 0 0 0 5vw; - border-radius: 1rem; -} - -.left_block_content { - display: flex; - justify-content: start; - align-items: center; - margin: 2rem 0 2rem 0; -} - -.left_block_buttons { - display: flex; - flex-direction: row; - align-content: center; - align-items: center; - justify-content: center; -} - -button { - margin: 0 1rem 0 1rem; - width: 10vw; - height: 5vh; - - border: none; border-radius: 10px; - - color: white; - font-size: 1rem; - font-weight: bold; - - text-transform: uppercase; - cursor: pointer; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); - outline: none; - transition: background-color 0.3s ease; -} - -button:hover { - filter: brightness(85%); -} - -.left_block_footer { + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); display: flex; + flex-direction: column; align-items: center; - justify-content: end; + height: 90%; + width: 35%; } -.right_block { - display: flex; - flex-direction: column; - background-color: #535C91; - opacity: 71; - padding: 2rem 4rem 2rem 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); +.header{ + text-align: center; + padding-bottom: 16px; + padding-top: 32px; +} + +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; color: white; } -.choose_user_form_title { - display: flex; - flex-wrap: wrap; - flex-direction: column; - justify-content: left; - align-content: start; +.subheading{ + padding-top: 8px; + font-size: 16px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 0.8); } -.choose_user_form_title hr { +.form{ + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; width: 80%; + height: 100%; + overflow: hidden; +} + +.footer { + padding-bottom: 16px; + display: flex; + width: 100%; + flex-direction: row; + justify-content: space-between; /* Align buttons next to each other */ + align-items: center; + gap: 10px; /* Space between buttons */ +} + +.filename-title{ + font-size: 16px; + font-weight: 300; + color: white; + padding: 48px 24px 48px 24px; + background-color: rgba(0,0,0,0.25); + border-radius: 10px; + margin-top: 16px; + box-shadow: 2px 2px 2px 1px rgb(0 0 0 / 20%); +} + +.users_block{ + padding-top: 16px; +} + +label{ + margin-top: 8px; + color: white; } .choose_user_form_content { + overflow-y: hidden; + width: 100%; + height: auto; + max-height: 180px; display: flex; - margin: 1rem 7rem 2rem 0.5rem; flex-direction: column; - align-items: start; + align-items: flex-start; +} - height: 20vh; /* Fixed height */ - width: 100%; /* Full width */ - overflow: auto; /* Enable scrolling */ - - font-size: 1.2rem; +h5{ + font-size: 20px; + font-weight: 300; + text-align: center; color: white; - font-weight: bold; } -.choose_user_form_content::-webkit-scrollbar { - width: 10px; /* Reduced width of the scrollbar by 2px */ +/* Styling for buttons */ +.form button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; } -.choose_user_form_content::-webkit-scrollbar-track { - background: #1B1A55; /* Updated track color */ -} - -.choose_user_form_content::-webkit-scrollbar-thumb { - background: #535C91; /* Updated handle color */ - border: 2px solid #1B1A55; /* Adding a border to effectively reduce the thumb size */ -} - -.choose_user_form_content::-webkit-scrollbar-thumb:hover { - background: #555; /* Updated handle color on hover */ -} - -button[name="back"] { - background-color: #23BDEE; +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ } button[name="submit"] { - background-color: #F44336; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } -button[name="select_file"] { - margin: 0; - width: 8vw; - background-color: #1B1A55; +button[name="submit"]:hover { + background-color: #3B5173; /* Darker background on hover */ +} + +.choose_user_form_content::-webkit-scrollbar { + width: 4px; /* Width of the scrollbar */ +} + +.choose_user_form_content::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); /* Track background color */ + border-radius: 10px; /* Rounded corners for the track */ +} + +.choose_user_form_content::-webkit-scrollbar-thumb { + background-color: rgba(74, 98, 138, 0.8); /* Scrollbar handle color */ + border-radius: 10px; /* Rounded corners for the scrollbar handle */ +} + +.choose_user_form_content::-webkit-scrollbar-thumb:hover { + background-color: rgba(74, 98, 138, 1); /* Darker color on hover */ +} + +.choose_user_form_content:empty { + overflow-y: hidden; } \ No newline at end of file diff --git a/CEO/render/css/sign_up.css b/CEO/render/css/sign_up.css deleted file mode 100644 index 09b4634..0000000 --- a/CEO/render/css/sign_up.css +++ /dev/null @@ -1,117 +0,0 @@ -body, html { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; -} - -.container { - min-height: 100vh; -} - -.step { - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; - opacity: 0; /* Make steps invisible by default */ - visibility: hidden; /* Hide steps by default */ - transition: opacity 0.5s ease, visibility 0.5s ease; /* Smooth transition */ -} - -.step.active { - opacity: 1; /* Show the active step */ - visibility: visible; /* Make it visible */ -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - line-height: 2.5rem; - margin-bottom: 10rem; -} - -.signup-form { - background-color: #535C91; - opacity: 71; - padding: 9vh 3vh 5vh; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - width: 25%; -} - -.signup-form-title { - margin: 0 0 5vh 0; - text-align: center; -} - -.signup-form-title h2 { - color: #FFFFFF; - font-size: 5vh; - margin: 0; - padding: 0; -} - -.signup-form hr { - width: 40%; -} - -.signup-form-content { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 70%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; - border-radius: 10px; -} - -button { - font-weight: bold; - width: 35%; - font-size: 1rem; - padding: 10px; - border: none; - border-radius: 5px; - margin-top: 1rem; - cursor: pointer; -} - -button:hover { - filter: brightness(85%); -} - -.signup-form-footer { - margin-top: 3vh; - display: flex; - flex-wrap: wrap; - align-content: center; - align-items: center; - justify-content: space-evenly; -} - -button[name="back"] { - background-color: #F44336; - color: white; -} - -button[name="continue"] { - background-color: #2196F3; - color: white; -} diff --git a/CEO/render/css/uc_not_found.css b/CEO/render/css/uc_not_found.css deleted file mode 100644 index df2f3d6..0000000 --- a/CEO/render/css/uc_not_found.css +++ /dev/null @@ -1,59 +0,0 @@ -body, html { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; - - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; -} - -.container { - opacity: 0; - - display: flex; - flex-direction: column; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - text-align: center; -} - -.loading-section { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - color: white; -} - -.spinner { - width: 50px; - height: 50px; - border: 6px solid #f3f3f3; - border-top: 6px solid #2196F3; - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -.loading-section p { - font-size: 1.5rem; - color: white; - margin-top: 1rem; -} diff --git a/CEO/render/css/users_management.css b/CEO/render/css/users_management.css deleted file mode 100644 index fa3806b..0000000 --- a/CEO/render/css/users_management.css +++ /dev/null @@ -1,141 +0,0 @@ -/* Global styles for body and background */ -body, html { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; -} - -/* Container starts hidden */ -.container { - opacity: 0; - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; - text-align: center; -} - -/* Container styling to match your previous design */ -.user-management-container { - background-color: rgba(83, 92, 145, 0.71); - padding: 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 15px rgba(0, 0, 0, 0.2); - color: white; - width: 80%; - max-width: 1000px; -} - -/* User card styling */ -.user-card { - background-color: #fff; - color: #333; - border-radius: 10px; - padding: 15px; - margin: 15px 0; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); - transition: transform 0.3s ease, box-shadow 0.3s ease; -} - -.user-card:hover { - transform: translateY(-5px); - box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); -} - -/* User name */ -.user-name { - font-size: 1.5rem; - font-weight: bold; - margin-bottom: 10px; -} - -/* User department */ -.user-department { - font-size: 1.2rem; - color: #555; - margin-bottom: 10px; -} - -/* Delete button */ -.delete-button { - padding: 10px 20px; - background-color: #f44336; - border: none; - border-radius: 5px; - color: white; - cursor: pointer; - font-weight: bold; - transition: background-color 0.3s ease, box-shadow 0.3s ease; - text-transform: uppercase; -} - -.delete-button:hover { - background-color: #d32f2f; - box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15); -} - -/* Footer buttons */ -button { - margin: 0 1rem 0 1rem; - width: 10vw; - height: 5vh; - - border: none; - border-radius: 10px; - - color: white; - font-size: 1rem; - font-weight: bold; - - text-transform: uppercase; - cursor: pointer; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); - outline: none; - transition: background-color 0.3s ease; -} - -button:hover { - filter: brightness(85%); -} - -button[name="back"] { - background-color: #23BDEE; -} - -/* Footer class */ -.footer { - margin-top: 20px; - display: flex; - justify-content: flex-end; -} - -/* Scrollable user container */ -#users-container { - max-height: 50vh; - overflow-y: auto; -} - -#users-container::-webkit-scrollbar { - width: 10px; -} - -#users-container::-webkit-scrollbar-track { - background: #1B1A55; -} - -#users-container::-webkit-scrollbar-thumb { - background: #535C91; - border: 2px solid #1B1A55; -} - -#users-container::-webkit-scrollbar-thumb:hover { - background: #555; -} diff --git a/CEO/render/css/welcome.css b/CEO/render/css/welcome.css deleted file mode 100644 index df2f3d6..0000000 --- a/CEO/render/css/welcome.css +++ /dev/null @@ -1,59 +0,0 @@ -body, html { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; - - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; -} - -.container { - opacity: 0; - - display: flex; - flex-direction: column; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - text-align: center; -} - -.loading-section { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - color: white; -} - -.spinner { - width: 50px; - height: 50px; - border: 6px solid #f3f3f3; - border-top: 6px solid #2196F3; - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -.loading-section p { - font-size: 1.5rem; - color: white; - margin-top: 1rem; -} diff --git a/CEO/render/html/announcement.html b/CEO/render/html/announcement.html new file mode 100644 index 0000000..b414c29 --- /dev/null +++ b/CEO/render/html/announcement.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + Send Announcement + + +

+ + + + + diff --git a/CEO/render/js/backup_retreive.html b/CEO/render/html/backup_retrieve.html similarity index 56% rename from CEO/render/js/backup_retreive.html rename to CEO/render/html/backup_retrieve.html index ce01128..4d346ef 100644 --- a/CEO/render/js/backup_retreive.html +++ b/CEO/render/html/backup_retrieve.html @@ -4,10 +4,13 @@ - + - + + + + Welcome @@ -15,8 +18,9 @@
-

BACKUP FETCHER

+

Team Vault

+ Backup Fetcher

Backup is not searched, please wait...

diff --git a/CEO/render/html/departments_management.html b/CEO/render/html/departments_management.html deleted file mode 100644 index 5d801cb..0000000 --- a/CEO/render/html/departments_management.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - Manage Departments - - -
-
-

Departments

-
- -
- -
-
-

Create New Department

-
- - - -
-
-
- - - - - diff --git a/CEO/render/html/login.html b/CEO/render/html/login.html index 32b4986..6024f97 100644 --- a/CEO/render/html/login.html +++ b/CEO/render/html/login.html @@ -4,32 +4,38 @@ - + + + + Login +
-

DO WE KNOW

-

EACH OTHER?

+

TeamVault

+

Do we know each other?

+
diff --git a/CEO/render/html/main_menu.html b/CEO/render/html/main_menu.html index c6f91f5..2cb1d0a 100644 --- a/CEO/render/html/main_menu.html +++ b/CEO/render/html/main_menu.html @@ -1,74 +1,65 @@ - - - - - - + + + + + + + + + + + + - - + + - - + Main Page - Main Page - - - -
-
-

Are you sure?

-

This operation cannot be reverted. Do you want to proceed with resetting the database?

-
- - -
-
-
+ + +
-
-
-

WELCOME BACK,

-

-

Hope you have a productive day!

-
- +
+

Notifications

-
-
- - +
+
+
-
- - - + -
- - -
-
- -
-
- -
-
-
-
-
-

NOTIFICATIONS

-
-
-
+
+ + +
+ + + + + + + + + +
+
- - +
+ + diff --git a/CEO/render/html/overview_departments.html b/CEO/render/html/overview_departments.html new file mode 100644 index 0000000..8b0b4cd --- /dev/null +++ b/CEO/render/html/overview_departments.html @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + Manage Departments + + +
+
+
+

Manage Departments

+
+ +
+ +
+
+
+ + + + + + + + diff --git a/CEO/render/html/overview_users.html b/CEO/render/html/overview_users.html new file mode 100644 index 0000000..8c9b680 --- /dev/null +++ b/CEO/render/html/overview_users.html @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + Manage Users + + +
+
+
+

Manage Users

+
+ +
+ +
+
+
+ + diff --git a/CEO/render/html/profile.html b/CEO/render/html/profile.html index c5db853..e7f6ea0 100644 --- a/CEO/render/html/profile.html +++ b/CEO/render/html/profile.html @@ -4,9 +4,12 @@ - + + + + @@ -14,22 +17,24 @@ Profile -
-
-
-

Profile

-
-
-
- - - -
- -
+
+
+
+
+

Profile

+

Who are you?

+
+
+ + + +
+ +
+
diff --git a/CEO/render/html/reset_database.html b/CEO/render/html/reset_database.html new file mode 100644 index 0000000..059ba2c --- /dev/null +++ b/CEO/render/html/reset_database.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + UC Not Found + + +
+
+

TeamVault

+
+ Connecting to server +
+
+

Please wait while we reset the database.

+
+
+ + diff --git a/CEO/render/html/reset_password.html b/CEO/render/html/reset_password.html index 8bf382e..46c1535 100644 --- a/CEO/render/html/reset_password.html +++ b/CEO/render/html/reset_password.html @@ -3,33 +3,37 @@ + + + + Reset Password +
-

RESET

-

YOUR PASSWORD

+

TeamVault

+

Forgot your password? No worries, it happens to the best of us!

- +
diff --git a/CEO/render/html/send_announcement.html b/CEO/render/html/send_announcement.html new file mode 100644 index 0000000..5cd83b2 --- /dev/null +++ b/CEO/render/html/send_announcement.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + Sending Announcement + + +
+
+

TeamVault

+
+ Sending announcement +
+
+

Sending announcement to all users. Please wait...

+
+
+ + diff --git a/CEO/render/html/share_file.html b/CEO/render/html/share_file.html index 6163a09..c0b8a6e 100644 --- a/CEO/render/html/share_file.html +++ b/CEO/render/html/share_file.html @@ -4,46 +4,42 @@ - + + + + Share File - + +
-
-
-
-

SHARE A FILE

-
-

First select the file you want to share

-

(can be whatever resource from the system)

-
-
-

-
+
+
+

Share a File

+

First select the file you want to share.

+ +
+
Users
+

Select the users you want to share the file with.

+
+ +
+
-
- -
- -
-
-

USERS

-
-
-
- -
-
+
diff --git a/CEO/render/html/sign_up.html b/CEO/render/html/sign_up.html deleted file mode 100644 index 4a1bdcc..0000000 --- a/CEO/render/html/sign_up.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - Signup Process - - - -
- -
-
-

LET US MEET

-

EACH OTHER

-
- -
- - - -
- - - - - diff --git a/CEO/render/html/uc_not_found.html b/CEO/render/html/uc_not_found.html index fb3ce49..9de2618 100644 --- a/CEO/render/html/uc_not_found.html +++ b/CEO/render/html/uc_not_found.html @@ -4,9 +4,12 @@ - - + + + + + @@ -15,9 +18,9 @@
-

SEARCHING FOR THE

-

SERVER...

+

TeamVault

+ Connecting to server

Please wait while we try to connect to the server.

diff --git a/CEO/render/html/users_management.html b/CEO/render/html/users_management.html deleted file mode 100644 index 209e056..0000000 --- a/CEO/render/html/users_management.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - Manage Users - - -
-
-

Manage Users

-
- -
- -
-
- - diff --git a/CEO/render/html/welcome.html b/CEO/render/html/welcome.html index ffcc348..2acb6f5 100644 --- a/CEO/render/html/welcome.html +++ b/CEO/render/html/welcome.html @@ -4,10 +4,13 @@ - + - + + + + Welcome @@ -15,7 +18,7 @@
-

WELCOME TO THE APP

+

Welcome to TeamVault

diff --git a/CEO/render/js/announcement.js b/CEO/render/js/announcement.js new file mode 100644 index 0000000..b24ec85 --- /dev/null +++ b/CEO/render/js/announcement.js @@ -0,0 +1,22 @@ +document.addEventListener('DOMContentLoaded', function () { + const submitButton = document.getElementById('submitAnnouncement'); + const buttonBack = document.getElementById('backButton'); + const announcementTextarea = document.getElementById('announcementMessage'); + + buttonBack.addEventListener('click', function () { + fadeOut('main_menu'); + }); + + submitButton.addEventListener('click', async function () { + const message = announcementTextarea.value.trim(); + + if (message === '') { + await window.electronAPI.showAlert('Please enter a message before sending.'); + return; + } + + // Send the announcement message via the electronAPI + window.electronAPI.startAnnouncementWorker(message); + fadeOut('send_announcement'); + }); +}); diff --git a/CEO/render/js/departments_management.js b/CEO/render/js/departments_management.js deleted file mode 100644 index b357b0d..0000000 --- a/CEO/render/js/departments_management.js +++ /dev/null @@ -1,216 +0,0 @@ -document.addEventListener('DOMContentLoaded', async () => { - const backButton = document.getElementById('backButton'); - const form = document.getElementById('new-department-form'); - const modifyModal = document.getElementById('modify-department-modal'); - const closeModal = document.getElementById('close-modal'); - const confirmModifyButton = document.getElementById('confirm-modify'); - let currentDepartmentId = null; - - // Retrieve operation codes via IPC - const operationCodes = await window.electronAPI.getOperationsCodes(); - if (!operationCodes) { - await window.electronAPI.showAlert('Internal error of the application.'); - return; - } - - // Open the TCP socket right after fetching the operation codes - if (!await window.electronAPI.openUcSocket()) { - await window.electronAPI.showAlert('Failed to open socket. Internal error of the application.'); - return; - } - - let codeGetDepartments = operationCodes.GET_DEPARTMENTS; - let codeCreateDepartment = operationCodes.CREATE_DEPARTMENT; - let codeModifyDepartment = operationCodes.MODIFY_DEPARTMENT; - let codeDeleteDepartment = operationCodes.DELETE_DEPARTMENT; - let codeOk = operationCodes.OK; - - // Set up the back button - close the socket before going back - backButton.addEventListener('click', async () => { - await window.electronAPI.closeUcSocket(); // Close the socket when going back - fadeOut('main_menu'); // Navigate to the main menu - }); - - // Set up the form for creating new departments - form.addEventListener('submit', async function (event) { - event.preventDefault(); // Prevent the form from refreshing the page - const departmentName = document.getElementById('departmentName').value; - - if (departmentName.trim()) { - await createDepartment(departmentName); // Call createDepartment function when the form is submitted - } - }); - - // Fetch the departments on page load - await fetchDepartments(); - - // Fetch departments and render them in the left block - async function fetchDepartments() { - const departmentsContainer = document.getElementById('departments-container'); - - // Send the request to get the departments - if (!await window.electronAPI.sendUcMessage(codeGetDepartments)) { - await window.electronAPI.showAlert("Failed to send request."); - await redirectToMainMenu(); - return; - } - - const response = await waitForResponse(); - if (!response || response.operationCode !== codeOk) { - await window.electronAPI.showAlert("Unable to fetch departments."); - await redirectToMainMenu(); - return; - } - - departmentsContainer.innerHTML = ''; // Clear any existing data - - const departments = response.metaInfo.departments; - - // Filter out CEO department - const filteredDepartments = departments.filter(department => department.name.toLowerCase() !== 'ceo'); - - // Check if there are no departments after filtering - if (!filteredDepartments.length) { - const noDepartmentsMessage = document.createElement('p'); - noDepartmentsMessage.textContent = 'No departments exist.'; - noDepartmentsMessage.classList.add('no-departments-message'); // Add a class for styling - departmentsContainer.appendChild(noDepartmentsMessage); - return; - } - - // Iterate over the remaining departments and render them - filteredDepartments.forEach(department => { - const departmentDiv = document.createElement('div'); - departmentDiv.classList.add('department-card'); - - // Create department name div - const nameDiv = document.createElement('div'); - nameDiv.classList.add('department-name'); - nameDiv.textContent = department.name; - - // Create modify button - const modifyButton = document.createElement('button'); - modifyButton.textContent = 'Modify'; - modifyButton.classList.add('modify-button'); - modifyButton.dataset.departmentId = department.id; - - // Create delete button - const deleteButton = document.createElement('button'); - deleteButton.textContent = 'Delete'; - deleteButton.classList.add('delete-button'); - deleteButton.dataset.departmentId = department.id; - - // Append department info and buttons to the department div - departmentDiv.appendChild(nameDiv); - departmentDiv.appendChild(modifyButton); - departmentDiv.appendChild(deleteButton); - - // Append department div to the container - departmentsContainer.appendChild(departmentDiv); - }); - - // Add click event listeners for all dynamically created buttons - addEventListenersToButtons(); - } - - // Add event listeners to dynamically created buttons - function addEventListenersToButtons() { - const modifyButtons = document.querySelectorAll('.modify-button'); - const deleteButtons = document.querySelectorAll('.delete-button'); - - modifyButtons.forEach(button => { - button.addEventListener('click', () => { - currentDepartmentId = button.dataset.departmentId; - openModifyModal(); // Open the modal when modify button is clicked - }); - }); - - deleteButtons.forEach(button => { - button.addEventListener('click', () => { - const departmentId = button.dataset.departmentId; - deleteDepartment(departmentId); - }); - }); - } - - // Open the modify modal - function openModifyModal() { - modifyModal.style.display = 'block'; - } - - // Close the modify modal - function closeModifyModal() { - modifyModal.style.display = 'none'; - currentDepartmentId = null; - } - - // Handle modify modal close event - closeModal.addEventListener('click', closeModifyModal); - - // Handle department modification - confirmModifyButton.addEventListener('click', async () => { - const newDepartmentName = document.getElementById('new-department-name').value; - if (newDepartmentName.trim() && currentDepartmentId) { - await modifyDepartment(currentDepartmentId, newDepartmentName); - closeModifyModal(); // Close the modal after modification - } - }); - - async function modifyDepartment(departmentId, newName) { - if (!await window.electronAPI.sendUcMessage(codeModifyDepartment, { - departmentId: departmentId, - newDepartmentName: newName - })) { - await window.electronAPI.showAlert('Failed to send modification request.'); - return; - } - - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - await window.electronAPI.showAlert(`Department modified: ${newName}`); - await fetchDepartments(); // Refresh the department list after modification - } else { - await window.electronAPI.showAlert('Failed to modify the department.'); - } - } - - async function deleteDepartment(departmentId) { - const confirmDelete = confirm("Are you sure you want to delete this department?"); - if (confirmDelete) { - if (!await window.electronAPI.sendUcMessage(codeDeleteDepartment, { departmentId })) { - await window.electronAPI.showAlert('Failed to send delete request.'); - return; - } - - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - await window.electronAPI.showAlert("Department deleted successfully."); - await fetchDepartments(); // Refresh the department list after deletion - } else { - await window.electronAPI.showAlert("Failed to delete the department."); - } - } - } - - // Function to create a new department - async function createDepartment(departmentName) { - if (!await window.electronAPI.sendUcMessage(codeCreateDepartment, { departmentName })) { - await window.electronAPI.showAlert('Failed to send create request.'); - return; - } - - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - await window.electronAPI.showAlert(`New department created: ${departmentName}`); - await fetchDepartments(); // Refresh the department list - } else { - await window.electronAPI.showAlert("Failed to create department."); - } - } - - // Redirect to main menu - async function redirectToMainMenu() { - await window.electronAPI.closeUcSocket(); - fadeOut('main_menu'); - } -}); diff --git a/CEO/render/js/helpers.js b/CEO/render/js/helpers.js index 78cbf06..b770ad0 100644 --- a/CEO/render/js/helpers.js +++ b/CEO/render/js/helpers.js @@ -24,12 +24,24 @@ function fadeOut(destination) { async function waitForResponse() { return new Promise((resolve) => { const idResponseCheck = setInterval(async () => { - const status = await window.electronAPI.hasResponseArrived(); - if (status) { + if (await window.electronAPI.hasResponseArrived()) { clearInterval(idResponseCheck); - const response = await window.electronAPI.getLastUcResult(); - resolve(response || null); // Resolve the response or null if not available + resolve(await window.electronAPI.getLastUcResult()); // Resolve the response or null if not available } }, 100); // Check every 100 milliseconds if the response has arrived }); } + +function toggleScroll(idComponent, scrollHeight = 180) { + const element = document.getElementById(idComponent); // Using getElementById + if (!element) { + console.error(`Element with ID '${idComponent}' not found.`); + return; + } + if (element.scrollHeight > scrollHeight) { + element.style.overflowY = 'auto'; // Enable scroll if content overflows + } else { + element.style.overflowY = 'hidden'; // Disable scroll if content fits + } +} + diff --git a/CEO/render/js/login.js b/CEO/render/js/login.js index 3262e93..5d56b1b 100644 --- a/CEO/render/js/login.js +++ b/CEO/render/js/login.js @@ -1,3 +1,8 @@ +let codeLogin = ''; +let codeFindByEmail = ''; +let codeFindKeyByUser = ''; +let codeOk = ''; + document.addEventListener('DOMContentLoaded', async function () { const submitButton = document.getElementById('submit'); const resetPasswordButton = document.getElementById('resetPassword'); @@ -9,10 +14,10 @@ document.addEventListener('DOMContentLoaded', async function () { return; } - const codeLogin = operationCodes.LOGIN; - const codeFindByEmail = operationCodes.FIND_BY_EMAIL; - const codeFindKeyByUser = operationCodes.FIND_KEY_BY_USER_ID; - const codeOk = operationCodes.OK; + codeLogin = operationCodes.LOGIN; + codeFindByEmail = operationCodes.FIND_BY_EMAIL; + codeFindKeyByUser = operationCodes.FIND_KEY_BY_USER_ID; + codeOk = operationCodes.OK; resetPasswordButton.addEventListener('click', function (e) { e.preventDefault(); @@ -66,79 +71,88 @@ document.addEventListener('DOMContentLoaded', async function () { await window.electronAPI.closeUcSocket(); await window.electronAPI.changeContent('main_menu'); }); - - async function attemptLogin(email, password) { - const app_type = await window.electronAPI.readUserConfig('app_type'); - const messageData = { email, password, app_type }; - - // Send the login message to the server - if (!await window.electronAPI.sendUcMessage(codeLogin, messageData)) { - await window.electronAPI.showAlert('Failed to send login request.'); - return false; - } - - // Wait for the response using waitForResponse - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - await window.electronAPI.resetApplicationInfo(); - await window.electronAPI.resetUserConfig(); - await window.electronAPI.writeUserConfig('app_type', app_type); - await window.electronAPI.writeUserConfig('user_info', { email, password }); - return true; - }else if(response && respone.operationCode !== codeOk){ - await window.electronAPI.showAlert(response.metaInfo.message); - return false; - } - - await window.electronAPI.showAlert('Invalid login response received.'); - return false; - } - - async function fetchAndStoreUserInfo(userEmail) { - if (!await window.electronAPI.sendUcMessage(codeFindByEmail, { email: userEmail })) { - await window.electronAPI.showAlert('Failed to send request to fetch user info.'); - return false; - } - - // Wait for the response using waitForResponse - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - let userInfo = await window.electronAPI.readUserConfig('user_info'); - if (!userInfo) { - userInfo = {}; - } - - userInfo.id = response.metaInfo.id; - userInfo.departmentId = response.metaInfo.departmentId; - userInfo.name = response.metaInfo.name || 'User'; - - await window.electronAPI.writeUserConfig('user_info', userInfo); - return true; - } - - await window.electronAPI.showAlert('Failed to fetch user info from server.'); - return false; - } - - async function fetchAndStoreEncryptionKey(userId) { - if (!await window.electronAPI.sendUcMessage(codeFindKeyByUser, { userId })) { - await window.electronAPI.showAlert('Failed to send request to fetch encryption key.'); - return false; - } - - // Wait for the response using waitForResponse - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - const encryptionKey = { - key: response.metaInfo.key.key, - iv: response.metaInfo.key.iv, - }; - - await window.electronAPI.writeUserConfig('encryption_key', encryptionKey); - return true; - } - - await window.electronAPI.showAlert('Failed to fetch encryption key from server.'); - return false; - } }); + +async function attemptLogin(email, password) { + const app_type = await window.electronAPI.readUserConfig('app_type'); + const messageData = {email, password, app_type}; + + // Send the login message to the server + if (!await window.electronAPI.sendUcMessage(codeLogin, messageData)) { + await window.electronAPI.showAlert('Failed to send login request.'); + return false; + } + + // Wait for the response using waitForResponse + const response = await waitForResponse(); + + if (!response) { + await window.electronAPI.showAlert('No response from server.'); + return false; + } + + if (response.operationCode !== codeOk) { + await window.electronAPI.showAlert(response.metaInfo.message); + return false; + } + + const user_info = await window.electronAPI.readUserConfig('user_info'); + if (!user_info || (user_info && user_info.email !== email)) { + await window.electronAPI.resetApplicationInfo(); + await window.electronAPI.resetMemory(); + await window.electronAPI.resetUserConfig(); + await window.electronAPI.writeUserConfig('app_type', app_type); + await window.electronAPI.writeUserConfig('user_info', {email, password}); + return true; + } + + return true; +} + +async function fetchAndStoreUserInfo(userEmail) { + if (!await window.electronAPI.sendUcMessage(codeFindByEmail, {email: userEmail})) { + await window.electronAPI.showAlert('Failed to send request to fetch user info.'); + return false; + } + + // Wait for the response using waitForResponse + const response = await waitForResponse(); + if (response && response.operationCode === codeOk) { + let userInfo = await window.electronAPI.readUserConfig('user_info'); + if (!userInfo) { + userInfo = {}; + } + + userInfo.id = response.metaInfo.id; + userInfo.departmentId = response.metaInfo.departmentId; + userInfo.name = response.metaInfo.name || 'User'; + + await window.electronAPI.writeUserConfig('user_info', userInfo); + return true; + } + + await window.electronAPI.showAlert('Failed to fetch user info from server.'); + return false; +} + +async function fetchAndStoreEncryptionKey(userId) { + if (!await window.electronAPI.sendUcMessage(codeFindKeyByUser, {userId})) { + await window.electronAPI.showAlert('Failed to send request to fetch encryption key.'); + return false; + } + + // Wait for the response using waitForResponse + const response = await waitForResponse(); + if (response && response.operationCode === codeOk) { + const encryptionKey = { + key: response.metaInfo.key.key, + iv: response.metaInfo.key.iv, + }; + + await window.electronAPI.writeUserConfig('encryption_key', encryptionKey); + return true; + } + + await window.electronAPI.showAlert('Failed to fetch encryption key from server.'); + return false; +} diff --git a/CEO/render/js/main_menu.js b/CEO/render/js/main_menu.js index a2418b7..27ad798 100644 --- a/CEO/render/js/main_menu.js +++ b/CEO/render/js/main_menu.js @@ -3,25 +3,15 @@ document.addEventListener('DOMContentLoaded', async function () { const backupButton = document.getElementById('backup-dir'); const shareButton = document.getElementById('share-dir'); - const departmentButton = document.getElementById('department-dir'); const changeInfoButton = document.getElementById('change-info'); const shareFileButton = document.getElementById('share-file'); - - const manageUsersButton = document.getElementById('manage-users'); - const manageDepartmentsButton = document.getElementById('manage-departments'); - - const resetDatabaseButton = document.getElementById('reset-database'); - const restoreBackupButton = document.getElementById('restore-backup'); - const logoutButton = document.getElementById('logout'); - - const disclaimerModal = document.getElementById('disclaimer-modal'); - const cancelDisclaimerButton = document.getElementById('disclaimer-cancel'); - const submitDisclaimerButton = document.getElementById('disclaimer-submit'); - - await fetchUserInfo(); - await checkAndSetAllDirectories(); + const restoreBackupButton = document.getElementById('restore-backup'); + const buttonOverviewDepartments = document.getElementById('overview-departments'); + const buttonOverviewUsers = document.getElementById('overview-users'); + const buttonResetDatabase = document.getElementById('reset-database'); + const buttonSendAnnouncement = document.getElementById('send-announcement'); backupButton.addEventListener('click', async function () { await setPath('backupDirectory'); @@ -31,8 +21,28 @@ document.addEventListener('DOMContentLoaded', async function () { await setPath('shareDirectory'); }); - departmentButton.addEventListener('click', async function () { - await setPath('departmentDirectory'); + buttonResetDatabase.addEventListener('click', async function () { + // Show a confirmation dialog + const userConfirmed = await showConfirmationDialog("Are you sure you want to reset the database? This action cannot be undone."); + + // If the user confirms, perform the database reset + if (userConfirmed) { + await resetDatabase(); + } else { + window.electronAPI.showAlert("Database reset canceled."); + } + }); + + buttonSendAnnouncement.addEventListener('click', async function () { + fadeOut('announcement'); + }); + + buttonOverviewDepartments.addEventListener('click', async function () { + fadeOut('overview_departments'); + }); + + buttonOverviewUsers.addEventListener('click', async function () { + fadeOut('overview_users'); }); changeInfoButton.addEventListener('click', function () { @@ -43,191 +53,203 @@ document.addEventListener('DOMContentLoaded', async function () { fadeOut('share_file'); }); - manageUsersButton.addEventListener('click', function () { - fadeOut('users_management'); - }); - - manageDepartmentsButton.addEventListener('click', function () { - fadeOut('departments_management' + - ''); - }); - - resetDatabaseButton.addEventListener('click', function () { - disclaimerModal.style.display = 'block'; // Show disclaimer modal - }); - - cancelDisclaimerButton.addEventListener('click', function () { - disclaimerModal.style.display = 'none'; // Hide modal if cancel is clicked - }); - - submitDisclaimerButton.addEventListener('click', async function () { - disclaimerModal.style.display = 'none'; // Hide modal - await resetDatabase(); // Perform database reset - fadeOut('login'); // Fade out and go back to login - }); - logoutButton.addEventListener('click', async function () { fadeOut('login'); }); + // Add event listener for the restore backup button restoreBackupButton.addEventListener('click', async function () { await restoreBackup(); }); - - async function restoreBackup() { - const backupDirectory = await window.electronAPI.readApplicationInfo('backupDirectory'); - - if (backupDirectory && backupDirectory.path) { - await window.electronAPI.showAlert('You have already set a backup directory. You cannot restore again.'); - return; - } - - const destinationPath = await window.electronAPI.selectDirectory(); - if (!destinationPath) return; - - await window.electronAPI.startBackupRetrieval(destinationPath); - fadeOut('backup_retrieve'); - } - - async function checkAndSetAllDirectories() { - await attachNotificationButton('backupDirectory', 'Set your backup directory!', 'backup_alert', 'alert'); - await attachNotificationButton('shareDirectory', 'Set your share directory!', 'share_alert', 'alert'); - await attachNotificationButton('departmentDirectory', 'Set your department directory!', 'department_alert', 'alert'); - } - - async function checkPathExistence(pathKey) { - return await window.electronAPI.readApplicationInfo(pathKey); - } - - async function setPath(pathKey) { - const path = await window.electronAPI.selectDirectory(); - if (path === undefined) return; - - const id = await window.electronAPI.createMemoryEntry() - console.log({id, path}) - await window.electronAPI.writeApplicationInfo(pathKey, {id, path}); - } - - async function attachNotificationButton(pathKey, buttonText, buttonId, buttonName) { - const path = await checkPathExistence(pathKey); - if (!path) { - const notificationsDiv = document.getElementById('notifications'); - const button = document.createElement('button'); - button.id = buttonId; - button.name = buttonName; - button.textContent = buttonText; - button.addEventListener('click', async function () { - await setPath(pathKey); - button.remove(); - }); - notificationsDiv.appendChild(button); - } - } - - async function fetchUserInfo() { - const usernameField = document.getElementById('username-field'); - let userInfo = await window.electronAPI.readUserConfig('user_info'); - if (userInfo && userInfo.name) { - usernameField.textContent = userInfo.name; - } else { - console.error("Username field is not available in the DOM."); - } - } - - async function loadReceivedFiles() { - const shareDirectoryData = await window.electronAPI.readApplicationInfo('shareDirectory'); - if (!shareDirectoryData || !shareDirectoryData.id) { - console.log('No received files or directory ID found.'); - return; - } - - const directoryId = shareDirectoryData.id; - const directoryStructure = await window.electronAPI.readMemoryEntry(directoryId); - if (!directoryStructure || !directoryStructure.structure) { - console.log('No received files found in the directory structure.'); - return; - } - - const notificationsDiv = document.getElementById('notifications'); - const existingButtons = Array.from(notificationsDiv.children).map(button => button.getAttribute('data-filepath')); - - Object.keys(directoryStructure.structure).forEach(userName => { - const userFiles = directoryStructure.structure[userName]; - Object.keys(userFiles).forEach(fileName => { - const filePath = userFiles[fileName]; - if (!existingButtons.includes(filePath)) { - const button = document.createElement('button'); - button.setAttribute('data-filepath', filePath); - button.name = 'notification'; - button.textContent = `You received a file "${fileName}" from ${userName}`; - button.addEventListener('click', () => handleFileReceivedButtonPressed(filePath, button)); - notificationsDiv.appendChild(button); - } - }); - }); - } - - async function removeReceivedFile(filePath) { - const shareDirectoryData = await window.electronAPI.readApplicationInfo('shareDirectory'); - if (!shareDirectoryData || !shareDirectoryData.id) { - console.log('No directory ID found to update.'); - return; - } - - const directoryId = shareDirectoryData.id; - let directoryStructure = await window.electronAPI.readMemoryEntry(directoryId); - - if (directoryStructure && directoryStructure.structure) { - for (let userName in directoryStructure.structure) { - let userFiles = directoryStructure.structure[userName]; - if (userFiles[filePath]) { - delete userFiles[filePath]; - if (Object.keys(userFiles).length === 0) { - delete directoryStructure.structure[userName]; - } - await window.electronAPI.updateMemoryEntry(directoryId, directoryStructure); - console.log(`File ${filePath} removed from memory.`); - return; - } - } - } else { - console.log('No directory structure found in memory to update.'); - } - } - - async function handleFileReceivedButtonPressed(filePath, button) { - await window.electronAPI.showFileInExplorer(filePath) - .then(() => console.log('File explorer opened for: ' + filePath)) - .catch(error => console.error('Error opening file explorer:', error)); - - button.remove(); - await removeReceivedFile(filePath); - } - - async function resetDatabase() { - const operationCodes = await window.electronAPI.getOperationsCodes(); - if (!operationCodes) { - await window.electronAPI.showAlert('Internal error of the application. Failed to retrieve operation codes.'); - return; - } - - const codeOk = operationCodes.OK; - const codeResetDatabase = operationCodes.RESET_DATABASE; - - if(!await window.electronAPI.openUcSocket()){ - await window.electronAPI.showAlert('Internal application error.'); - return; - } - - // Send the request to reset the database - if (!await window.electronAPI.sendUcMessage(codeResetDatabase)) { - await window.electronAPI.showAlert('Failed to send reset database request.'); - return; - } - - // Wait for the response - await waitForResponse(); - await window.electronAPI.changeContent('login'); - } - }); + +async function initialSetup(){ + await checkAndSetAllDirectories(); + await loadReceivedFiles(); + await fetchUserInfo(); +} + +async function restoreBackup() { + const backupDirectory = await window.electronAPI.readApplicationInfo('backupDirectory'); + + if (backupDirectory && backupDirectory.path) { + // If backup directory is already set, display an alert + await window.electronAPI.showAlert('You have already set a backup directory. You cannot restore again.'); + return; + } + + // Prompt the user to choose the destination for the restored backup + const destinationPath = await window.electronAPI.selectDirectory(); + if (!destinationPath) { + return; // User canceled the directory selection + } + + // Call the IPC method to initiate the backup retrieval process + window.electronAPI.startBackupRetrieval(destinationPath); + + // Switch the content to the 'backup_retrieve' page + fadeOut('backup_retrieve'); +} + +async function checkAndSetAllDirectories() { + await attachNotificationButton('backupDirectory', 'Set your backup directory!', 'backup_alert', 'alert'); + await attachNotificationButton('shareDirectory', 'Set your share directory!', 'share_alert', 'alert'); + await attachNotificationButton('departmentDirectory', 'Set your department directory!', 'department_alert', 'alert'); +} + +async function checkPathExistence(pathKey) { + return await window.electronAPI.readApplicationInfo(pathKey); +} + +async function setPath(pathKey) { + const path = await window.electronAPI.selectDirectory(); + if (path === undefined) return; + + const id = await window.electronAPI.createMemoryEntry() + console.log({id, path}) + await window.electronAPI.writeApplicationInfo(pathKey, {id, path}); +} + +async function attachNotificationButton(pathKey, buttonText, buttonId, buttonName) { + const path = await checkPathExistence(pathKey); + if (!path) { + const notificationsDiv = document.getElementById('notifications'); + const button = document.createElement('button'); + button.className='alert'; + button.id = buttonId; + button.name = buttonName; + button.textContent = buttonText; + button.addEventListener('click', async function () { + await setPath(pathKey); + button.remove(); // Remove button after setting the path + }); + notificationsDiv.appendChild(button); + } +} + +async function fetchUserInfo() { + const usernameField = document.getElementById('username-field'); + + // Read the user credentials from the userConfig + let userInfo = await window.electronAPI.readUserConfig('user_info'); + if (userInfo && userInfo.name) { + usernameField.textContent = userInfo.name; + return; + } + + // Update the greeting with the fetched user's name + if (usernameField) { + usernameField.textContent = userInfo.name; // Update the h1 with the user's name + } else { + console.error("Username field is not available in the DOM."); + } +} + +async function loadReceivedFiles() { + // Read the shareDirectory from applicationInfo + const shareDirectoryData = await window.electronAPI.readApplicationInfo('shareDirectory'); + + if (!shareDirectoryData || !shareDirectoryData.id) { + console.log('No received files or directory ID found.'); + return; + } + + const directoryId = shareDirectoryData.id; + + // Fetch the directory structure (JSON objects with user names and file paths) + const directoryStructure = await window.electronAPI.readMemoryEntry(directoryId); + + if (!directoryStructure || !directoryStructure.structure) { + console.log('No received files found in the directory structure.'); + return; + } + + const notificationsDiv = document.getElementById('notifications'); + const existingButtons = Array.from(notificationsDiv.children).map(button => button.getAttribute('data-filepath')); + + // Iterate over each user and their files in the structure + Object.keys(directoryStructure.structure).forEach(userName => { + const userFiles = directoryStructure.structure[userName]; + + // Iterate over each file of the user + Object.keys(userFiles).forEach(fileName => { + const filePath = userFiles[fileName]; + + // Check if a button for this file path already exists + if (!existingButtons.includes(filePath)) { + const button = document.createElement('button'); + button.setAttribute('data-filepath', filePath); // Set a custom attribute to track the file path + button.className = 'notification'; + button.name = 'notification'; + button.textContent = `You received a file "${fileName}" from ${userName}`; // Display the userName and file name + button.addEventListener('click', () => handleFileReceivedButtonPressed(filePath, button)); + notificationsDiv.appendChild(button); + } + }); + }); +} + +async function removeReceivedFile(filePath) { + // Read the shareDirectory from applicationInfo + const shareDirectoryData = await window.electronAPI.readApplicationInfo('shareDirectory'); + + if (!shareDirectoryData || !shareDirectoryData.id) { + console.log('No directory ID found to update.'); + return; + } + + const directoryId = shareDirectoryData.id; + + // Fetch the directory structure + let directoryStructure = await window.electronAPI.readMemoryEntry(directoryId); + + if (directoryStructure && directoryStructure.structure) { + // Iterate over each user and their files + for (let userName in directoryStructure.structure) { + let userFiles = directoryStructure.structure[userName]; + + // Check if the file exists and remove it + if (userFiles[filePath]) { + delete userFiles[filePath]; + + // Remove the user if no more files are left + if (Object.keys(userFiles).length === 0) { + delete directoryStructure.structure[userName]; + } + + // Update the directory structure in memory + await window.electronAPI.updateMemoryEntry(directoryId, directoryStructure); + console.log(`File ${filePath} removed from memory.`); + return; + } + } + } else { + console.log('No directory structure found in memory to update.'); + } +} + +async function handleFileReceivedButtonPressed(filePath, button) { + console.log('Notification button clicked!'); + + // Open the file in the file explorer + await window.electronAPI.showFileInExplorer(filePath) + .then(() => console.log('File explorer opened for: ' + filePath)) + .catch(error => console.error('Error opening file explorer:', error)); + + // Remove the button after opening the file + button.remove(); + + // Remove the file from memory + await removeReceivedFile(filePath); +} + +async function showConfirmationDialog(message) { + return new Promise((resolve) => { + const userResponse = window.confirm(message); // Show native confirmation dialog + resolve(userResponse); // Resolve with true (OK) or false (Cancel) + }); +} + +async function resetDatabase(){ + fadeOut('reset_database'); +} diff --git a/CEO/render/js/overview_departments.js b/CEO/render/js/overview_departments.js new file mode 100644 index 0000000..0d2ddb3 --- /dev/null +++ b/CEO/render/js/overview_departments.js @@ -0,0 +1,209 @@ +let codeOk = ''; +let codeGetDepartments = ''; +let codeCreateDepartment = ''; +let codeModifyDepartment = ''; +let codeDeleteDepartment = ''; + +document.addEventListener('DOMContentLoaded', async () => { + const backButton = document.getElementById('backButton'); + const createButton = document.getElementById('createDepartmentButton'); + const closeCreateModalButton = document.getElementById('closeCreateModal'); + const confirmCreateButton = document.getElementById('confirmCreateButton'); + + if (!await window.electronAPI.openUcSocket()) { + await window.electronAPI.showAlert('Internal error of the application. Unable to open socket.'); + return; + } + + backButton.addEventListener('click', async () => { + await window.electronAPI.closeUcSocket(); + fadeOut('main_menu'); + }); + + // Show the Create Department Modal + createButton.addEventListener('click', () => { + document.getElementById('createDepartmentModal').style.display = 'block'; + }); + + // Close Modals + closeCreateModalButton.addEventListener('click', () => { + document.getElementById('createDepartmentModal').style.display = 'none'; + }); + + // Confirm Create Department + confirmCreateButton.addEventListener('click', async () => { + const departmentName = document.getElementById('newDepartmentName').value.trim(); + if (!departmentName) { + window.electronAPI.showAlert("Please enter a department name."); + return; + } + + await createDepartment(departmentName); + document.getElementById('createDepartmentModal').style.display = 'none'; + }); +}); + +// Example usage to render these dummy departments +async function fetchDepartments() { + const departmentsContainer = document.getElementById('departments-container'); + departmentsContainer.innerHTML = ''; // Clear any existing data + + // Retrieve the operation codes via IPC + const operationCodes = await window.electronAPI.getOperationsCodes(); + if (!operationCodes) { + await window.electronAPI.showAlert('Internal error of the application. Failed to retrieve operation codes.'); + return; + } + + codeOk = operationCodes.OK; + codeGetDepartments = operationCodes.GET_DEPARTMENTS; + codeCreateDepartment = operationCodes.CREATE_DEPARTMENT; + codeModifyDepartment = operationCodes.MODIFY_DEPARTMENT; + codeDeleteDepartment = operationCodes.DELETE_DEPARTMENT; + + // Send the login message to the server + if (!await window.electronAPI.sendUcMessage(codeGetDepartments)) { + await window.electronAPI.showAlert('Failed to send login request.'); + return false; + } + + // Wait for the response using waitForResponse + const response = await waitForResponse(); + + if(!response || response.operationCode !== codeOk){ + await window.electronAPI.showAlert('Could not fetch departments.'); + return false; + } + + const departments = response.metaInfo.departments; + + const filteredDepartments = departments.filter(department => department.name.toLowerCase() !== 'ceo'); + + if (!filteredDepartments.length) { + const noDepartmentsMessage = document.createElement('p'); + noDepartmentsMessage.textContent = 'No departments exist.'; + noDepartmentsMessage.classList.add('no-departments-message'); + departmentsContainer.appendChild(noDepartmentsMessage); + return; + } + + filteredDepartments.forEach(department => { + const departmentDiv = document.createElement('div'); + departmentDiv.classList.add('department-card'); + + const nameDiv = document.createElement('div'); + nameDiv.classList.add('department-name'); + nameDiv.textContent = department.name; + + // Create and add Modify button + const modifyButton = document.createElement('button'); + modifyButton.textContent = 'Modify'; + modifyButton.classList.add('modify-button'); + modifyButton.dataset.departmentId = department.id; + + modifyButton.addEventListener('click', () => { + console.log(`Modify button clicked for department ID: ${department.id}`); + openModifyModal(department.id, department.name); // Call the function to open the modify modal + }); + + // Create and add Delete button + const deleteButton = document.createElement('button'); + deleteButton.textContent = 'Delete'; + deleteButton.classList.add('delete-button'); + deleteButton.dataset.departmentId = department.id; + + deleteButton.addEventListener('click', async () => { + console.log(`Delete button clicked for department ID: ${department.id}`); + await deleteDepartment(department.id); // Call the function to delete the department + }); + + departmentDiv.appendChild(nameDiv); + departmentDiv.appendChild(modifyButton); + departmentDiv.appendChild(deleteButton); + + departmentsContainer.appendChild(departmentDiv); + }); + + toggleScroll('departments-container', 370); +} + + +async function createDepartment(departmentName) { + if (!await window.electronAPI.sendUcMessage(codeCreateDepartment, { departmentName: departmentName })) { + await window.electronAPI.showAlert('Failed to send login request.'); + return false; + } + + // Wait for the response using waitForResponse + const response = await waitForResponse(); + + if(!response || response.operationCode !== codeOk){ + await window.electronAPI.showAlert('Could not create new department.'); + return false; + } + + await fetchDepartments(); +} + +async function modifyDepartment(departmentId, newDepartmentName) { + if (!await window.electronAPI.sendUcMessage(codeModifyDepartment, { departmentId: departmentId, newDepartmentName: newDepartmentName })) { + await window.electronAPI.showAlert('Failed to send modify request.'); + return false; + } + + // Wait for the response using waitForResponse + const response = await waitForResponse(); + + if(!response || response.operationCode !== codeOk){ + await window.electronAPI.showAlert('Could not modify department.'); + console.log(response.metaInfo.message); + return false; + } + + await fetchDepartments(); +} + +async function deleteDepartment(departmentId) { + const confirmDelete = confirm("Are you sure you want to delete this department?"); + if (!confirmDelete) return; + + if (!await window.electronAPI.sendUcMessage(codeDeleteDepartment, { departmentId: departmentId })) { + await window.electronAPI.showAlert('Failed to send delete request.'); + return false; + } + + const response = await waitForResponse(); + + if(!response || response.operationCode !== codeOk){ + await window.electronAPI.showAlert('Could not delete department.'); + return false; + } + + await fetchDepartments(); +} + +// Show the Modify Department Modal +function openModifyModal(departmentId, departmentName) { + document.getElementById('confirmModifyButton').value = departmentId; + document.getElementById('modifiedDepartmentName').value = departmentName; + document.getElementById('modifyDepartmentModal').style.display = 'block'; + + document.getElementById('closeModifyModal').addEventListener('click', () => { + document.getElementById('modifyDepartmentModal').style.display = 'none'; + }); + + document.getElementById('confirmModifyButton').addEventListener('click', async () => { + const newDepartmentName = document.getElementById('modifiedDepartmentName').value.trim(); + const departmentId = document.getElementById('confirmModifyButton').value; + + console.log(newDepartmentName, departmentId); + + if (!newDepartmentName || !departmentId) { + window.electronAPI.showAlert("Please enter a new department name."); + return; + } + await modifyDepartment(departmentId, newDepartmentName); + document.getElementById('modifyDepartmentModal').style.display = 'none'; + }); + +} diff --git a/CEO/render/js/overview_users.js b/CEO/render/js/overview_users.js new file mode 100644 index 0000000..23c9127 --- /dev/null +++ b/CEO/render/js/overview_users.js @@ -0,0 +1,150 @@ +let codeGetDepartments = ''; +let codeGetUsers = ''; +let codeDeleteUser = ''; +let codeOk = ''; + +document.addEventListener('DOMContentLoaded', async () => { + const backButton = document.getElementById('backButton'); + backButton.addEventListener('click', async () => { + await window.electronAPI.closeUcSocket(); + fadeOut('main_menu'); + }); +}); + +async function fetchData() { + const operationCodes = await window.electronAPI.getOperationsCodes(); + if (!operationCodes) { + await window.electronAPI.showAlert('Internal error of the application. Failed to retrieve operation codes.'); + return; + } + + codeGetDepartments = operationCodes.GET_DEPARTMENTS; + codeGetUsers = operationCodes.GET_USERS; + codeDeleteUser = operationCodes.DELETE_USER; + codeOk = operationCodes.OK; + + // Open the TCP socket right after fetching the operation codes + if (!await window.electronAPI.openUcSocket()) { + alert('Failed to open socket. Internal error of the application.'); + return; + } + + // Fetch departments + const departmentsResponse = await fetchDepartments(); + if (!departmentsResponse || departmentsResponse.operationCode !== codeOk) { + alert('Failed to fetch departments. Redirecting to main menu...'); + await redirectToMainMenu(); + return; + } + + const departments = departmentsResponse.metaInfo.departments; + + // Fetch users + const usersResponse = await fetchUsers(); + if (!usersResponse || usersResponse.operationCode !== codeOk) { + alert('Failed to fetch users. Redirecting to main menu...'); + await redirectToMainMenu(); + return; + } + + const users = usersResponse.metaInfo.users; + + const usersContainer = document.getElementById('users-container'); + usersContainer.innerHTML = ''; // Clear the container + + // Filter out users in the CEO department + const ceoDepartment = departments.find(dept => dept.name.toLowerCase() === 'ceo'); + const filteredUsers = users.filter(user => user.departmentId !== ceoDepartment.id); + + // Check if there are no users after filtering + if (!filteredUsers.length) { + const noUsersMessage = document.createElement('p'); + noUsersMessage.textContent = 'No users exist.'; + noUsersMessage.classList.add('no-users-message'); // Add a class for styling + usersContainer.appendChild(noUsersMessage); + fadeIn(); // Fade in the container when the message is loaded + return; + } + + // Render users if there are any + filteredUsers.forEach(user => { + const userDiv = document.createElement('div'); + userDiv.classList.add('user-card'); + + // Create user info div + const userInfoDiv = document.createElement('div'); + userInfoDiv.classList.add('user-info'); + + // Create user name paragraph + const nameP = document.createElement('p'); + nameP.classList.add('user-name'); + nameP.textContent = user.name; + + console.log(user) + + console.log(departments) + + // Find and display user's department name + const department = departments.find(dept => dept.id === user.departmentId); + const departmentName = department ? department.name : 'Unknown'; + + // Create user department paragraph + const departmentP = document.createElement('p'); + departmentP.classList.add('user-department'); + departmentP.textContent = `Department: ${departmentName}`; + + // Append name and department to user info div + userInfoDiv.appendChild(nameP); + userInfoDiv.appendChild(departmentP); + + // Create delete button + const deleteButton = document.createElement('button'); + deleteButton.textContent = 'Delete'; + deleteButton.classList.add('delete-button'); + deleteButton.onclick = () => deleteUser(user.id); + + // Append user info div and delete button to user card + userDiv.appendChild(userInfoDiv); + userDiv.appendChild(deleteButton); + + // Append user card to the container + usersContainer.appendChild(userDiv); + }); +} + +async function fetchDepartments() { + // Send the request to get departments + if (!await window.electronAPI.sendUcMessage(codeGetDepartments)) { + return null; + } + return await waitForResponse(); +} + +async function fetchUsers() { + // Send the request to get users + if (!await window.electronAPI.sendUcMessage(codeGetUsers)) { + return null; + } + return await waitForResponse(); +} + +async function deleteUser(userId) { + // Send the request to delete the user + if (!await window.electronAPI.sendUcMessage(codeDeleteUser, {id: userId})) { + alert('Failed to send request to delete user.'); + return; + } + + const response = await waitForResponse(); + if (!response || response.operationCode !== codeOk) { + alert('Failed to delete user.'); + return; + } + + await fetchData(); +} + +async function redirectToMainMenu() { + await window.electronAPI.closeUcSocket(); + fadeOut('main_menu'); +} diff --git a/CEO/render/js/profile.js b/CEO/render/js/profile.js index c942e50..44f715e 100644 --- a/CEO/render/js/profile.js +++ b/CEO/render/js/profile.js @@ -10,8 +10,8 @@ document.addEventListener('DOMContentLoaded', async function () { usernameInput.value = name; passwordInput.value = password; - const backButton = document.querySelector('button[name="login"]'); - const submitButton = document.querySelector('button[name="submit"]'); + const backButton = document.getElementById('back'); + const submitButton = document.getElementById('submit'); // Get operation codes from the backend const operationCodes = await window.electronAPI.getOperationsCodes(); @@ -39,7 +39,8 @@ document.addEventListener('DOMContentLoaded', async function () { const name = usernameInput.value; const password = passwordInput.value; - const { id, departmentId, app_type } = await window.electronAPI.readUserConfig('user_info'); // Fetch login data + const { id, departmentId } = await window.electronAPI.readUserConfig('user_info'); // Fetch login data + const app_type = await window.electronAPI.readUserConfig('app_type'); // Fetch app type // Prepare the data to be sent via the UC socket const messageData = { diff --git a/CEO/render/js/reset_database.js b/CEO/render/js/reset_database.js new file mode 100644 index 0000000..d640c5a --- /dev/null +++ b/CEO/render/js/reset_database.js @@ -0,0 +1,31 @@ +document.addEventListener('DOMContentLoaded', async function () { + const operationCodes = await window.electronAPI.getOperationsCodes(); + if (!operationCodes) { + await window.electronAPI.showAlert('Internal error of the application. Failed to retrieve operation codes.'); + return; + } + + const codeResetDatabase = operationCodes.RESET_DATABASE; + const codeOk = operationCodes.OK; + + // Open a TCP socket to the stored IP + if (!await window.electronAPI.openUcSocket()) { + await window.electronAPI.showAlert('Internal error of the application. Unable to open socket.'); + return; + } + + if (!await window.electronAPI.sendUcMessage(codeResetDatabase)) { + await window.electronAPI.showAlert('Failed to send login request.'); + return; + } + + const response = await waitForResponse(); + if (response && response.operationCode !== codeOk) { + await window.electronAPI.showAlert('Database reset failed.'); + return; + } + + await window.electronAPI.closeUcSocket(); + await new Promise(resolve => setTimeout(resolve, 2000)); + fadeOut('login'); +}); \ No newline at end of file diff --git a/CEO/render/js/reset_password.js b/CEO/render/js/reset_password.js index 06a2f67..667ae4c 100644 --- a/CEO/render/js/reset_password.js +++ b/CEO/render/js/reset_password.js @@ -1,3 +1,6 @@ +let codeResetPassword = ''; +let codeOk = ''; + document.addEventListener('DOMContentLoaded', async function () { const backToLoginButton = document.getElementById('backToLogin'); const resetPasswordButton = document.getElementById('resetPassword'); @@ -9,8 +12,8 @@ document.addEventListener('DOMContentLoaded', async function () { return; } - const codeResetPassword = operationCodes.RESET_PASSWORD; - const codeOk = operationCodes.OK; + codeResetPassword = operationCodes.RESET_PASSWORD; + codeOk = operationCodes.OK; // Back to login backToLoginButton.addEventListener('click', function (e) { @@ -45,19 +48,19 @@ document.addEventListener('DOMContentLoaded', async function () { await window.electronAPI.showAlert('Password reset successfully.'); window.electronAPI.changeContent('login'); }); - - async function attemptResetPassword(email, newPassword) { - const app_type = await window.electronAPI.readUserConfig('app_type'); - const messageData = { email, newPassword, app_type }; - - if (!await window.electronAPI.sendUcMessage(codeResetPassword, messageData)) return false; - - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - return true; - } else { - await window.electronAPI.showAlert(response?.metaInfo?.message || 'Error resetting password.'); - return false; - } - } }); + +async function attemptResetPassword(email, newPassword) { + const app_type = await window.electronAPI.readUserConfig('app_type'); + const messageData = { email, newPassword, app_type }; + + if (!await window.electronAPI.sendUcMessage(codeResetPassword, messageData)) return false; + + const response = await waitForResponse(); + if (response && response.operationCode === codeOk) { + return true; + } else { + await window.electronAPI.showAlert(response?.metaInfo?.message || 'Error resetting password.'); + return false; + } +} diff --git a/CEO/render/js/share_file.js b/CEO/render/js/share_file.js index 2053302..5b5eb45 100644 --- a/CEO/render/js/share_file.js +++ b/CEO/render/js/share_file.js @@ -1,62 +1,13 @@ +let pathToFile = ''; +let fetchUsersInterval = null; + document.addEventListener('DOMContentLoaded', async function () { - let user_info = {}; - let pathToFile = ''; + const selectFileButton = document.getElementById('selectFile'); + const submitButton = document.getElementById('submitButton'); + const backButton = document.getElementById('backButton'); - user_info = await window.electronAPI.readUserConfig('user_info'); - if (!user_info) { - await window.electronAPI.showAlert('No user_info entry found.'); - return; - } - - // Function to update the file name display - function updateFileName() { - const fileNameElement = document.getElementById('fileName'); - if (!fileNameElement) { - return; - } - - if (pathToFile.trim() === '') { - fileNameElement.textContent = 'No file chosen'; - } else { - fileNameElement.textContent = pathToFile.split('\\').pop().split('/').pop(); - } - } - - updateFileName(); - - // Fetch user information from applicationInfo and create checkboxes for selecting users - async function fetchUsersAndCreateCheckboxes() { - const usersInfoId = await window.electronAPI.readApplicationInfo('active_users_info'); - if (!usersInfoId) { - await window.electronAPI.showAlert('Internal error.'); - return; - } - - const usersInfo = await window.electronAPI.readMemoryEntry(usersInfoId); - if (!usersInfo || usersInfo.length === 0) { - await window.electronAPI.showAlert('No active users found.'); - await window.electronAPI.changeContent('main_menu'); - return; - } - - const usersDiv = document.querySelector('.choose_user_form_content'); - usersDiv.innerHTML = ''; - usersInfo.forEach(user => { - const checkbox = document.createElement('input'); - checkbox.type = 'checkbox'; - checkbox.name = 'users'; - checkbox.value = user.ip; // Store user's IP in the value - - const label = document.createElement('label'); - label.innerHTML = `${user.user_info.name}`; // Display user's name - label.insertBefore(checkbox, label.firstChild); - - usersDiv.appendChild(label); - }); - } - - // Event listener for selecting the file - document.getElementById('selectFile').addEventListener('click', async function () { + selectFileButton.addEventListener('click', async function (event) { + event.preventDefault(); try { pathToFile = await window.electronAPI.selectFile(); updateFileName(); @@ -64,14 +15,7 @@ document.addEventListener('DOMContentLoaded', async function () { console.error('Error opening file dialog:', error); } }); - - // Event listener for back button to navigate to main menu - document.getElementById('backButton').addEventListener('click', function () { - fadeOut('main_menu'); - }); - - // Submit button logic to queue file send tasks and then navigate to main_menu.html - document.getElementById('submitButton').addEventListener('click', async function (event) { + submitButton.addEventListener('click', async function (event) { event.preventDefault(); // Check if a file was chosen @@ -80,6 +24,11 @@ document.addEventListener('DOMContentLoaded', async function () { return; } + const user_info = await window.electronAPI.readUserConfig('user_info'); + if (!user_info) { + return; + } + const form = document.getElementById('userDestForm'); const checkboxes = form.querySelectorAll('input[name="users"]'); const selectedUserIps = Array.from(checkboxes) @@ -100,19 +49,78 @@ document.addEventListener('DOMContentLoaded', async function () { userName: user_info.name // Sender's username from userConfig }; await window.electronAPI.addTaskToSendFileQueue(task); - + await window.electronAPI.showAlert('File sent to the queue.'); console.log(`Task added to send file to IP ${selectedUserIp}`); } catch (error) { console.error(`Error processing IP ${selectedUserIp}:`, error); } } - - // Navigate back to the main menu after all tasks are queued - fadeOut('main_menu'); // Navigate to the main menu + }); + backButton.addEventListener('click', function (event) { + event.preventDefault(); + fadeOut('main_menu'); }); - // Fetch users and create checkboxes every 5 seconds (in case of updates) setInterval(fetchUsersAndCreateCheckboxes, 5000); - - fetchUsersAndCreateCheckboxes().then(() => console.log('User checkboxes rendered')); }); + +// Function to update the file name display +function updateFileName() { + const fileNameElement = document.getElementById('selectFile'); + if (!fileNameElement) { + return; + } + + if (pathToFile.trim() === '') { + fileNameElement.textContent = 'No file chosen'; + } else { + fileNameElement.textContent = pathToFile.split('\\').pop().split('/').pop(); + } +} + +async function fetchUsersAndCreateCheckboxes() { + // Step 1: Get the currently checked users before refreshing the list + const selectedUserIps = new Set( + Array.from(document.querySelectorAll('input[name="users"]:checked')) + .map(checkbox => checkbox.value) + ); + + const usersInfoId = await window.electronAPI.readApplicationInfo('active_users_info'); + if (!usersInfoId) { + await window.electronAPI.showAlert('Internal error.'); + return; + } + + const usersInfo = await window.electronAPI.readMemoryEntry(usersInfoId); + if (!usersInfo || usersInfo.length === 0) { + await window.electronAPI.showAlert('No active users found.'); + clearInterval(fetchUsersInterval); + fetchUsersInterval = null; + await window.electronAPI.changeContent('main_menu'); + return; + } + + const usersDiv = document.getElementById('choose_user_form_content'); + usersDiv.innerHTML = ''; // Clear the list before updating + + usersInfo.forEach(user => { + const checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; + checkbox.name = 'users'; + checkbox.value = user.ip; // Store user's IP in the value + + // Step 2: Check if this user was previously selected + if (selectedUserIps.has(user.ip)) { + checkbox.checked = true; // Restore checked state + } + + const label = document.createElement('label'); + label.innerHTML = `${user.user_info.name}`; // Display user's name + label.insertBefore(checkbox, label.firstChild); + + usersDiv.appendChild(label); + }); + + toggleScroll('choose_user_form_content'); +} + diff --git a/CEO/render/js/sign_up.js b/CEO/render/js/sign_up.js deleted file mode 100644 index 2ec0477..0000000 --- a/CEO/render/js/sign_up.js +++ /dev/null @@ -1,134 +0,0 @@ -document.addEventListener('DOMContentLoaded', async function () { - const nextToStep2Button = document.getElementById('nextToStep2'); - const backToStep1Button = document.getElementById('backToStep1'); - const submitSignupButton = document.getElementById('submitSignup'); - const backToLogin = document.getElementById('backToLogin'); - - const step1 = document.getElementById('step1'); - const step2 = document.getElementById('step2'); - - // This object will hold the user data - let userData = { - email: null, - name: null, - password: null, - app_type: null, - departmentId: null - }; - - if (!await window.electronAPI.openUcSocket()) { - alert('Internal error of the application.'); - return; - } - - const operationCodes = await window.electronAPI.getOperationsCodes(); - if (!operationCodes) { - await window.electronAPI.showAlert('Internal error of the application.'); - return; - } - - const codeGetDepartments = operationCodes.GET_DEPARTMENTS; - const codeSignUp = operationCodes.SIGN_UP; - const codeOk = operationCodes.OK; - - let departments = await getDepartments(); - if (departments === null) { - await window.electronAPI.showAlert('Failed to fetch departments.'); - return; - } - console.log(departments); - - // Handle form submission for Step 1 (Profile Information) - nextToStep2Button.addEventListener('click', async function (e) { - e.preventDefault(); // Prevent the default form submission - - // Collect data from Step 1 inputs - userData.email = document.querySelector('input[name="email"]').value; - userData.name = document.querySelector('input[name="name"]').value; - userData.password = document.querySelector('input[name="password"]').value; - userData.app_type = await window.electronAPI.readUserConfig('app_type'); - - // Move to Step 2 - const departmentList = document.getElementById('departmentList'); - departmentList.innerHTML = ''; // Clear existing departments - - // Populate department list - departments.forEach(department => { - if (department.name !== 'CEO' && department.name !== 'ADMIN') { - const label = document.createElement('label'); - label.innerHTML = ` - - ${department.name} - `; - departmentList.appendChild(label); - } - }); - - switchStep(step1, step2); - }); - - // Handle form submission for Step 2 (Department Selection) - submitSignupButton.addEventListener('click', async function (e) { - e.preventDefault(); // Prevent form from being submitted in the usual way - - // Get the selected department - userData.departmentId = document.querySelector('input[name="dept"]:checked')?.value; - if (!userData.departmentId) { - await window.electronAPI.showAlert('Please select a department.'); - return; - } - - if (!await attemptSignUp()) { - switchStep(step2, step1); - return; - } - - await window.electronAPI.showAlert('Signup successful!'); - await window.electronAPI.changeContent('login'); - }); - - // Back to Step 1 from Step 2 - backToStep1Button.addEventListener('click', function () { - switchStep(step2, step1); - }); - - // Back to login - backToLogin.addEventListener('click', async function (e) { - e.preventDefault(); - await window.electronAPI.closeUcSocket(); - await window.electronAPI.changeContent('login'); - }); - - async function getDepartments() { - if (!await window.electronAPI.sendUcMessage(codeGetDepartments)) return null; - - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - return response.metaInfo.departments; - } - return null; - } - - async function attemptSignUp() { - if (!await window.electronAPI.sendUcMessage(codeSignUp, userData)) return false; - - const response = await waitForResponse(); - if (response && response.operationCode === codeOk) { - return true; - } - await window.electronAPI.showAlert(`Signup failed: ${response?.metaInfo?.message || 'Unknown error'}`); - return false; - } - - // Function to switch between steps - function switchStep(fromStep, toStep) { - fromStep.classList.remove('active'); // Fade out the current step - setTimeout(() => { - fromStep.style.display = 'none'; // Hide the current step after transition - toStep.style.display = 'flex'; // Ensure display is flex for the next step - setTimeout(() => { - toStep.classList.add('active'); // Fade in the next step - }, 20); // Small delay to allow display change before applying opacity - }, 500); // Transition duration (0.5s) - } -}); diff --git a/CEO/render/js/users_management.js b/CEO/render/js/users_management.js deleted file mode 100644 index 5444917..0000000 --- a/CEO/render/js/users_management.js +++ /dev/null @@ -1,142 +0,0 @@ -document.addEventListener('DOMContentLoaded', async () => { - const backButton = document.getElementById('backButton'); - backButton.addEventListener('click', async () => { - await window.electronAPI.closeUcSocket(); - fadeOut('main_menu'); - }); - - const operationCodes = await window.electronAPI.getOperationsCodes(); - if (!operationCodes) { - alert('Internal error of the application.'); - return; - } - - // Open the TCP socket right after fetching the operation codes - if (!await window.electronAPI.openUcSocket()) { - alert('Failed to open socket. Internal error of the application.'); - return; - } - - let codeGetDepartments = operationCodes.GET_DEPARTMENTS; - let codeGetUsers = operationCodes.GET_USERS; - let codeDeleteUser = operationCodes.DELETE_USER; - let codeOk = operationCodes.OK; - - // Fetch both users and departments, then display the users with their departments - async function fetchData() { - try { - // Fetch departments - const departmentsResponse = await fetchDepartments(); - if (!departmentsResponse || departmentsResponse.operationCode !== codeOk) { - alert('Failed to fetch departments. Redirecting to main menu...'); - await redirectToMainMenu(); - return; - } - - const departments = departmentsResponse.metaInfo.departments; - - // Fetch users - const usersResponse = await fetchUsers(); - if (!usersResponse || usersResponse.operationCode !== codeOk) { - alert('Failed to fetch users. Redirecting to main menu...'); - await redirectToMainMenu(); - return; - } - - const users = usersResponse.metaInfo.users; - - const usersContainer = document.getElementById('users-container'); - usersContainer.innerHTML = ''; // Clear the container - - // Filter out users in the CEO department - const ceoDepartment = departments.find(dept => dept.name.toLowerCase() === 'ceo'); - const filteredUsers = users.filter(user => user.departmentId !== ceoDepartment.id); - - // Check if there are no users after filtering - if (!filteredUsers.length) { - const noUsersMessage = document.createElement('p'); - noUsersMessage.textContent = 'No users exist.'; - noUsersMessage.classList.add('no-users-message'); // Add a class for styling - usersContainer.appendChild(noUsersMessage); - fadeIn(); // Fade in the container when the message is loaded - return; - } - - // Render users if there are any - filteredUsers.forEach(user => { - const userDiv = document.createElement('div'); - userDiv.classList.add('user-card'); - - // Create user name div - const nameDiv = document.createElement('div'); - nameDiv.classList.add('user-name'); - nameDiv.textContent = user.name; - - // Find the user's department name using departmentId - const department = departments.find(dept => dept.id === user.departmentId); - const departmentName = department ? department.name : 'Unknown'; - - // Create department div - const departmentDiv = document.createElement('div'); - departmentDiv.classList.add('user-department'); - departmentDiv.textContent = `Department: ${departmentName}`; - - // Create delete button - const deleteButton = document.createElement('button'); - deleteButton.textContent = 'Delete'; - deleteButton.classList.add('delete-button'); - deleteButton.onclick = () => deleteUser(user.id); - - // Append user info and delete button to the user div - userDiv.appendChild(nameDiv); - userDiv.appendChild(departmentDiv); - userDiv.appendChild(deleteButton); - - // Append user div to the container - usersContainer.appendChild(userDiv); - }); - - fadeIn(); // Fade in the container when the users are loaded - } catch (error) { - console.error('Error fetching data:', error); - alert('An unexpected error occurred. Redirecting to main menu...'); - await redirectToMainMenu(); - } - } - - async function fetchDepartments() { - // Send the request to get departments - if (!await window.electronAPI.sendUcMessage(codeGetDepartments)) { - return null; - } - return await waitForResponse(); - } - - async function fetchUsers() { - // Send the request to get users - if (!await window.electronAPI.sendUcMessage(codeGetUsers)) { - return null; - } - return await waitForResponse(); - } - - async function deleteUser(userId) { - // Find the index of the user in the dummy data - const userIndex = dummyUsers.findIndex(user => user.id === userId); - - // If user found, remove it from the array - if (userIndex !== -1) { - dummyUsers.splice(userIndex, 1); - alert(`User with ID ${userId} deleted.`); - await fetchData(); // Refresh the users after deleting - } - } - - async function redirectToMainMenu() { - await window.electronAPI.closeUcSocket(); - fadeOut('main_menu'); - } - - // Fetch data on page load - await fetchData(); -}); diff --git a/CEO/src/helpers/announcement_sender.ts b/CEO/src/helpers/announcement_sender.ts new file mode 100644 index 0000000..c1f1fd5 --- /dev/null +++ b/CEO/src/helpers/announcement_sender.ts @@ -0,0 +1,84 @@ +import { JsonManager } from './json_manager'; // Assuming this manages JSON configurations +import { TcpCommunicator } from "./tcp_communicator"; +import { operationCodes } from '../network/operation_codes'; // Assuming this holds operation codes +import { parentPort } from 'worker_threads'; +import {ParsedMessage} from "../network/message_handler"; + +export class AnnouncementSender { + private applicationInfo: JsonManager; + private readonly clientPort: number; + private message: string = ''; + private tcpCommunicator: TcpCommunicator | null = null; + + constructor(applicationInfoPath: string, clientPort: number) { + this.applicationInfo = new JsonManager(applicationInfoPath); + this.clientPort = clientPort; + } + + async start(message: string): Promise { + console.log('AnnouncementWorker started.'); + this.message = message; + try { + const activeUsersIp = await this.applicationInfo.readValue('users_ip'); + if (!activeUsersIp || !activeUsersIp.length) { + throw new Error('No active users found.'); + } + + for (const ip of activeUsersIp) { + const success = await this.sendAnnouncementToIp(ip); + if (!success) { + throw new Error(`Failed to send announcement to all users.`); + } + console.log(`Announcement sent and confirmed successfully from ${ip}`); + } + + parentPort?.postMessage({ success: true, message: 'Announcement sent to all active users successfully.' }); + } catch (error: any) { + console.error('Error in AnnouncementWorker:', error); + parentPort?.postMessage({ success: false, message: `A problem occurred: ${error.message}` }); + } + + console.log('AnnouncementWorker finished.'); + } + + private async sendAnnouncementToIp(ip: string): Promise { + this.tcpCommunicator = new TcpCommunicator(ip, this.clientPort); + if (!await this.tcpCommunicator.connect()) { + console.log(`Skipping user at IP ${ip} - unable to connect.`); + return true; + } + + // Prepare the message metadata + const metaInfo = { message: this.message }; + + // Send the announcement message + const messageSent = await this.tcpCommunicator.sendMessage(operationCodes.SEND_ANNOUNCEMENT, metaInfo); + if (!messageSent) { + await this.tcpCommunicator.disconnect(); + return false; + } + + // Await confirmation from the user + const response = await this.waitForResponse(); + if (response?.operationCode === operationCodes.OK) { + await this.tcpCommunicator.disconnect(); + return true; + } + + // If confirmation is not OK, disconnect and halt + await this.tcpCommunicator.disconnect(); + return false; + } + + private async waitForResponse(): Promise { + return new Promise((resolve) => { + const idResponseCheck = setInterval(async () => { + if (!this.tcpCommunicator) return null; + if (this.tcpCommunicator.hasResponseArrived()) { + clearInterval(idResponseCheck); + resolve(this.tcpCommunicator.getLastResult()); + } + }, 100); + }); + } +} diff --git a/CEO/src/helpers/backup_manager.ts b/CEO/src/helpers/backup_manager.ts index 38154dd..928f460 100644 --- a/CEO/src/helpers/backup_manager.ts +++ b/CEO/src/helpers/backup_manager.ts @@ -1,203 +1,181 @@ -import fs from 'fs'; -import path from 'path'; -import { FileEncryptor } from './file_encryptor'; // Assume the class is in this file -import { MemoryManager } from './memory_manager'; // Assume this handles memory-based storage -import { JsonManager } from './json_manager'; // Manages JSON-based configurations -import { TcpClient } from '../network/tcp/tcp_client' // Import your TcpClient class -import { operationCodes } from '../network/operation_codes'; +import { JsonManager } from './json_manager'; // Assuming this manages JSON configurations +import { TcpCommunicator } from "./tcp_communicator"; +import { operationCodes } from '../network/operation_codes'; // Assuming this holds operation codes import { parentPort } from 'worker_threads'; +import path from 'path'; +import fs from 'fs'; +import crypto from 'crypto'; +import { ParsedMessage } from "../network/message_handler"; -export class BackupManager { - private fileEncryptor: FileEncryptor | null = null; - private memoryManager: MemoryManager; - private applicationInfo: JsonManager; +export class BackupRetrievalWorker { private userConfig: JsonManager; + private applicationInfo: JsonManager; private readonly clientPort: number; + private readonly destinationPath: string; + private encryptionKey: Buffer | null = null; + private iv: Buffer | null = null; + private tcpCommunicator: TcpCommunicator | null = null; - constructor(userConfigPath: string, applicationInfoPath: string, memoryManagerPath: string, clientPort: number) { - this.applicationInfo = new JsonManager(applicationInfoPath); + constructor(userConfigPath: string, applicationInfoPath: string, clientPort: number, destinationPath: string) { this.userConfig = new JsonManager(userConfigPath); - this.memoryManager = new MemoryManager(memoryManagerPath); + this.applicationInfo = new JsonManager(applicationInfoPath); this.clientPort = clientPort; + this.destinationPath = destinationPath; } async start(): Promise { - setInterval(async () => { - await this.initialize(); // Re-run every minute - }, 60000); // 1 minute interval - } + try { + const userInfo = await this.userConfig.readValue('user_info'); + if (!userInfo || !userInfo.name) { + throw new Error('User information or name is missing.'); + } + const userName = userInfo.name; - // Initialize the backup process: fetch data from the app info and memory - private async initialize(): Promise { - // Initialize the encryption settings from UserConfig - const encryptionKeyData = await this.userConfig.readValue('encryption_key'); - if (!encryptionKeyData || !encryptionKeyData.key || !encryptionKeyData.iv) { - console.error('Encryption key data is missing in user configuration.'); - return; - } - - // Create a new FileEncryptor with the retrieved key and IV - this.fileEncryptor = new FileEncryptor(encryptionKeyData.key, encryptionKeyData.iv); - - // Get the name of the user - const userInfo = await this.userConfig.readValue('user_info'); - if (!userInfo || !userInfo.name) { - console.error('User information is missing in user configuration.'); - return; - } - - const userName = userInfo.name; - - // Get the backup directory information from ApplicationInfo - const backupDirectoryData = await this.applicationInfo.readValue('backupDirectory'); - if (!backupDirectoryData || !backupDirectoryData.id || !backupDirectoryData.path) { - console.error('Backup directory information is missing in application info.'); - return; - } - - const activeUsersIp = await this.applicationInfo.readValue('users_ip'); - if (!activeUsersIp || !activeUsersIp.length) { - console.error('No active users found.'); - return; - } - - const backupDirectoryId = backupDirectoryData.id; - const backupDirectoryPath = backupDirectoryData.path; - - // Get the file structure from MemoryManager - const directoryData = await this.memoryManager.retrieveMetaInformation(backupDirectoryId); - if (!directoryData || !directoryData.structure) { - console.error('Backup directory structure is missing in memory.'); - return; - } - - // Send files to the list of IPs - await this.sendFilesToUsers(directoryData.structure, userName, activeUsersIp, backupDirectoryPath); - } - - // Method to encrypt a file and return the base64 string - private encryptFile(filePath: string): string { - if (!this.fileEncryptor) { - return filePath; - } - - if (!fs.existsSync(filePath)) { - console.error(`File not found: ${filePath}`); - return ''; - } - - // Use FileEncryptor to encrypt the file and return the base64 string - return this.fileEncryptor.encryptFileToBase64(filePath); - } - - // Send files to the list of users and remove successfully sent files from the list - private async sendFilesToUsers(fileStructure: { [key: string]: string }, userName: string, usersIp: string[], backupDirectoryPath: string): Promise { - let unsentFiles = Object.keys(fileStructure); // Keep track of unsent files - - for (const fileName of unsentFiles) { - const filePath = fileStructure[fileName]; - const encryptedFileContent = this.encryptFile(filePath); - - if (!encryptedFileContent) { - console.error(`Failed to encrypt file: ${fileName}`); - continue; // Skip to the next file + const encryptionData = await this.userConfig.readValue('encryption_key'); + if (!encryptionData || !encryptionData.key || !encryptionData.iv) { + throw new Error('Encryption key or IV is missing.'); } - // Calculate relative file path - const relativeFilePath = path.relative(backupDirectoryPath, filePath); // Get the relative file path + this.encryptionKey = Buffer.from(encryptionData.key, 'base64'); + this.iv = Buffer.from(encryptionData.iv, 'base64'); - // Meta information to send - const metaInfo = { - userName, // Name of the user - relativeFilePath // Relative path to preserve the directory structure - }; + const activeUsersIp = await this.applicationInfo.readValue('users_ip'); + if (!activeUsersIp || !activeUsersIp.length) { + parentPort?.postMessage({ success: false, message: 'No active users found.' }); + return; + } - for (const ip of usersIp) { - const tcpClient = new TcpClient(this.clientPort); - tcpClient.openSocket(ip); - - // Wait for AES key and send the file - try { - const sendSuccess = await this.waitForAesKeyAndSendFile(tcpClient, operationCodes.BACKUP_FILE, metaInfo, Buffer.from(encryptedFileContent, 'base64')); - if (sendSuccess) { - console.log(`Successfully sent file: ${fileName} to ${ip}`); - unsentFiles = unsentFiles.filter(f => f !== fileName); // Remove the file from the unsent list - tcpClient.closeSocket(); - break; // Move to the next file after successful send - } - } catch (error) { - console.error(`Failed to send file: ${fileName} to ${ip}. Error: ${error}`); - tcpClient.closeSocket(); + let backupSuccessful = true; + for (const ip of activeUsersIp) { + const success = await this.processBackupForIp(ip, userName); + if (!success) { + backupSuccessful = false; + parentPort?.postMessage({ success: false, message: 'Backup could not be completed due to an internal error.' }); + break; } } + + if (backupSuccessful) { + parentPort?.postMessage({ success: true, message: 'Backup successful.' }); + } + } catch (error: any) { + console.error('Error in BackupRetrievalWorker:', error); + parentPort?.postMessage({ success: false, message: `Backup could not be completed due to an internal error: ${error.message}` }); + } + } + + private async processBackupForIp(ip: string, userName: string): Promise { + this.tcpCommunicator = new TcpCommunicator(ip, this.clientPort); + if (!await this.tcpCommunicator.connect()) { + console.error(`Failed to connect to ${ip}`); + return false; + } + + const backupExists = await this.checkIfBackupExists(userName); + if (!backupExists) { + console.log(`No backup found for user ${userName} on IP ${ip}`); + await this.tcpCommunicator.disconnect(); + return true; // Skip user if no backup found, do not mark as error + } + + const backupStructure = await this.requestBackupStructure(userName); + if (!backupStructure || Object.keys(backupStructure).length === 0) { + console.log(`No files found in backup structure for user ${userName} on IP ${ip}`); + await this.tcpCommunicator.disconnect(); + return true; // Skip user if no files found, do not mark as error + } + + for (const relativeFilePath of Object.keys(backupStructure)) { + const fileRequestSuccess = await this.requestBackupFile(userName, relativeFilePath); + if (!fileRequestSuccess) { + console.error(`Failed to retrieve file ${relativeFilePath} from backup for user ${userName} on IP ${ip}`); + await this.tcpCommunicator.disconnect(); + return false; // Stop if any file fails to be retrieved + } } - // If there are any unsent files, notify the parent process - if (unsentFiles.length > 0) { - parentPort?.postMessage({ success: false, message: 'Backup could not be completed for all files', unsentFiles }); - } else { - parentPort?.postMessage({ success: true, message: 'Backup completed successfully' }); + await this.tcpCommunicator.disconnect(); + return true; + } + + private async checkIfBackupExists(userName: string): Promise { + if (!this.tcpCommunicator) return false; + + const metaInfo = { name: userName }; + if (!await this.tcpCommunicator.sendMessage(operationCodes.IS_BACKUP_CREATED, metaInfo)) return false; + + const response = await this.waitForResponse(); + return response?.metaInfo?.backupExists === true; + } + + private async requestBackupStructure(userName: string): Promise { + if (!this.tcpCommunicator) return false; + + const metaInfo = { name: userName }; + if (!await this.tcpCommunicator.sendMessage(operationCodes.GET_BACKUP_STRUCTURE, metaInfo)) return null; + + const response = await this.waitForResponse(); + return response?.metaInfo?.structure || null; + } + + private async requestBackupFile(userName: string, relativeFilePath: string): Promise { + if (!this.tcpCommunicator) return false; + + const metaInfo = { name: userName, relativeFilePath }; + if (!await this.tcpCommunicator.sendMessage(operationCodes.REQ_FILE_FROM_BACKUP, metaInfo)) return false; + + const response = await this.waitForResponse(); + if (response?.operationCode === operationCodes.OK && response.metaInfo && response.fileContent) { + return this.saveFile(response.metaInfo.relativeFilePath, response.fileContent.toString('base64')); + } + return false; + } + + private saveFile(relativeFilePath: string, fileContent: string): boolean { + if (!this.encryptionKey || !this.iv) { + console.error('Encryption key or IV is not set.'); + return false; + } + + let encryptedBuffer: Buffer; + try { + encryptedBuffer = Buffer.from(fileContent, 'base64'); + } catch (error) { + console.error('Error decoding base64 file content:', error); + return false; + } + + let decryptedContent: Buffer; + try { + const decipher = crypto.createDecipheriv('aes-256-cbc', this.encryptionKey, this.iv); + decryptedContent = Buffer.concat([decipher.update(encryptedBuffer), decipher.final()]); + } catch (error) { + console.error('Error decrypting file:', error); + return false; + } + + const fullFilePath = path.join(this.destinationPath, relativeFilePath); + try { + const dirPath = path.dirname(fullFilePath); + if (!fs.existsSync(dirPath)) { + fs.mkdirSync(dirPath, { recursive: true }); + } + fs.writeFileSync(fullFilePath, decryptedContent); + console.log(`File saved successfully: ${fullFilePath}`); + return true; + } catch (error: any) { + console.error(`Error saving file ${relativeFilePath}: ${error.message}`); + return false; } } - // Wait for AES key to be set, send the file, and wait for the response - private async waitForAesKeyAndSendFile(tcpClient: TcpClient, operationCode: string, metaInfo: { [key: string]: any }, fileContent: Buffer, checkInterval: number = 500, timeout: number = 10000): Promise { - const startTime = Date.now(); - - return new Promise((resolve, reject) => { - const intervalId = setInterval(async () => { - const elapsedTime = Date.now() - startTime; - - // Check if AES key is set, if timeout occurs, reject - if (!tcpClient.isAesKeySet()) { - if (elapsedTime > timeout) { - clearInterval(intervalId); - console.error('Timeout waiting for AES key.'); - reject(new Error('Timeout waiting for AES key.')); - } - return; // Continue waiting for AES key - } - - // AES key is set, send the message - clearInterval(intervalId); - - try { - const success = await tcpClient.sendMessage(operationCode, metaInfo, fileContent); - if (!success) { - reject(new Error('Failed to send the file content.')); - return; - } - - // Wait for a response after sending the message - const responseReceived = await this.waitForMessageResponse(tcpClient, timeout); - if (!responseReceived) { - reject(new Error('Timeout waiting for the message response.')); - return; - } - - // Everything went fine - resolve(true); - } catch (error) { - reject(error); - } - }, checkInterval); // Check for AES key every `checkInterval` - }); - } - - // Method to wait for the response from the TCP client - private waitForMessageResponse(tcpClient: TcpClient, timeout: number = 10000): Promise { + private async waitForResponse(): Promise { return new Promise((resolve) => { - const startTime = Date.now(); - const intervalId = setInterval(() => { - const response = tcpClient.getLastResult(); - const elapsedTime = Date.now() - startTime; - - if (response) { - clearInterval(intervalId); - resolve(true); - } else if (elapsedTime > timeout) { - clearInterval(intervalId); - resolve(false); // No response after timeout + const idResponseCheck = setInterval(async () => { + if (!this.tcpCommunicator) return null; + if (this.tcpCommunicator.hasResponseArrived()) { + clearInterval(idResponseCheck); + resolve(this.tcpCommunicator.getLastResult()); } }, 100); }); diff --git a/CEO/src/helpers/backup_retrieval.ts b/CEO/src/helpers/backup_retrieval.ts index a21a122..c661e26 100644 --- a/CEO/src/helpers/backup_retrieval.ts +++ b/CEO/src/helpers/backup_retrieval.ts @@ -1,10 +1,11 @@ -import { JsonManager } from './json_manager'; // Assuming this manages JSON configurations -import { TcpClient } from '../network/tcp/tcp_client'; // Assuming this handles TCP client connections -import { operationCodes } from '../network/operation_codes'; // Assuming this holds operation codes +import { JsonManager } from './json_manager'; // Assuming this manages JSON configurations +import { TcpCommunicator } from "./tcp_communicator"; +import { operationCodes } from '../network/operation_codes'; // Assuming this holds operation codes import { parentPort } from 'worker_threads'; import path from 'path'; import fs from 'fs'; -import crypto from 'crypto'; // Import the crypto module for encryption and decryption +import crypto from 'crypto'; +import { ParsedMessage } from "../network/message_handler"; // Import the crypto module for encryption and decryption export class BackupRetrievalWorker { private userConfig: JsonManager; @@ -13,6 +14,7 @@ export class BackupRetrievalWorker { private readonly destinationPath: string; private encryptionKey: Buffer | null = null; private iv: Buffer | null = null; + private tcpCommunicator: TcpCommunicator | null = null; constructor(userConfigPath: string, applicationInfoPath: string, clientPort: number, destinationPath: string) { this.userConfig = new JsonManager(userConfigPath); @@ -22,203 +24,149 @@ export class BackupRetrievalWorker { } async start(): Promise { - // Retrieve the necessary data from userConfig and applicationInfo - const userInfo = await this.userConfig.readValue('user_info'); - if (!userInfo || !userInfo.name) { - console.error('User information or name is missing.'); - return; - } - const userName = userInfo.name; - - // Load encryption key and IV from userConfig - const encryptionData = await this.userConfig.readValue('encryption_key'); - if (!encryptionData || !encryptionData.key || !encryptionData.iv) { - console.error('Encryption key or IV is missing.'); - return; - } - - // Convert encryption key and IV from base64 to buffer - this.encryptionKey = Buffer.from(encryptionData.key, 'base64'); - this.iv = Buffer.from(encryptionData.iv, 'base64'); - - const activeUsersIp = await this.applicationInfo.readValue('users_ip'); - if (!activeUsersIp || !activeUsersIp.length) { - console.error('No active users found.'); - return; - } - - // Process each IP and request backup data - for (const ip of activeUsersIp) { - try { - const success = await this.processBackupForIp(ip, userName); - if (success) { - console.log(`Backup retrieved successfully from ${ip}`); - } else { - console.error(`Failed to retrieve backup from ${ip}`); - } - } catch (error) { - console.error(`Error processing backup from ${ip}: ${error}`); + try { + const userInfo = await this.userConfig.readValue('user_info'); + if (!userInfo || !userInfo.name) { + throw new Error('User information or name is missing.'); } - } + const userName = userInfo.name; - // Notify the parent that the worker is done - parentPort?.postMessage({ success: true, message: 'Backup retrieval completed.' }); + const encryptionData = await this.userConfig.readValue('encryption_key'); + if (!encryptionData || !encryptionData.key || !encryptionData.iv) { + throw new Error('Encryption key or IV is missing.'); + } + + this.encryptionKey = Buffer.from(encryptionData.key, 'base64'); + this.iv = Buffer.from(encryptionData.iv, 'base64'); + + const activeUsersIp = await this.applicationInfo.readValue('users_ip'); + if (!activeUsersIp || !activeUsersIp.length) { + throw new Error('No active users found.'); + } + + for (const ip of activeUsersIp) { + const success = await this.processBackupForIp(ip, userName); + if (!success) { + throw new Error(`Failed to retrieve backup from ${ip}`); + } + console.log(`Backup retrieved successfully from ${ip}`); + } + + parentPort?.postMessage({ success: true, message: 'Backup retrieval completed successfully.' }); + } catch (error: any) { + console.error('Error in BackupRetrievalWorker:', error); + parentPort?.postMessage({ success: false, message: `A problem occurred: ${error.message}` }); + } } private async processBackupForIp(ip: string, userName: string): Promise { - const tcpClient = new TcpClient(this.clientPort); - tcpClient.openSocket(ip); - - try { - // Wait for the AES key to be set before continuing - const aesSet = await this.waitForAesKey(tcpClient); - if (!aesSet) { - console.error(`Timeout waiting for AES key on IP ${ip}`); - return false; - } - - // Step 1: Check if a backup exists for the user on this IP - const backupExists = await this.checkIfBackupExists(tcpClient, userName); - if (!backupExists) { - console.log(`No backup found for user ${userName} on IP ${ip}`); - return false; - } - - // Step 2: Request the structure of the backup directory - const backupStructure = await this.requestBackupStructure(tcpClient, userName); - if (!backupStructure || Object.keys(backupStructure).length === 0) { - console.log(`No files found in backup structure for user ${userName} on IP ${ip}`); - return false; - } - - // Step 3: Request and retrieve each file from the backup - for (const relativeFilePath of Object.keys(backupStructure)) { - const fileRequestSuccess = await this.requestBackupFile(tcpClient, userName, relativeFilePath); - if (!fileRequestSuccess) { - console.error(`Failed to retrieve file ${relativeFilePath} from backup for user ${userName} on IP ${ip}`); - return false; // Stop if any file fails to be retrieved - } - } - - return true; // All files retrieved successfully - } catch (error) { - console.error(`Error during backup processing for IP ${ip}: ${error}`); - return false; - } finally { - tcpClient.closeSocket(); // Ensure socket is closed + this.tcpCommunicator = new TcpCommunicator(ip, this.clientPort); + if (!await this.tcpCommunicator.connect()) { + return true; } + + const backupExists = await this.checkIfBackupExists(userName); + if (!backupExists) { + console.log(`No backup found for user ${userName} on IP ${ip}`); + await this.tcpCommunicator.disconnect(); + return true; + } + + const backupStructure = await this.requestBackupStructure(userName); + if (!backupStructure || Object.keys(backupStructure).length === 0) { + console.log(`No files found in backup structure for user ${userName} on IP ${ip}`); + await this.tcpCommunicator.disconnect(); + return true; + } + + for (const relativeFilePath of Object.keys(backupStructure)) { + const fileRequestSuccess = await this.requestBackupFile(userName, relativeFilePath); + if (!fileRequestSuccess) { + await this.tcpCommunicator.disconnect(); + throw new Error(`Failed to retrieve file ${relativeFilePath} from backup for user ${userName} on IP ${ip}`); + } + } + + await this.tcpCommunicator.disconnect(); + return true; } - // Wait for AES key to be set - private async waitForAesKey(tcpClient: TcpClient, timeout: number = 10000): Promise { - const startTime = Date.now(); + private async checkIfBackupExists(userName: string): Promise { + if (!this.tcpCommunicator) return false; - return new Promise((resolve, reject) => { - const intervalId = setInterval(() => { - const elapsedTime = Date.now() - startTime; - - if (tcpClient.isAesKeySet()) { - clearInterval(intervalId); - resolve(true); // AES key is set, we can proceed - } else if (elapsedTime > timeout) { - clearInterval(intervalId); - resolve(false); // Timeout reached, AES key not set - } - }, 500); // Check every 500ms - }); - } - - // Wait for a message response with timeout - private async waitForMessageResponse(tcpClient: TcpClient, timeout: number = 10000): Promise { - const startTime = Date.now(); - - return new Promise((resolve) => { - const intervalId = setInterval(() => { - const elapsedTime = Date.now() - startTime; - const response = tcpClient.getLastResult(); - - if (response) { - clearInterval(intervalId); - resolve(response); // Return the response - } else if (elapsedTime > timeout) { - clearInterval(intervalId); - resolve(null); // Timeout, no response - } - }, 500); // Check every 500ms - }); - } - - // Check if the backup exists for the user on the remote IP - private async checkIfBackupExists(tcpClient: TcpClient, userName: string): Promise { const metaInfo = { name: userName }; - await tcpClient.sendMessage(operationCodes.IS_BACKUP_CREATED, metaInfo); + if (!await this.tcpCommunicator.sendMessage(operationCodes.IS_BACKUP_CREATED, metaInfo)) return false; - const response = await this.waitForMessageResponse(tcpClient); + const response = await this.waitForResponse(); return response?.metaInfo?.backupExists === true; } - // Request the backup structure from the remote IP - private async requestBackupStructure(tcpClient: TcpClient, userName: string): Promise { - const metaInfo = { name: userName }; - await tcpClient.sendMessage(operationCodes.GET_BACKUP_STRUCTURE, metaInfo); + private async requestBackupStructure(userName: string): Promise { + if (!this.tcpCommunicator) return false; - const response = await this.waitForMessageResponse(tcpClient); - return response?.metaInfo?.structure ? response.metaInfo.structure : null; + const metaInfo = { name: userName }; + if (!await this.tcpCommunicator.sendMessage(operationCodes.GET_BACKUP_STRUCTURE, metaInfo)) return null; + + const response = await this.waitForResponse(); + return response?.metaInfo?.structure || null; } - // Request a file from the backup and wait for it to be decrypted and stored - private async requestBackupFile(tcpClient: TcpClient, userName: string, relativeFilePath: string): Promise { - const metaInfo = { name: userName, relativeFilePath }; - await tcpClient.sendMessage(operationCodes.REQ_FILE_FROM_BACKUP, metaInfo); + private async requestBackupFile(userName: string, relativeFilePath: string): Promise { + if (!this.tcpCommunicator) return false; - const response = await this.waitForMessageResponse(tcpClient); + const metaInfo = { name: userName, relativeFilePath }; + if (!await this.tcpCommunicator.sendMessage(operationCodes.REQ_FILE_FROM_BACKUP, metaInfo)) return false; + + const response = await this.waitForResponse(); if (response?.operationCode === operationCodes.OK && response.metaInfo && response.fileContent) { - return this.saveFile(response.metaInfo.relativeFilePath, response.fileContent); + return this.saveFile(response.metaInfo.relativeFilePath, response.fileContent.toString('base64')); } return false; } - // Decrypt the file content using AES-256-CBC and save the decrypted file private saveFile(relativeFilePath: string, fileContent: string): boolean { if (!this.encryptionKey || !this.iv) { - console.error('Encryption key or IV is not set.'); - return false; + throw new Error('Encryption key or IV is not set.'); } - // Decode the base64-encoded file content into a buffer let encryptedBuffer: Buffer; try { encryptedBuffer = Buffer.from(fileContent, 'base64'); - } catch (error) { - console.error('Error decoding base64 file content:', error); - return false; + } catch (error: any) { + throw new Error(`Error decoding base64 file content: ${error.message}`); } - // Decrypt the file content let decryptedContent: Buffer; try { const decipher = crypto.createDecipheriv('aes-256-cbc', this.encryptionKey, this.iv); decryptedContent = Buffer.concat([decipher.update(encryptedBuffer), decipher.final()]); - } catch (error) { - console.error('Error decrypting file:', error); - return false; + } catch (error: any) { + throw new Error(`Error decrypting file: ${error.message}`); } - // Save the decrypted file content const fullFilePath = path.join(this.destinationPath, relativeFilePath); - try { const dirPath = path.dirname(fullFilePath); if (!fs.existsSync(dirPath)) { - fs.mkdirSync(dirPath, { recursive: true }); // Ensure directory exists + fs.mkdirSync(dirPath, { recursive: true }); } - fs.writeFileSync(fullFilePath, decryptedContent); console.log(`File saved successfully: ${fullFilePath}`); return true; } catch (error: any) { - console.error(`Error saving file ${relativeFilePath}: ${error.message}`); - return false; + throw new Error(`Error saving file ${relativeFilePath}: ${error.message}`); } } + + private async waitForResponse(): Promise { + return new Promise((resolve) => { + const idResponseCheck = setInterval(async () => { + if (!this.tcpCommunicator) return null; + if (this.tcpCommunicator.hasResponseArrived()) { + clearInterval(idResponseCheck); + resolve(this.tcpCommunicator.getLastResult()); + } + }, 100); + }); + } } diff --git a/CEO/src/helpers/department_sharer.ts b/CEO/src/helpers/department_sharer.ts index 766095f..7c11662 100644 --- a/CEO/src/helpers/department_sharer.ts +++ b/CEO/src/helpers/department_sharer.ts @@ -1,9 +1,10 @@ import fs from 'fs'; import path from 'path'; -import { TcpClient } from '../network/tcp/tcp_client'; // Assuming this class exists +import { TcpCommunicator } from './tcp_communicator'; // Using TcpCommunicator instead of TcpClient import { operationCodes } from '../network/operation_codes'; import { JsonManager } from './json_manager'; // Manages JSON configurations import { MemoryManager } from './memory_manager'; // Manages in-memory data structures +import { ParsedMessage } from "../network/message_handler"; export class DepartmentSharer { private userConfig: JsonManager; @@ -11,6 +12,8 @@ export class DepartmentSharer { private memoryManager: MemoryManager; // To read the department files private departmentDirectory: string | null; private readonly clientPort: number; + private isBusy: boolean = false; // Busy flag to prevent simultaneous sharing + private tcpCommunicator: TcpCommunicator | null = null; // For each user connection constructor( userConfigPath: string, @@ -20,7 +23,7 @@ export class DepartmentSharer { ) { this.userConfig = new JsonManager(userConfigPath); this.applicationInfo = new JsonManager(applicationInfoPath); - this.memoryManager = new MemoryManager(memoryManagerPath); // To retrieve files + this.memoryManager = new MemoryManager(memoryManagerPath); this.clientPort = clientPort; this.departmentDirectory = null; } @@ -28,7 +31,11 @@ export class DepartmentSharer { // Start sharing files with the department every minute async start(): Promise { setInterval(async () => { - await this.shareFilesWithDepartment(); // Retry every minute + if (!this.isBusy) { + this.isBusy = true; + await this.shareFilesWithDepartment(); + this.isBusy = false; + } }, 10000); // 10-second interval for testing } @@ -61,7 +68,6 @@ export class DepartmentSharer { // Filter users who belong to the same department const departmentUsers = activeUsers.filter((user: any) => user.user_info.departmentId === departmentId); - if (departmentUsers.length === 0) { console.log('No users found in the same department.'); return; @@ -83,15 +89,41 @@ export class DepartmentSharer { return; } - // Send each file to every department user - await this.shareFilesWithUsers(departmentUsers, departmentFiles.structure, userName); + // Iterate over all department users and perform the operations + for (const user of departmentUsers) { + const userIp = user.ip; + this.tcpCommunicator = new TcpCommunicator(userIp, this.clientPort); - // After sending all files, clear the department directory - await this.clearDepartmentDirectory(departmentUsers); + if(await this.tcpCommunicator.connect()) continue; + + // First clear the department directory + const clearSuccess = await this.clearDepartmentDirectory(); + if (clearSuccess) { + await this.sendFilesToUser(departmentFiles.structure, userName); + } + + await this.tcpCommunicator.disconnect(); + } } - // Send the files to the users in the department - private async shareFilesWithUsers(users: any[], files: { [key: string]: string }, userName: string): Promise { + // Clear the department directory for a user + private async clearDepartmentDirectory(): Promise { + if(!this.tcpCommunicator) return false; + + if (!await this.tcpCommunicator.sendMessage(operationCodes.CLEAR_DEPARTMENT)) return false; + const response = await this.waitForResponse(); + + if (!response || response.operationCode !== operationCodes.OK){ + console.error('Failed to clear the department directory.'); + return false; + } + + return true; + } + + // Send the files to a user in the department + private async sendFilesToUser(files: { [key: string]: string }, userName: string): Promise { + if(!this.tcpCommunicator) return; const unsentFiles = Object.keys(files); // Keep track of unsent files for (const fileName of unsentFiles) { @@ -116,163 +148,29 @@ export class DepartmentSharer { relativeFilePath // Use the relative path to preserve directory structure }; - // Send the file to each user in the same department - for (const user of users) { - const userIp = user.ip; - const tcpClient = new TcpClient(this.clientPort); + // Send the file + if (!await this.tcpCommunicator.sendMessage(operationCodes.DEPARTMENT_FILE, metaInfo, Buffer.from(fileContent))) return; - // Open a connection to the user's IP - tcpClient.openSocket(userIp); - - try { - // Wait for the AES key and send the file - const success = await this.waitForAesKeyAndSendFile(tcpClient, operationCodes.DEPARTMENT_FILE, metaInfo, fileContent); - if (success) { - console.log(`File successfully sent: ${fileName} to user ${userIp}`); - unsentFiles.splice(unsentFiles.indexOf(fileName), 1); // Remove successfully sent file - tcpClient.closeSocket(); // Close the connection after sending - break; // Move to the next file after a successful send - } - } catch (error) { - console.error(`Failed to send file: ${fileName} to IP: ${userIp}. Error: ${error}`); - tcpClient.closeSocket(); // Ensure socket is closed on error - } + const response = await this.waitForResponse(); + if (!response || response.operationCode !== operationCodes.OK) { + console.error(`Failed to send file: ${fileName}`); + return; } - } - if (unsentFiles.length > 0) { - console.log('Some files could not be sent, retrying later.'); - } else { - console.log('All files shared successfully.'); + unsentFiles.splice(unsentFiles.indexOf(fileName), 1); + await this.tcpCommunicator.disconnect(); } } - // Clear the department directory for all users after sharing - private async clearDepartmentDirectory(users: any[]): Promise { - for (const user of users) { - const userIp = user.ip; - const tcpClient = new TcpClient(this.clientPort); - - // Open a connection to the user's IP - tcpClient.openSocket(userIp); - - try { - const success = await this.waitForAesKeyAndSendClearDepartment(tcpClient, operationCodes.CLEAR_DEPARTMENT); - if (success) { - console.log(`Department directory cleared successfully for user ${userIp}`); - } else { - console.error(`Failed to clear department directory for user ${userIp}`); - } - } catch (error) { - console.error(`Error clearing department directory for user ${userIp}:`, error); - } finally { - tcpClient.closeSocket(); // Ensure the socket is closed - } - } - } - - // Wait for AES key to be set, send the file, and wait for the response - private async waitForAesKeyAndSendFile(tcpClient: TcpClient, operationCode: string, metaInfo: { [key: string]: any }, fileContent: Buffer, checkInterval: number = 500, timeout: number = 10000): Promise { - const startTime = Date.now(); - - return new Promise((resolve, reject) => { - const intervalId = setInterval(async () => { - const elapsedTime = Date.now() - startTime; - - // Check if AES key is set, if timeout occurs, reject - if (!tcpClient.isAesKeySet()) { - if (elapsedTime > timeout) { - clearInterval(intervalId); - console.error('Timeout waiting for AES key.'); - reject(new Error('Timeout waiting for AES key.')); - } - return; // Continue waiting for AES key - } - - // AES key is set, send the file - clearInterval(intervalId); - - try { - const success = await tcpClient.sendMessage(operationCode, metaInfo, fileContent); - if (!success) { - reject(new Error('Failed to send the file content.')); - return; - } - - // Wait for a response after sending the message - const responseReceived = await this.waitForMessageResponse(tcpClient, timeout); - if (!responseReceived) { - reject(new Error('Timeout waiting for the message response.')); - return; - } - - resolve(true); // Everything went fine - } catch (error) { - reject(error); - } - }, checkInterval); // Check for AES key every `checkInterval` - }); - } - - // Wait for AES key to be set, send the clear department message, and wait for the response - private async waitForAesKeyAndSendClearDepartment(tcpClient: TcpClient, operationCode: string, checkInterval: number = 500, timeout: number = 10000): Promise { - const startTime = Date.now(); - - return new Promise((resolve, reject) => { - const intervalId = setInterval(async () => { - const elapsedTime = Date.now() - startTime; - - // Check if AES key is set, if timeout occurs, reject - if (!tcpClient.isAesKeySet()) { - if (elapsedTime > timeout) { - clearInterval(intervalId); - console.error('Timeout waiting for AES key.'); - reject(new Error('Timeout waiting for AES key.')); - } - return; // Continue waiting for AES key - } - - // AES key is set, send the clear department message - clearInterval(intervalId); - - try { - const success = await tcpClient.sendMessage(operationCode, {}); - if (!success) { - reject(new Error('Failed to send the clear department operation.')); - return; - } - - // Wait for a response after sending the message - const responseReceived = await this.waitForMessageResponse(tcpClient, timeout); - if (!responseReceived) { - reject(new Error('Timeout waiting for the message response.')); - return; - } - - resolve(true); // Everything went fine - } catch (error) { - reject(error); - } - }, checkInterval); // Check for AES key every `checkInterval` - }); - } - - // Wait for the response from the TCP client - private waitForMessageResponse(tcpClient: TcpClient, timeout: number = 10000): Promise { + private async waitForResponse(): Promise { return new Promise((resolve) => { - const startTime = Date.now(); - const intervalId = setInterval(() => { - const response = tcpClient.getLastResult(); - const elapsedTime = Date.now() - startTime; - - if (response?.operationCode === operationCodes.OK) { - clearInterval(intervalId); - resolve(true); // Message successfully received - } else if (elapsedTime > timeout) { - clearInterval(intervalId); - resolve(false); // No response after timeout + const idResponseCheck = setInterval(async () => { + if (!this.tcpCommunicator) return null; + if (this.tcpCommunicator.hasResponseArrived()) { + clearInterval(idResponseCheck); + resolve(this.tcpCommunicator.getLastResult()); // Resolve the response or null if not available } - }, 100); // Check every 100ms + }, 100); // Check every 100 milliseconds if the response has arrived }); } } diff --git a/CEO/src/helpers/file_sharer.ts b/CEO/src/helpers/file_sharer.ts index b6a6d7e..435e021 100644 --- a/CEO/src/helpers/file_sharer.ts +++ b/CEO/src/helpers/file_sharer.ts @@ -1,9 +1,10 @@ -import { QueueManager } from './queue_manager'; // Assume the QueueManager is in this path -import { TcpClient } from '../network/tcp/tcp_client'; // Import your TcpClient class -import { operationCodes } from '../network/operation_codes'; +import {QueueManager} from './queue_manager'; +import {TcpCommunicator} from "./tcp_communicator"; // Updated to use TcpCommunicator +import {operationCodes} from '../network/operation_codes'; import fs from "fs"; import path from "path"; import {compareFnFileItemTask, FileItemTask} from "../interfaces/file_item_task"; +import {ParsedMessage} from "../network/message_handler"; interface FileSendTask { ip: string; @@ -14,45 +15,56 @@ interface FileSendTask { export class FileSharer { private queueManager: QueueManager; private readonly clientPort: number; + private isBusy: boolean; + private tcpCommunicator: TcpCommunicator | null = null; constructor(queueFilePath: string, clientPort: number) { - - this.queueManager = new QueueManager(queueFilePath, compareFnFileItemTask); this.clientPort = clientPort; + this.isBusy = false; // Initialize the busy flag } // Start processing the file queue async start(): Promise { setInterval(async () => { - await this.processQueue(); // Process the queue at regular intervals + if (!this.isBusy) { // Check if the queue is already being processed + await this.processQueue(); // Process the queue at regular intervals + } }, 10000); // 10 seconds interval } // Method to process the queue private async processQueue(): Promise { + if (this.isBusy) { + console.log("Queue is already being processed. Skipping this interval."); + return; + } + + this.isBusy = true; // Set busy flag to true before starting + while (!this.queueManager.isEmpty()) { const task = this.queueManager.peek(); if (task) { + console.log(task); const success = await this.sendFile(task); if (!success) { console.error(`Failed to send file: ${task.path} to IP: ${task.ip}. Re-adding to queue.`); this.queueManager.dequeue(); this.queueManager.enqueue(task); // Re-add to queue if failed - } - else{ + } else { console.log(`File sent successfully: ${task.path} to IP: ${task.ip}.`); this.queueManager.dequeue(); } } } + this.isBusy = false; // Reset busy flag after the queue is processed } - // Method to send the file to a specific IP using the TcpClient + // Method to send the file to a specific IP using TcpCommunicator private async sendFile(task: FileSendTask): Promise { - const { ip, path: filePath, userName } = task; + const {ip, path: filePath, userName} = task; // Ensure the file exists before attempting to send if (!fs.existsSync(filePath)) { @@ -63,7 +75,7 @@ export class FileSharer { // Read the file contents const fileContent = fs.readFileSync(filePath); - // Extract the file name from the file path using path.basename (handles both Windows and Unix) + // Extract the file name from the file path using path.basename const fileName = path.basename(filePath); const metaInfo = { @@ -71,82 +83,36 @@ export class FileSharer { relativeFilePath: fileName, // Use the file name instead of the full path }; - const tcpClient = new TcpClient(this.clientPort); - tcpClient.openSocket(ip); + this.tcpCommunicator = new TcpCommunicator(ip, this.clientPort); - // Wait for the AES key and then send the file - try { - const sendSuccess = await this.waitForAesKeyAndSendFile(tcpClient, operationCodes.SHARE_FILE, metaInfo, fileContent, task); - tcpClient.closeSocket(); - - return sendSuccess; - } catch (error) { - console.error(`Error sending file: ${filePath} to IP: ${ip}. Error: ${error}`); - tcpClient.closeSocket(); + if (!await this.tcpCommunicator.connect()) { + console.error(`Failed to connect to IP: ${ip}`); return false; } + + console.log(`Sending file: ${filePath} to IP: ${ip}`); + + if (!await this.tcpCommunicator.sendMessage(operationCodes.SHARE_FILE, metaInfo, fileContent)) return false; + + const response = await this.waitForResponse(); + if (!response || response.operationCode !== operationCodes.OK) { + console.error(`Failed to send file: ${filePath} to IP: ${ip}`); + return false; + } + + await this.tcpCommunicator.disconnect(); + return true; } - // Wait for AES key to be set and send the file, handling the response - private async waitForAesKeyAndSendFile(tcpClient: TcpClient, operationCode: string, metaInfo: { [key: string]: any }, fileContent: Buffer, task: FileSendTask, checkInterval: number = 500, timeout: number = 10000): Promise { - const startTime = Date.now(); - - return new Promise((resolve, reject) => { - const intervalId = setInterval(async () => { - const elapsedTime = Date.now() - startTime; - - // Check if AES key is set, if timeout occurs, reject - if (!tcpClient.isAesKeySet()) { - if (elapsedTime > timeout) { - clearInterval(intervalId); - console.error('Timeout waiting for AES key.'); - - reject(new Error('Timeout waiting for AES key.')); - } - return; // Continue waiting for AES key - } - - // AES key is set, send the message - clearInterval(intervalId); - - try { - const success = await tcpClient.sendMessage(operationCode, metaInfo, fileContent); - if (!success) { - reject(new Error('Failed to send the file content.')); - return; - } - - // Wait for a response after sending the message - const responseReceived = await this.waitForMessageResponse(tcpClient, timeout); - if (!responseReceived) { - reject(new Error('Timeout waiting for the message response.')); - return; - } - - resolve(true); // Everything went fine - } catch (error) { - reject(error); - } - }, checkInterval); // Check for AES key every `checkInterval` - }); - } - - // Method to wait for the response from the TCP client - private waitForMessageResponse(tcpClient: TcpClient, timeout: number = 10000): Promise { + private async waitForResponse(): Promise { return new Promise((resolve) => { - const startTime = Date.now(); - const intervalId = setInterval(() => { - const response = tcpClient.getLastResult(); - const elapsedTime = Date.now() - startTime; - - if (response?.operationCode === operationCodes.OK) { - clearInterval(intervalId); - resolve(true); // Message successfully received - } else if (elapsedTime > timeout) { - clearInterval(intervalId); - resolve(false); // No response after timeout + const idResponseCheck = setInterval(async () => { + if (!this.tcpCommunicator) return null; + if (this.tcpCommunicator.hasResponseArrived()) { + clearInterval(idResponseCheck); + resolve(this.tcpCommunicator.getLastResult()); // Resolve the response or null if not available } - }, 100); // Check every 100ms + }, 100); // Check every 100 milliseconds if the response has arrived }); } } diff --git a/CEO/src/helpers/task_scheduler.ts b/CEO/src/helpers/task_scheduler.ts deleted file mode 100644 index e250c1d..0000000 --- a/CEO/src/helpers/task_scheduler.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { JsonManager } from './json_manager'; // Assuming you have this class for managing user/memory -import { WindowManager } from './window_manager'; // For managing app navigation -import { UdpClient } from '../network/udp/udp_client'; - -export class TaskScheduler { - private applicationInfo: JsonManager; - private windowManager: WindowManager; - private appStarted: boolean = false; - private intervalIds: NodeJS.Timeout[] = []; // Array to store interval IDs - - constructor(applicationInfo: JsonManager, windowManager: WindowManager) { - this.applicationInfo = applicationInfo; - this.windowManager = windowManager; - } - - // Function to schedule the UC check task with dynamic UDP client creation - public startUCCheck(udpPort: number, okPage: string, errorPage: string, interval: number = 30000) { - const intervalId = setInterval(async () => { - try { - const udpClient = new UdpClient(udpPort); // Create UdpClient with the provided port - const aliveClients = await udpClient.getAliveClients(); - const storedIp = await this.applicationInfo.readValue('serverIp'); - const foundClient = aliveClients.length > 0; - - if (foundClient) { - const ipAddress = aliveClients[0]; // Just using the first alive client - - if (!storedIp || storedIp !== ipAddress) { - await this.applicationInfo.writeValue('serverIp', ipAddress); - if (!this.appStarted) { - await this.windowManager.changeContent(okPage); - } - this.appStarted = true; - } else if (!this.appStarted) { - await this.windowManager.changeContent(okPage); - this.appStarted = true; - } - } else { - await this.windowManager.changeContent(errorPage); - } - } catch (err) { - console.error('Error checking UC:', err); - await this.windowManager.changeContent(errorPage); - } - }, interval); - - this.intervalIds.push(intervalId); - } - - // Function to schedule the IP lookup task, storing the active addresses in memory - public async startUserIPLookup(udpPort: number, interval: number = 30000) { - const serverIp = await this.applicationInfo.readValue('serverIp'); // Ensure it's awaited if it's an async function - const intervalId = setInterval(async () => { - try { - const udpClient = new UdpClient(udpPort); // Create a UDP client with the provided port - const activeIPs = await udpClient.getAliveClients(); // Get the list of active IPs - - // Filter out the serverIp from the list of active clients - const filteredIPs = activeIPs.filter(ip => ip !== serverIp); - - // Save the filtered IPs to 'users_ip' - await this.applicationInfo.writeValue('users_ip', filteredIPs); - } catch (err) { - console.error('Error during user IP lookup:', err); - } - }, interval); - - this.intervalIds.push(intervalId); // Store the interval ID - } - - // Function to stop all tasks (UC check, user worker, etc.) - public stopAllTasks() { - this.intervalIds.forEach(clearInterval); // Clear all intervals - this.intervalIds = []; // Reset the array - } -} diff --git a/CEO/src/helpers/users_info_fetcher.ts b/CEO/src/helpers/users_info_fetcher.ts index a4827f3..d584152 100644 --- a/CEO/src/helpers/users_info_fetcher.ts +++ b/CEO/src/helpers/users_info_fetcher.ts @@ -2,6 +2,7 @@ import { JsonManager } from "./json_manager"; import { MemoryManager } from "./memory_manager"; import { operationCodes } from "../network/operation_codes"; import { TcpCommunicator } from "./tcp_communicator"; +import {ParsedMessage} from "../network/message_handler"; export class UsersInfoFetcher { private applicationInfo: JsonManager; @@ -24,7 +25,7 @@ export class UsersInfoFetcher { async start(): Promise { setInterval(async () => { await this.initialize(); // Re-run every minute - }, 60000); // 1 minute interval + }, 5000); // 1 minute interval } // Initialize and fetch user IPs and process users info @@ -57,16 +58,19 @@ export class UsersInfoFetcher { continue; } + if(!await this.tcpCommunicator?.sendMessage(operationCodes.GET_USER_INFORMATION)){ + await this.tcpCommunicator.disconnect(); + continue + } + // Wait for the response for 10 seconds const response = await this.waitForResponse(); - console.log(response); // If a response is received and is successful, append it to usersInfo if (response && response.metaInfo) { - console.log(`Response received from ${ip}:`, response); usersInfo.push({ ip: ip, - user_info: response.metaInfo // Push the IP and user_info object into the array + user_info: response.metaInfo }); } @@ -76,31 +80,15 @@ export class UsersInfoFetcher { await this.updateActiveUsers(usersInfo); // Update active users information in the memory } - // Send the message once and wait for the response for a specific timeout - private async waitForResponse(timeout: number = 10000): Promise { - // Send the message once - const status = await this.tcpCommunicator?.sendMessage(operationCodes.GET_USER_INFORMATION); - if (!status) { - return null; - } - - // Wait for the response until the timeout + private async waitForResponse(): Promise { return new Promise((resolve) => { - const startTime = Date.now(); - - const checkResponseInterval = setInterval(async () => { - // Check if the message has been received - if (this.tcpCommunicator?.hasResponseArrived()) { - clearInterval(checkResponseInterval); - resolve(this.tcpCommunicator?.getLastResult()); // Return the response once it arrives + const idResponseCheck = setInterval(async () => { + if (!this.tcpCommunicator) return null; + if (this.tcpCommunicator.hasResponseArrived()) { + clearInterval(idResponseCheck); + resolve(this.tcpCommunicator.getLastResult()); // Resolve the response or null if not available } - - // If the timeout is reached, stop checking and resolve with null - if (Date.now() - startTime > timeout) { - clearInterval(checkResponseInterval); - resolve(null); - } - }, 100); // Check every 100ms if the response has arrived + }, 100); // Check every 100 milliseconds if the response has arrived }); } diff --git a/CEO/src/helpers/worker_manager.ts b/CEO/src/helpers/worker_manager.ts index 40950b2..976136c 100644 --- a/CEO/src/helpers/worker_manager.ts +++ b/CEO/src/helpers/worker_manager.ts @@ -13,10 +13,40 @@ export class WorkerManager { this.workers = []; // Initialize the array to store workers } - // Start the Connection Pool Worker - async startWatchersWorker(memoryManagerPath: string, applicationInfoPath: string): Promise { + async startNetworkScannerWorker(udpPort: number, okPage: string, errorPage: string, applicationInfoPath: string): Promise { return new Promise((resolve, reject) => { - const worker = new Worker(path.join(this.pathToWorkerDir, 'watcher_worker.js'), { + const worker = new Worker(path.join(this.pathToWorkerDir, 'network_scanner_worker.js'), { + workerData: { udpPort, okPage, errorPage, applicationInfoPath }, // Pass necessary data to the worker + }); + + this.workers.push(worker); // Store the worker reference + + worker.on('message', (data) => { + console.log(data); + if (data.type === 'changeContent') { + this.windowManager.changeContent(data.page); + } + }); + + worker.on('error', (err) => { + console.error('Network Scanner Worker error:', err); + worker.terminate(); + this.removeWorker(worker); + reject(err); // Reject the promise if there's an error + }); + + worker.on('exit', (code) => { + console.log(`Network Scanner Worker exited with code ${code}`); + this.removeWorker(worker); // Remove worker reference when it exits + resolve(); // Resolve when the worker exits cleanly + }); + }); + } + + // Start the Connection Pool Worker + async startDirectoriesWatchersWorker(memoryManagerPath: string, applicationInfoPath: string): Promise { + return new Promise((resolve, reject) => { + const worker = new Worker(path.join(this.pathToWorkerDir, 'directories_watcher_worker.js'), { workerData: { memoryManagerPath, applicationInfoPath }, // Pass the port to the worker }); @@ -110,17 +140,18 @@ export class WorkerManager { clientPort: number, destinationPath: string ): Promise { - return new Promise((resolve, reject) => { + return new Promise(async (resolve, reject) => { const worker = new Worker(path.join(this.pathToWorkerDir, 'backup_retrieval_worker.js'), { workerData: { userConfigPath, applicationInfoPath, clientPort, destinationPath }, // Pass parameters to the worker }); this.workers.push(worker); // Store the worker reference - worker.on('message', (data) => { + worker.on('message', async (data) => { console.log('Backup Retrieval Worker message:', data); - this.windowManager.changeContent('main_menu'); - this.windowManager.showAlert(data.message); + await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait for 1 second + await this.windowManager.changeContent('main_menu'); + await this.windowManager.showAlert(data.message); }); worker.on('error', (err) => { @@ -138,6 +169,36 @@ export class WorkerManager { }); } + // Method to start the Announcement Worker + async startAnnouncementWorker(applicationInfoPath: string, clientPort: number, message: string): Promise { + return new Promise((resolve, reject) => { + const worker = new Worker(path.join(this.pathToWorkerDir, 'send_announcement_worker.js'), { + workerData: { applicationInfoPath, clientPort, message }, // Pass necessary data to the worker + }); + + this.workers.push(worker); // Store the worker reference + + worker.on('message', async (data) => { + await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait for 1 second + this.windowManager.changeContent('main_menu'); + this.windowManager.showAlert(`${data.message}`) + }); + + worker.on('error', (err) => { + console.error('Announcement Worker error:', err); + worker.terminate(); + this.removeWorker(worker); + reject(err); // Reject the promise if there's an error + }); + + worker.on('exit', (code) => { + console.log(`Announcement Worker exited with code ${code}`); + this.removeWorker(worker); // Remove worker reference when it exits + resolve(); // Resolve when the worker exits cleanly + }); + }); + } + // Close all running workers closeAllWorkers(): void { console.log('Terminating all running workers...'); diff --git a/CEO/src/main/main.ts b/CEO/src/main/main.ts index 4184506..01b4f2a 100644 --- a/CEO/src/main/main.ts +++ b/CEO/src/main/main.ts @@ -7,20 +7,20 @@ import {WorkerManager} from "../helpers/worker_manager"; import {DirectoryWatcher} from "../helpers/directory_watcher"; import {QueueManager} from "../helpers/queue_manager"; import {compareFnFileItemTask, FileItemTask} from "../interfaces/file_item_task"; -import {TaskScheduler} from "../helpers/task_scheduler"; import {WindowManager} from "../helpers/window_manager"; import {JsonManager} from "../helpers/json_manager"; import {MemoryManager} from "../helpers/memory_manager"; import {TcpCommunicator} from "../helpers/tcp_communicator"; import {operationCodes} from "../network/operation_codes"; +import os from "os"; // Load environment variables dotenv.config({ path: path.join(__dirname, '..', '..', '.env') }); const UDP_PORT = process.env.UDP_PORT ? parseInt(process.env.UDP_PORT) : 41233; const TCP_PORT = process.env.TCP_PORT ? parseInt(process.env.TCP_PORT) : 41234; -const HOST = process.env.HOST || '0.0.0.0'; +const HOST = getLocalIp(); let mainWindow: BrowserWindow | null = null; let windowManager: WindowManager | null = null; @@ -29,7 +29,6 @@ let userConfig: JsonManager | null = null; let applicationInfo: JsonManager | null = null; let memoryManager: MemoryManager | null = null; let workerManager: WorkerManager | null = null; -let taskScheduler: TaskScheduler | null = null; let backupDirectoryManager: DirectoryWatcher | null = null; let departmentShareManager: DirectoryWatcher | null = null; let sendFileQueue: QueueManager | null = null; @@ -62,11 +61,6 @@ async function cleanupAndExit() { departmentShareManager.closeWatcher(); // Add this method to DirectoryWatcher to close the watcher } - if(taskScheduler){ - console.log('Stopping all tasks...'); - taskScheduler.stopAllTasks() - } - if(workerManager){ console.log('Terminating all workers...'); workerManager.closeAllWorkers() @@ -86,6 +80,21 @@ async function ensureDirectoryExists(dirPath: string): Promise { } } +function getLocalIp() { + const interfaces = os.networkInterfaces(); + for (let interfaceName in interfaces) { + const addresses = interfaces[interfaceName]; + if(!addresses) continue; + for (let address of addresses) { + // Filter for IPv4 and ignore internal (127.0.0.1) addresses + if (address.family === 'IPv4' && !address.internal) { + return address.address; + } + } + } + return ''; // Fallback if no IP is found +} + app.whenReady().then(async () => { const title = 'Application'; const mainScreen = require('electron').screen.getPrimaryDisplay(); @@ -103,6 +112,8 @@ app.whenReady().then(async () => { }, }); + mainWindow.removeMenu(); + await ensureDirectoryExists(pathToJsons); await ensureDirectoryExists(pathToClientsBackups); @@ -112,14 +123,16 @@ app.whenReady().then(async () => { memoryManager = new MemoryManager(path.join(pathToJsons, 'memory.json')); sendFileQueue = new QueueManager(path.join(pathToJsons, 'sendFileTasks.json'), compareFnFileItemTask); - taskScheduler = new TaskScheduler(applicationInfo, windowManager); workerManager = new WorkerManager(pathToWorkerDir, windowManager); await userConfig.writeValue('app_type', 'ceo'); await applicationInfo.writeValue('users_ip', []); + await applicationInfo.writeValue('serverIp', ''); + await applicationInfo.writeValue('announcement', ''); await memoryManager.resetFile(); - workerManager.startWatchersWorker(path.join(pathToJsons, 'memory.json'), path.join(pathToJsons, 'application.json')); + workerManager.startNetworkScannerWorker(UDP_PORT, 'login', 'uc_not_found', path.join(pathToJsons, 'application.json')); + workerManager.startDirectoriesWatchersWorker(path.join(pathToJsons, 'memory.json'), path.join(pathToJsons, 'application.json')); workerManager.startServersWorker(HOST, UDP_PORT, TCP_PORT); workerManager.startResourceCoordinatorWorker( path.join(pathToJsons, 'userConfig.json'), @@ -129,10 +142,6 @@ app.whenReady().then(async () => { TCP_PORT ); - - taskScheduler.startUCCheck(UDP_PORT, 'login', 'uc_not_found'); - taskScheduler.startUserIPLookup(UDP_PORT); - registerIPCHandlers(); await windowManager.changeContent('welcome'); @@ -156,6 +165,43 @@ app.on('before-quit', async () => { // Register IPC handlers function registerIPCHandlers() { + // ResetApplicationPreferences IPC Handlers + ipcMain.handle('reset-application-preferences', async () => { + if(applicationInfo) { + const serverIp = await applicationInfo.readValue('serverIp'); + await applicationInfo.resetFile(); + await applicationInfo.writeValue('serverIp', serverIp); + } + + if(userConfig) { + await userConfig.resetFile(); + await userConfig.writeValue('app_type', 'ceo'); + } + + if(memoryManager) { + await memoryManager.resetFile(); + } + + if(sendFileQueue) { + sendFileQueue.clearQueue(); + } + + if(workerManager) { + workerManager.closeAllWorkers(); + await new Promise(resolve => setTimeout(resolve, 3000)); + workerManager.startNetworkScannerWorker(UDP_PORT, 'login', 'uc_not_found', path.join(pathToJsons, 'application.json')); + workerManager.startDirectoriesWatchersWorker(path.join(pathToJsons, 'memory.json'), path.join(pathToJsons, 'application.json')); + workerManager.startServersWorker(HOST, UDP_PORT, TCP_PORT); + workerManager.startResourceCoordinatorWorker( + path.join(pathToJsons, 'userConfig.json'), + path.join(pathToJsons, 'application.json'), + path.join(pathToJsons, 'memory.json'), + path.join(pathToJsons, 'sendFileTasks.json'), + TCP_PORT + ); + } + }); + // Window Manager IPC Handlers ipcMain.handle('show-alert', async (event: IpcMainInvokeEvent, message: string) => { if (!windowManager) throw new Error('WindowManager is not initialized.'); @@ -251,7 +297,11 @@ function registerIPCHandlers() { ipcMain.handle('reset-application-json-files', async () => { if (!applicationInfo) throw new Error('ApplicationInfo is not initialized.'); - return applicationInfo.resetFile(); + const serverIp = await applicationInfo.readValue('serverIp'); + await applicationInfo.resetFile(); + if(serverIp) { + await applicationInfo.writeValue('serverIp', serverIp); + } }); ipcMain.handle('remove-application-json-files-key', async (_event: IpcMainInvokeEvent, key: string) => { @@ -280,13 +330,18 @@ function registerIPCHandlers() { return memoryManager.removeMetaInformation(id); }); + ipcMain.handle('memory-reset', async () => { + if (!memoryManager) throw new Error('MemoryManager is not initialized.'); + return memoryManager.resetFile(); + }); + // Queue IPC Handlers ipcMain.handle('add-task-to-send-file-queue', async (event: IpcMainInvokeEvent, task: FileItemTask) => { if (!sendFileQueue) throw new Error('SendFileQueue is not initialized.'); sendFileQueue.enqueue(task); }); - // BackupRetrievalWorker IPC Handler + // Workers IPC Handlers ipcMain.handle('start-backup-retrieval', async (_event: IpcMainInvokeEvent, destinationPath: string) => { if (!workerManager) throw new Error('WorkerManager is not initialized.'); return workerManager.startBackupRetrievalWorker( @@ -296,4 +351,13 @@ function registerIPCHandlers() { destinationPath ); }); + + ipcMain.handle('start-announcement-worker', async (_event: IpcMainInvokeEvent, message: string) => { + if (!workerManager) throw new Error('WorkerManager is not initialized.'); + return workerManager.startAnnouncementWorker( + path.join(pathToJsons, 'application.json'), + TCP_PORT, + message + ); + }); } \ No newline at end of file diff --git a/CEO/src/main/preload.ts b/CEO/src/main/preload.ts index 0aa21cc..2643ba9 100644 --- a/CEO/src/main/preload.ts +++ b/CEO/src/main/preload.ts @@ -27,6 +27,7 @@ contextBridge.exposeInMainWorld('electronAPI', { readMemoryEntry: (id: string): Promise => ipcRenderer.invoke('memory-read-entry', id), updateMemoryEntry: (id: string, data: any): Promise => ipcRenderer.invoke('memory-update-entry', id, data), removeMemoryEntry: (id: string): Promise => ipcRenderer.invoke('memory-remove-entry', id), + resetMemory: (): Promise => ipcRenderer.invoke('memory-reset'), // UI methods showAlert: (message: string): Promise => ipcRenderer.invoke('show-alert', message), @@ -38,6 +39,7 @@ contextBridge.exposeInMainWorld('electronAPI', { // Queue methods addTaskToSendFileQueue: (task: FileItemTask): Promise => ipcRenderer.invoke('add-task-to-send-file-queue', task), - // BackupRetrievalWorker - startBackupRetrieval: (destinationPath: string): Promise => ipcRenderer.invoke('start-backup-retrieval', destinationPath) + // Workers + startBackupRetrieval: (destinationPath: string): Promise => ipcRenderer.invoke('start-backup-retrieval', destinationPath), + startAnnouncementWorker: (message: string): Promise => ipcRenderer.invoke('start-announcement-worker', message), }); diff --git a/CEO/src/network/operation_codes.ts b/CEO/src/network/operation_codes.ts index 7e6835e..1bd466f 100644 --- a/CEO/src/network/operation_codes.ts +++ b/CEO/src/network/operation_codes.ts @@ -1,4 +1,5 @@ export let operationCodes = { + // General Operations HEARTBEAT: 'HEARTBEAT', ALIVE: 'ALIVE', SET_PUBLIC_KEY: 'SET_PUBLIC_KEY', @@ -9,20 +10,23 @@ export let operationCodes = { END: 'END', UNKNOWN_COMMAND: 'UNKNOWN_COMMAND', + // Auth Operations LOGIN: 'LOGIN', SIGN_UP: 'SIGN_UP', RESET_PASSWORD: 'RESET_PASSWORD', + FIND_BY_EMAIL: 'FIND_BY_EMAIL', + MODIFY_USER: 'MODIFY_USER', + GET_DEPARTMENTS: 'GET_DEPARTMENTS', CREATE_DEPARTMENT: 'CREATE_DEPARTMENT', MODIFY_DEPARTMENT: 'MODIFY_DEPARTMENT', DELETE_DEPARTMENT: 'DELETE_DEPARTMENT', GET_USERS: 'GET_USERS', - DELETE_USER: 'DELETE_USER', FIND_KEY_BY_USER_ID: 'FIND_KEY_BY_USER_ID', - FIND_BY_EMAIL: 'FIND_BY_EMAIL', - MODIFY_USER: 'MODIFY_USER', + DELETE_USER: 'DELETE_USER', + SEND_ANNOUNCEMENT: 'SEND_ANNOUNCEMENT', GET_USER_INFORMATION: 'GET_USER_INFORMATION', CLEAR_BACKUP: 'CLEAR_BACKUP', diff --git a/CEO/src/network/operations_base/operation_base.ts b/CEO/src/network/operations_base/operation_base.ts index d0d62da..70fc47b 100644 --- a/CEO/src/network/operations_base/operation_base.ts +++ b/CEO/src/network/operations_base/operation_base.ts @@ -12,19 +12,16 @@ export abstract class OperationBase implements OperationPlugin { // Default handler for OK operation public static handleOk(parsedMessage: ParsedMessage): ParsedMessage { - console.log('OK operation received'); return parsedMessage; // Typically, you would just acknowledge with OK, returning as-is } // Default handler for ERR operation public static handleErr(parsedMessage: ParsedMessage): ParsedMessage { - console.log('ERR operation received: ', parsedMessage.metaInfo?.message || 'No error details provided'); return parsedMessage; // Typically, you would log the error and return } // Default handler for END operation public static handleEnd(parsedMessage: ParsedMessage): ParsedMessage { - console.log('END operation received'); return { operationCode: OperationBase.operationCodes.END, metaInfo: { message: 'Connection ended.' }, diff --git a/CEO/src/network/socket_communicator/tcp_client_communicator.ts b/CEO/src/network/socket_communicator/tcp_client_communicator.ts index 7f262e6..6d78dd2 100644 --- a/CEO/src/network/socket_communicator/tcp_client_communicator.ts +++ b/CEO/src/network/socket_communicator/tcp_client_communicator.ts @@ -137,8 +137,6 @@ export class TcpClientCommunicator extends SocketCommunicatorBase { messageToProcess = this.decryptWithRsa(incomingMessage); } - console.log(`\n\nComplete Message:\n${messageToProcess}\n\n`); - const result = this.operationHandler.handleOperation(messageToProcess); if(result.operationCode === operationCodes.SET_AES_KEY){ diff --git a/CEO/src/network/tcp/tcp_client.ts b/CEO/src/network/tcp/tcp_client.ts index 557939a..e6d5d62 100644 --- a/CEO/src/network/tcp/tcp_client.ts +++ b/CEO/src/network/tcp/tcp_client.ts @@ -80,9 +80,6 @@ export class TcpClient { // Check if the message is received (based on if lastResult is available) isMessageReceived(): boolean { - console.log('Is message received?'); - console.log(this.lastResult); - console.log(this.lastResult !== null); return this.lastResult !== null; } diff --git a/CEO/src/workers/backup_retrieval_worker.ts b/CEO/src/workers/backup_retrieval_worker.ts index 6e55b4c..337a4a6 100644 --- a/CEO/src/workers/backup_retrieval_worker.ts +++ b/CEO/src/workers/backup_retrieval_worker.ts @@ -23,16 +23,4 @@ const backupRetrievalWorker = new BackupRetrievalWorker( ); // Start the backup retrieval process -backupRetrievalWorker.start() - .then(() => { - parentPort?.postMessage({ - success: true, - message: 'Backup retrieval completed successfully.' - }); - }) - .catch((error: any) => { - parentPort?.postMessage({ - success: false, - message: `Backup retrieval failed: ${error.message}` - }); - }); +backupRetrievalWorker.start(); diff --git a/User/src/workers/watcher_worker.ts b/CEO/src/workers/directories_watcher_worker.ts similarity index 93% rename from User/src/workers/watcher_worker.ts rename to CEO/src/workers/directories_watcher_worker.ts index 36a7262..9e0138f 100644 --- a/User/src/workers/watcher_worker.ts +++ b/CEO/src/workers/directories_watcher_worker.ts @@ -18,7 +18,7 @@ const backupIntervalId = setInterval(async () => { } else { console.log('Retrying BackupDirectoryManager initialization...'); } -}, 60000); // Check every 60 seconds +}, 10000); // Check every 60 seconds // Department share manager check loop @@ -29,7 +29,7 @@ const departmentIntervalId = setInterval(async () => { } else { console.log('Retrying DepartmentShareManager initialization...'); } -}, 60000); // Check every 60 seconds +}, 10000); // Check every 60 seconds // Department share manager check loop const shareIntervalId = setInterval(async () => { @@ -39,5 +39,5 @@ const shareIntervalId = setInterval(async () => { } else { console.log('Retrying DepartmentShareManager initialization...'); } -}, 60000); // Check every 60 seconds +}, 10000); // Check every 60 seconds diff --git a/CEO/src/workers/network_scanner_worker.ts b/CEO/src/workers/network_scanner_worker.ts new file mode 100644 index 0000000..ede8aa5 --- /dev/null +++ b/CEO/src/workers/network_scanner_worker.ts @@ -0,0 +1,94 @@ +import { parentPort, workerData } from 'worker_threads'; +import { JsonManager } from '../helpers/json_manager'; +import { UdpClient } from '../network/udp/udp_client'; + +// Define the structure of workerData +interface WorkerData { + udpPort: number; + okPage: string; + errorPage: string; + applicationInfoPath: string; +} + +// Extract the data passed to the worker +const { udpPort, okPage, errorPage, applicationInfoPath }: WorkerData = workerData; + +// Create a JsonManager instance for application info +const applicationInfo = new JsonManager(applicationInfoPath); +let appStarted = false; +let intervalIds: NodeJS.Timeout[] = []; // Store interval IDs for future clearing + +// Flags to prevent overlapping executions +let ucCheckBusy = false; +let ipLookupBusy = false; + +// Function to schedule the UC check task with dynamic UDP client creation +function startUCCheck(udpPort: number, okPage: string, errorPage: string, interval: number = 5000): void { + const intervalId = setInterval(async () => { + if (ucCheckBusy) return; // If already running, skip this iteration + ucCheckBusy = true; // Mark as busy + + try { + console.log('UC Check running...'); + const udpClient = new UdpClient(udpPort); // Create UdpClient with the provided port + const aliveClients = await udpClient.getAliveClients(); + const storedIp = await applicationInfo.readValue('serverIp'); + const foundClient = aliveClients.length > 0; + + if (foundClient) { + const ipAddress = aliveClients[0]; // Just using the first alive client + + if (!storedIp || storedIp !== ipAddress) { + await applicationInfo.writeValue('serverIp', ipAddress); + if (!appStarted) { + parentPort?.postMessage({ type: 'changeContent', page: okPage }); + } + appStarted = true; + } else if (!appStarted) { + parentPort?.postMessage({ type: 'changeContent', page: okPage }); + appStarted = true; + } + } else { + parentPort?.postMessage({ type: 'changeContent', page: errorPage }); + } + } catch (err) { + console.error('Error checking UC:', err); + parentPort?.postMessage({ type: 'changeContent', page: errorPage }); + } finally { + ucCheckBusy = false; // Mark as not busy + } + }, interval); + + intervalIds.push(intervalId); +} + +// Function to schedule the IP lookup task, storing the active addresses in memory +function startUserIPLookup(udpPort: number, interval: number = 10000): void { + const intervalId = setInterval(async () => { + if (ipLookupBusy) return; // If already running, skip this iteration + ipLookupBusy = true; // Mark as busy + + try { + console.log('IP Lookup running...'); + const serverIp = await applicationInfo.readValue('serverIp'); + const udpClient = new UdpClient(udpPort); // Create a UDP client with the provided port + const activeIPs = await udpClient.getAliveClients(); // Get the list of active IPs + + // Filter out the serverIp from the list of active clients + const filteredIPs = activeIPs.filter(ip => ip !== serverIp); + + // Save the filtered IPs to 'users_ip' + await applicationInfo.writeValue('users_ip', filteredIPs); + } catch (err) { + console.error('Error during user IP lookup:', err); + } finally { + ipLookupBusy = false; // Mark as not busy + } + }, interval); + + intervalIds.push(intervalId); +} + +// Start the UC Check and User IP Lookup tasks +startUCCheck(udpPort, okPage, errorPage); +startUserIPLookup(udpPort); diff --git a/CEO/src/workers/resource_coordinator_worker.ts b/CEO/src/workers/resource_coordinator_worker.ts index 93d5856..c92c215 100644 --- a/CEO/src/workers/resource_coordinator_worker.ts +++ b/CEO/src/workers/resource_coordinator_worker.ts @@ -1,6 +1,6 @@ import { workerData } from 'worker_threads'; import { UsersInfoFetcher } from '../helpers/users_info_fetcher'; -import {BackupManager} from "../helpers/backup_manager"; +import {BackupRetrievalWorker} from "../helpers/backup_manager"; import {FileSharer} from "../helpers/file_sharer"; import {DepartmentSharer} from "../helpers/department_sharer"; @@ -16,7 +16,7 @@ usersInfoFetcher.start() console.error('Error starting Users Info Fetcher:', error); }); -const backupManager = new BackupManager( +const backupManager = new BackupRetrievalWorker( usersConfigPath, applicationInfoPath, memoryManagerPath, diff --git a/CEO/src/workers/send_announcement_worker.ts b/CEO/src/workers/send_announcement_worker.ts new file mode 100644 index 0000000..816b6e7 --- /dev/null +++ b/CEO/src/workers/send_announcement_worker.ts @@ -0,0 +1,19 @@ +import { workerData } from 'worker_threads'; +import { AnnouncementSender} from "../helpers/announcement_sender"; + +// Destructure data passed from the main thread +const { + applicationInfoPath, + clientPort, + message +}: { + applicationInfoPath: string, + clientPort: number, + message: string +} = workerData; + +// Initialize the AnnouncementWorker +const announcementWorker = new AnnouncementSender(applicationInfoPath, clientPort); + +// Start the announcement process and handle results +announcementWorker.start(message); diff --git a/UC/src/db_managers/user_database.ts b/UC/src/db_managers/user_database.ts index 7c8ac70..7e9299a 100644 --- a/UC/src/db_managers/user_database.ts +++ b/UC/src/db_managers/user_database.ts @@ -30,14 +30,15 @@ export class UserDatabase { // Create the table if it doesn't exist private createTableIfNotExists() { const createTableQuery = ` - CREATE TABLE IF NOT EXISTS users ( + CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, salt TEXT NOT NULL, hashedPassword TEXT NOT NULL, departmentId TEXT NOT NULL, - app_type TEXT NOT NULL + app_type TEXT NOT NULL, + FOREIGN KEY (departmentId) REFERENCES departments(id) ON DELETE CASCADE ); `; this.db.exec(createTableQuery); diff --git a/User/.env b/User/.env index c411426..abdda81 100644 --- a/User/.env +++ b/User/.env @@ -1,4 +1,2 @@ UDP_PORT=41234 -TCP_PORT=41233 - -HOST=0.0.0.0 \ No newline at end of file +TCP_PORT=41233 \ No newline at end of file diff --git a/User/package-lock.json b/User/package-lock.json index 4c0237b..6a9924e 100644 --- a/User/package-lock.json +++ b/User/package-lock.json @@ -10,17 +10,20 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", - "electron": "^32.0.1", "ping": "^0.4.4", "uuid": "^10.0.0" }, "devDependencies": { - "@types/electron": "^1.6.10", - "@types/node": "^22.6.1", + "@electron-forge/cli": "^6.0.0", + "@electron-forge/maker-deb": "^6.0.0", + "@electron-forge/maker-rpm": "^6.0.0", + "@electron-forge/maker-squirrel": "^6.0.0", + "@electron-forge/maker-zip": "^6.0.0", "@types/ping": "^0.4.4", "@types/uuid": "^10.0.0", "copyfiles": "^2.4.1", "del-cli": "^5.0.0", + "electron": "^33.0.2", "typescript": "^5.6.2" } }, @@ -111,10 +114,393 @@ "node": ">=0.8.0" } }, + "node_modules/@electron-forge/cli": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-6.4.2.tgz", + "integrity": "sha512-bM6YVTV0uUEpIL1jkpARlSm4Li26XZn+avC/lyTdpPqnd65T/oXZNkrAD+2Jb0RlgplOaM21qWm7ybtvKDGDyA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-cli?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "MIT", + "dependencies": { + "@electron-forge/core": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "@electron/get": "^2.0.0", + "chalk": "^4.0.0", + "commander": "^4.1.1", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "listr2": "^5.0.3", + "semver": "^7.2.1" + }, + "bin": { + "electron-forge": "dist/electron-forge.js", + "electron-forge-vscode-nix": "script/vscode.sh", + "electron-forge-vscode-win": "script/vscode.cmd" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/cli/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@electron-forge/cli/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-6.4.2.tgz", + "integrity": "sha512-VtrFZ1Q7NG1ov0jJO/tUvUiYdWZ0Y31xw762is/jfpRPD6V/soOpwJJAoWoPK9TZVkTm2pkS8S5LikCMbNCLxw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-core?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "MIT", + "dependencies": { + "@electron-forge/core-utils": "6.4.2", + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/plugin-base": "6.4.2", + "@electron-forge/publisher-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "@electron-forge/template-vite": "6.4.2", + "@electron-forge/template-vite-typescript": "6.4.2", + "@electron-forge/template-webpack": "6.4.2", + "@electron-forge/template-webpack-typescript": "6.4.2", + "@electron/get": "^2.0.0", + "@electron/rebuild": "^3.2.10", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "electron-packager": "^17.1.2", + "fast-glob": "^3.2.7", + "filenamify": "^4.1.0", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "got": "^11.8.5", + "interpret": "^3.1.1", + "listr2": "^5.0.3", + "lodash": "^4.17.20", + "log-symbols": "^4.0.0", + "node-fetch": "^2.6.7", + "progress": "^2.0.3", + "rechoir": "^0.8.0", + "resolve-package": "^1.0.1", + "semver": "^7.2.1", + "source-map-support": "^0.5.13", + "sudo-prompt": "^9.1.1", + "username": "^5.1.0", + "yarn-or-npm": "^3.0.1" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/core-utils": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-6.4.2.tgz", + "integrity": "sha512-CjB3aakmRsXAMMDYc8PxNTMf4FdI29y4PErfv7eCXlL5oo3JW0VSKZIV7R8/Po0S0got85q2kmhZgCKuxL1BNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron/rebuild": "^3.2.10", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "log-symbols": "^4.0.0", + "semver": "^7.2.1", + "yarn-or-npm": "^3.0.1" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/core/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/maker-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-6.4.2.tgz", + "integrity": "sha512-zW3GH+LqDK9nxQmQEFkJPR8RqiX0lVk6a4mXll3ngujN1fPevO4ivUAWmaEVeC1dH/hXbN7s9m0S6a37MigftQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "fs-extra": "^10.0.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/maker-deb": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-6.4.2.tgz", + "integrity": "sha512-tlV8ffivgBP94vtYXgAeXgzeKCaRyLuWH9LT8PQW1QrYbAFpCMmuwk/zFaJkyMklImCWmDFTPYMEqdEJGd7Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-installer-debian": "^3.2.0" + } + }, + "node_modules/@electron-forge/maker-rpm": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-6.4.2.tgz", + "integrity": "sha512-+hfbY5pYbAer0y07OtOzVgVBHoTRmemqqZ//T0mKJpyK2ThHKGTvyW8FFlr5jlQs5LoDCM2WHKE8oGtRhivsMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-installer-redhat": "^3.2.0" + } + }, + "node_modules/@electron-forge/maker-squirrel": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-6.4.2.tgz", + "integrity": "sha512-ukK3RcFaBrQXUzR52PsHxfwDq5XKSnj6A1kkXiyHWqgj+HIU97prBScBb5JRtasPvYN+nDdQO2vlInsLaqcx9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + }, + "optionalDependencies": { + "electron-winstaller": "^5.0.0" + } + }, + "node_modules/@electron-forge/maker-zip": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-6.4.2.tgz", + "integrity": "sha512-k2nfhhnxcYbUS7rCKCisuqEalxtH9l73+lrtfL0aQZiE/BLbDXyNckDIDOPvX0tBEg62nVzUdJonZwOhZVvAMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "6.4.2", + "@electron-forge/shared-types": "6.4.2", + "cross-zip": "^4.0.0", + "fs-extra": "^10.0.0", + "got": "^11.8.5" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/plugin-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-6.4.2.tgz", + "integrity": "sha512-g6AAtQ7fZ94djBmwcnWasQ8xgaNVNjgaQ00GLK0NkmQ7n0PNbsnlMDuw9vdfTiL6WaLg5nxNSYc9bFJP/rtyeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/publisher-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-6.4.2.tgz", + "integrity": "sha512-Tnf9O8MFzdT1gsb5EDDaQUoslt7gUuUywtsr+lT/fpBlBQbei2fvioTwvZ1Q1cmsKnld7XhRh6unfgdWLTZzgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/shared-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-6.4.2.tgz", + "integrity": "sha512-DKOUMsdTXZIq8XiqY0Hi3C+dam/JKUnvfBjwcUeyZqPdgEE1qry8xZmmjorXuLrRf1Jq8rhxYGQInSK4af0QYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/rebuild": "^3.2.10", + "electron-packager": "^17.1.2", + "listr2": "^5.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-base": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-6.4.2.tgz", + "integrity": "sha512-vsQh+64Fr2Vxg6k8DAahWq4MAdB2F2qTig+LgIJENv8ksbzC1YIq05SBAS/g2674cdr7WdwyukMy2rgxe3rhnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "username": "^5.1.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-vite": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-6.4.2.tgz", + "integrity": "sha512-NX7jHRblBmIqufMbqWgpI/VnpgF/qMSTq9ZPmDSXamBhid336MC6+DoWzDpXceQZEp0m/jpMLR04ynr8O4jGlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/@electron-forge/template-vite-typescript": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-6.4.2.tgz", + "integrity": "sha512-h3pn6onvC/nLglmJuelYU82Qzrh0l6MqvbBGoT39bbDoRLIqmlhWTWppHgDJVXAGrSoH+9BEpptipeBQWirFwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/@electron-forge/template-webpack": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-6.4.2.tgz", + "integrity": "sha512-9QYr/td4cmnGOj8UF25W6An/eI+JXj9T/b+KFybL3cQ87H1yrQOn2T84Bm5/JaB4SPdIu4FdKRjqwR7C7R0g2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/template-webpack-typescript": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-6.4.2.tgz", + "integrity": "sha512-MPAZQ4v6piCED7NT1LTVQf61o6Eg/laNoKbhbrFBSH1i20OUwbtV2MLj6Op292ynI9+1qdHKmFgctr6qPTCAQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "6.4.2", + "@electron-forge/template-base": "6.4.2", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron/asar": { + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.14.tgz", + "integrity": "sha512-hc52QkesULqbxTRC1vOmSBN1YndUkieoNMfvpe988h0MEoGGqbijkOqv4/2M9PufBJxiTVoDdBmBFfXPowZDQg==", + "dev": true, + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/@electron/get": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", @@ -135,6 +521,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -148,6 +535,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -156,10 +544,190 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, "engines": { "node": ">= 4.0.0" } }, + "node_modules/@electron/osx-sign": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz", + "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==", + "dev": true, + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/@electron/rebuild": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.1.tgz", + "integrity": "sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "node-gyp": "^9.0.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/rebuild/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/rebuild/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/rebuild/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "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" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/rebuild/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@electron/windows-sign": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.1.3.tgz", + "integrity": "sha512-OqVSdAe+/88fIjvTDWiy+5Ho1nXsiBhE5RTsIQ6M/zcxcDAEP2TlQCkOyusItnmzXRN+XTFaK9gKhiZ6KGyXQw==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -195,10 +763,50 @@ "node": ">= 8" } }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, "engines": { "node": ">=10" }, @@ -210,6 +818,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -217,10 +826,20 @@ "node": ">=10" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -228,29 +847,51 @@ "@types/responselike": "^1.0.0" } }, - "node_modules/@types/electron": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/@types/electron/-/electron-1.6.10.tgz", - "integrity": "sha512-MOCVyzIwkBEloreoCVrTV108vSf8fFIJPsGruLCoAoBZdxtnJUqKA4lNonf/2u1twSjAspPEfmEheC+TLm/cMw==", - "deprecated": "This is a stub types definition for electron (https://github.com/electron/electron). electron provides its own type definitions, so you don't need @types/electron installed!", + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, + "optional": true, "dependencies": { - "electron": "*" + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" } }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", @@ -261,6 +902,7 @@ "version": "22.6.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.6.1.tgz", "integrity": "sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==", + "dev": true, "dependencies": { "undici-types": "~6.19.2" } @@ -281,6 +923,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -295,11 +938,39 @@ "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, "optional": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/aggregate-error": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", @@ -316,6 +987,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -340,6 +1040,69 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -349,16 +1112,149 @@ "node": ">=0.10.0" } }, + "node_modules/asar": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.2.0.tgz", + "integrity": "sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==", + "deprecated": "Please use @electron/asar moving forward. There is no API change, just a package name change", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + }, + "optionalDependencies": { + "@types/glob": "^7.1.1" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bl/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, "node_modules/boolean": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, "optional": true }, "node_modules/brace-expansion": { @@ -383,18 +1279,188 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, "engines": { "node": "*" } }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, "engines": { "node": ">=10.6.0" } @@ -403,6 +1469,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -458,6 +1525,59 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true, + "optional": true + }, "node_modules/clean-stack": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", @@ -485,6 +1605,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -496,10 +1656,20 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, "dependencies": { "mimic-response": "^1.0.0" }, @@ -525,12 +1695,52 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, "node_modules/copyfiles": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", @@ -556,10 +1766,105 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn-windows-exe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz", + "integrity": "sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-cross-spawn-windows-exe?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "is-wsl": "^2.2.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-spawn-windows-exe/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-zip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-4.0.1.tgz", + "integrity": "sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.10" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -622,6 +1927,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -636,6 +1942,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, "engines": { "node": ">=10" }, @@ -643,10 +1950,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, "engines": { "node": ">=10" } @@ -655,6 +1975,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "optional": true, "dependencies": { "es-define-property": "^1.0.0", @@ -672,6 +1993,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "optional": true, "dependencies": { "define-data-property": "^1.0.1", @@ -727,10 +2049,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, "optional": true }, "node_modules/dir-glob": { @@ -757,10 +2095,12 @@ } }, "node_modules/electron": { - "version": "32.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-32.0.1.tgz", - "integrity": "sha512-5Hd5Jaf9niYVR2hZxoRd3gOrcxPOxQV1XPV5WaoSfT9jLJHFadhlKtuSDIk3U6rQZke+aC7GqPPAv55nWFCMsA==", + "version": "33.0.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-33.0.2.tgz", + "integrity": "sha512-C2WksfP0COsMHbYXSJG68j6S3TjuGDrw/YT42B526yXalIlNQZ2GeAYKryg6AEMkIp3p8TUfDRD0+HyiyCt/nw==", + "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@electron/get": "^2.0.0", "@types/node": "^20.9.0", @@ -773,10 +2113,466 @@ "node": ">= 12.20.55" } }, + "node_modules/electron-installer-common": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/electron-installer-common/-/electron-installer-common-0.10.3.tgz", + "integrity": "sha512-mYbP+6i+nHMIm0WZHXgGdmmXMe+KXncl6jZYQNcCF9C1WsNA9C5SZ2VP4TLQMSIoFO+X4ugkMEA5uld1bmyEvA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "asar": "^3.0.0", + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "glob": "^7.1.4", + "lodash": "^4.17.15", + "parse-author": "^2.0.0", + "semver": "^7.1.1", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "url": "https://github.com/electron-userland/electron-installer-common?sponsor=1" + }, + "optionalDependencies": { + "@types/fs-extra": "^9.0.1" + } + }, + "node_modules/electron-installer-common/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-common/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-common/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-debian": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-3.2.0.tgz", + "integrity": "sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin", + "linux" + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "electron-installer-common": "^0.10.2", + "fs-extra": "^9.0.0", + "get-folder-size": "^2.0.1", + "lodash": "^4.17.4", + "word-wrap": "^1.2.3", + "yargs": "^16.0.2" + }, + "bin": { + "electron-installer-debian": "src/cli.js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-debian/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-debian/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-redhat": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/electron-installer-redhat/-/electron-installer-redhat-3.4.0.tgz", + "integrity": "sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin", + "linux" + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "electron-installer-common": "^0.10.2", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "word-wrap": "^1.2.3", + "yargs": "^16.0.2" + }, + "bin": { + "electron-installer-redhat": "src/cli.js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-redhat/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-redhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager": { + "version": "17.1.2", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-17.1.2.tgz", + "integrity": "sha512-XofXdikjYI7MVBcnXeoOvRR+yFFFHOLs3J7PF5KYQweigtgLshcH4W660PsvHr4lYZ03JBpLyEcUB8DzHZ+BNw==", + "deprecated": "Please use @electron/packager moving forward. There is no API change, just a package name change", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@electron/asar": "^3.2.1", + "@electron/get": "^2.0.0", + "@electron/notarize": "^1.2.3", + "@electron/osx-sign": "^1.0.5", + "@electron/universal": "^1.3.2", + "cross-spawn-windows-exe": "^1.2.0", + "debug": "^4.0.1", + "extract-zip": "^2.0.0", + "filenamify": "^4.1.0", + "fs-extra": "^11.1.0", + "galactus": "^1.0.0", + "get-package-info": "^1.0.0", + "junk": "^3.1.0", + "parse-author": "^2.0.0", + "plist": "^3.0.0", + "rcedit": "^3.0.1", + "resolve": "^1.1.6", + "semver": "^7.1.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "electron-packager": "bin/electron-packager.js" + }, + "engines": { + "node": ">= 14.17.5" + }, + "funding": { + "url": "https://github.com/electron/electron-packager?sponsor=1" + } + }, + "node_modules/electron-packager/node_modules/@electron/notarize": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz", + "integrity": "sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-packager/node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager/node_modules/@electron/universal": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.5.1.tgz", + "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.2.1", + "@malept/cross-spawn-promise": "^1.1.0", + "debug": "^4.3.1", + "dir-compare": "^3.0.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/electron-packager/node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-packager/node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" + } + }, + "node_modules/electron-packager/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/electron-packager/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-packager/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-winstaller": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", + "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.21", + "temp": "^0.9.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "@electron/windows-sign": "^1.1.2" + } + }, + "node_modules/electron-winstaller/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron-winstaller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optional": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-winstaller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/electron/node_modules/@types/node": { "version": "20.16.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.6.tgz", "integrity": "sha512-T7PpxM/6yeDE+AdlVysT62BX6/bECZOmQAgiFg5NoBd5MQheZ3tzal7f1wvzfiEcmrcJNRi2zRr2nY2zF+0uqw==", + "dev": true, "dependencies": { "undici-types": "~6.19.2" } @@ -787,10 +2583,21 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "dependencies": { "once": "^1.4.0" } @@ -799,10 +2606,17 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, "engines": { "node": ">=6" } }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -816,6 +2630,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "optional": true, "dependencies": { "get-intrinsic": "^1.2.4" @@ -828,6 +2643,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "optional": true, "engines": { "node": ">= 0.4" @@ -837,6 +2653,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, "optional": true }, "node_modules/escalade": { @@ -852,6 +2669,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "optional": true, "engines": { "node": ">=10" @@ -860,10 +2678,135 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -908,10 +2851,39 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "dependencies": { "pend": "~1.2.0" } }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -940,6 +2912,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flora-colossus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz", + "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -950,11 +2962,55 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "devOptional": true, + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/galactus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz", + "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "flora-colossus": "^2.0.0", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/gar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz", + "integrity": "sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -964,10 +3020,36 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-folder-size": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-folder-size/-/get-folder-size-2.0.1.tgz", + "integrity": "sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "gar": "^1.0.4", + "tiny-each-async": "2.0.3" + }, + "bin": { + "get-folder-size": "bin/get-folder-size" + } + }, + "node_modules/get-installed-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", + "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-modules": "1.0.0" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, "optional": true, "dependencies": { "es-errors": "^1.3.0", @@ -983,10 +3065,179 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/get-package-info/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/get-package-info/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-package-info/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-package-info/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/get-package-info/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-package-info/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -1034,6 +3285,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, "optional": true, "dependencies": { "boolean": "^3.0.1", @@ -1051,6 +3303,7 @@ "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, "optional": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1062,10 +3315,56 @@ "node": ">=10" } }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globalthis": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "optional": true, "dependencies": { "define-properties": "^1.1.3" @@ -1100,6 +3399,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "optional": true, "dependencies": { "get-intrinsic": "^1.1.3" @@ -1112,6 +3412,7 @@ "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -1135,7 +3436,8 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/hard-rejection": { "version": "2.1.0", @@ -1159,6 +3461,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "optional": true, "dependencies": { "es-define-property": "^1.0.0" @@ -1171,6 +3474,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "optional": true, "engines": { "node": ">= 0.4" @@ -1183,6 +3487,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "optional": true, "engines": { "node": ">= 0.4" @@ -1191,11 +3496,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "devOptional": true, + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -1203,6 +3514,19 @@ "node": ">= 0.4" } }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -1218,12 +3542,14 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -1232,6 +3558,48 @@ "node": ">=10.19.0" } }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -1241,6 +3609,15 @@ "node": ">= 4" } }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", @@ -1253,6 +3630,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1270,6 +3653,36 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -1291,6 +3704,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1321,6 +3750,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -1363,22 +3807,80 @@ "node": ">=0.10.0" } }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", @@ -1390,12 +3892,36 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, "optional": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, "dependencies": { "json-buffer": "3.0.1" } @@ -1415,6 +3941,113 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/listr2": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", + "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/listr2/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -1430,10 +4063,92 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, "engines": { "node": ">=8" } @@ -1442,7 +4157,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "devOptional": true, + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -1450,6 +4165,94 @@ "node": ">=10" } }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/https-proxy-agent": { + "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==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -1466,6 +4269,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, "optional": true, "dependencies": { "escape-string-regexp": "^4.0.0" @@ -1474,6 +4278,21 @@ "node": ">=10" } }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/meow": { "version": "10.1.5", "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", @@ -1534,10 +4353,20 @@ "node": ">=8.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, "engines": { "node": ">=4" } @@ -1563,6 +4392,15 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minimist-options": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", @@ -1577,6 +4415,96 @@ "node": ">= 6" } }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -1592,7 +4520,127 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.71.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", + "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-api-version": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz", + "integrity": "sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-api-version/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/noms": { "version": "0.0.0", @@ -1604,6 +4652,21 @@ "readable-stream": "~1.0.31" } }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -1635,6 +4698,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, "engines": { "node": ">=10" }, @@ -1642,10 +4706,50 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "optional": true, "engines": { "node": ">= 0.4" @@ -1655,18 +4759,88 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, "engines": { "node": ">=8" } }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -1712,6 +4886,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "author-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -1730,6 +4927,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -1748,6 +4955,22 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -1760,7 +4983,8 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true }, "node_modules/picocolors": { "version": "1.1.1", @@ -1780,6 +5004,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ping": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/ping/-/ping-0.4.4.tgz", @@ -1788,6 +5022,127 @@ "node": ">=4.0.0" } }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -1798,14 +5153,35 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, "engines": { "node": ">=0.4.0" } }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -1835,6 +5211,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, "engines": { "node": ">=10" }, @@ -1842,6 +5219,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/rcedit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-3.1.0.tgz", + "integrity": "sha512-WRlRdY1qZbu1L11DklT07KuHfRk42l0NFFJdaExELEu4fEQ982bP5Z6OWGPj/wLLIuKRQDCxZJGAwoFsxhZhNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn-windows-exe": "^1.1.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/read-binary-file-arch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "bin": { + "read-binary-file-arch": "cli.js" + } + }, "node_modules/read-pkg": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", @@ -1913,6 +5315,19 @@ "string_decoder": "~0.10.x" } }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/redent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", @@ -1938,15 +5353,63 @@ "node": ">=0.10.0" } }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-package/-/resolve-package-1.0.1.tgz", + "integrity": "sha512-rzB7NnQpOkPHBWFPP3prUMqOP6yg3HkRGgcvR+lDyvyHoY3fZLFLYDkPXh78SPVBAE6VTCk/V+j8we4djg6o4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-installed-path": "^2.0.3" + }, + "engines": { + "node": ">=4", + "npm": ">=2" + } }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, "dependencies": { "lowercase-keys": "^2.0.0" }, @@ -1954,6 +5417,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -1964,6 +5449,13 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -1984,6 +5476,7 @@ "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, "optional": true, "dependencies": { "boolean": "^3.0.1", @@ -2020,16 +5513,34 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -2038,12 +5549,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, "optional": true }, "node_modules/serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, "optional": true, "dependencies": { "type-fest": "^0.13.1" @@ -2055,6 +5568,39 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -2067,6 +5613,89 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -2103,7 +5732,19 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "optional": true + "dev": true + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } }, "node_modules/string_decoder": { "version": "0.10.31", @@ -2137,6 +5778,26 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", @@ -2152,10 +5813,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, "dependencies": { "debug": "^4.1.0" }, @@ -2175,6 +5867,96 @@ "node": ">=4" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -2215,6 +5997,34 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/tiny-each-async": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tiny-each-async/-/tiny-each-async-2.0.3.tgz", + "integrity": "sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "optional": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2227,6 +6037,13 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, "node_modules/trim-newlines": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", @@ -2239,10 +6056,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "dev": true, + "license": "0BSD" + }, "node_modules/type-fest": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, "optional": true, "engines": { "node": ">=10" @@ -2267,7 +6115,41 @@ "node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } }, "node_modules/untildify": { "version": "4.0.0", @@ -2278,6 +6160,20 @@ "node": ">=8" } }, + "node_modules/username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2306,6 +6202,68 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -2326,7 +6284,17 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } }, "node_modules/xtend": { "version": "4.0.2", @@ -2350,7 +6318,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "devOptional": true + "dev": true }, "node_modules/yargs": { "version": "16.2.0", @@ -2379,10 +6347,102 @@ "node": ">=10" } }, + "node_modules/yarn-or-npm": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/yarn-or-npm/-/yarn-or-npm-3.0.1.tgz", + "integrity": "sha512-fTiQP6WbDAh5QZAVdbMQkecZoahnbOjClTQhzv74WX5h2Uaidj1isf9FDes11TKtsZ0/ZVfZsqZ+O3x6aLERHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.5", + "pkg-dir": "^4.2.0" + }, + "bin": { + "yarn-or-npm": "bin/index.js", + "yon": "bin/index.js" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/yarn-or-npm/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/yarn-or-npm/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yarn-or-npm/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/yarn-or-npm/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-or-npm/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yarn-or-npm/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" diff --git a/User/package.json b/User/package.json index 3416073..5753ce8 100644 --- a/User/package.json +++ b/User/package.json @@ -4,25 +4,68 @@ "version": "1.0.0", "description": "Aplicatie P2P pentru stocarea resurselor digitale", "scripts": { - "clean": "del-cli dist", - "start": "tsc && copyfiles -u 1 'src/**/*' dist && electron dist/main/main.js" + "clean": "del-cli dist && del-cli out", + "build-dist": "tsc && copyfiles -u 1 'src/**/*' dist", + "start-dev": "tsc && copyfiles -u 1 'src/**/*' dist && electron dist/main/main.js", + "start": "npm run clean && npm run build-dist && electron-forge start", + "package": "npm run clean && npm run build-dist && electron-forge package", + "make": "npm run clean && npm run build-dist && electron-forge make" }, "main": "dist/main/main.js", "author": "Cerbu Andrei - Mihnea", "license": "ISC", "dependencies": { "dotenv": "^16.4.5", - "electron": "^32.0.1", "ping": "^0.4.4", "uuid": "^10.0.0" }, "devDependencies": { - "@types/electron": "^1.6.10", - "@types/node": "^22.6.1", + "@electron-forge/cli": "^6.0.0", + "@electron-forge/maker-deb": "^6.0.0", + "@electron-forge/maker-rpm": "^6.0.0", + "@electron-forge/maker-squirrel": "^6.0.0", + "@electron-forge/maker-zip": "^6.0.0", "@types/ping": "^0.4.4", "@types/uuid": "^10.0.0", "copyfiles": "^2.4.1", "del-cli": "^5.0.0", + "electron": "^33.0.2", "typescript": "^5.6.2" + }, + "config": { + "forge": { + "packagerConfig": { + "name": "ClientApp", + "icon": "../app_icons/icon.ico", + "ignore": [ + "src", + ".idea", + "tsconfig.json" + ] + }, + "makers": [ + { + "name": "@electron-forge/maker-squirrel", + "config": { + "name": "ClientApp", + "setupIcon": "../app_icons/icon.ico" + } + }, + { + "name": "@electron-forge/maker-zip", + "platforms": ["darwin"], + "config": { + "icon": "../app_icons/icon.icns" + } + }, + { + "name": "@electron-forge/maker-deb", + "platforms": ["linux"], + "config": { + "icon": "../app_icons/icon.png" + } + } + ] + } } } diff --git a/User/render/assets/2581896.png b/User/render/assets/2581896.png new file mode 100644 index 0000000000000000000000000000000000000000..6a3d2a0da9639de00e9def8c4592263550ccff3a GIT binary patch literal 42634 zcma&NcQjnx`#yX|9VL1%VHhP^h~60lK@eSZqDOC0M~vP{^eza|38F-A(IYz1qD2Xh z-rwW%UBCZdYt0!mbIvaJzT3X8dq--#RD6U>g9`w_BV{G|R{($p{)+}cvB0+zpI=wt z8-_bVSsM!e`9rNDz|S}?N(Sx#K+yB>f_&s8pas9A_E6CG&~mo+@HTgQ19*FT^Vm5# zxLcaLyy0E=!}1Cd-gu z87PDT%{aTyr$V#N48ovn>}qpVw1 z`0TcR>%89?aCRxsJ1*W47Qz8hQhQIAV@eeyhzkReXH2E z0bl259T&+nPo6i(I{dzbLD4ZFp%ck9nt+pCf~?U-iULhQP8Yz2odvw=s_G=}eIEc= z0VY`NVk_om9Ow)i$Uc$h9+8;TTZI4v<|kMmUqRjBmTJ;-799qi3V(S#QS8h!DIuC( zLmU`R6dJ%+^dmO&SvE|!z`ZTamCP+n0(eKql^aYB450g%TrmHau(&+*3<&|yv+5vy zJ`9#rm$vYoRzD2t>|dm^P)O3XS~9fuunZelkduQd`G<%PpUtZ$lkbSB zegMOOM%1B}NF;$U(g|xC66eHocMX7X zQpou~o%4T)D7OY{uq zgjJ1a&Ain5jbD-VN1jxX7FFyjbF*VW8`ey^q2x~k@j*xW@_J=Ci2UFZ(QOQHZ`|&J z!fXlvnZA*4e`%?8Uz_oS6orL6P3}l_tsa7WimZ(7X*0(%`4U2ppYYPoRyPOv8tJocT&jn(r{$LVE%Jvf)AB9%cH8%&gldVG%K_aqemUA%{&NI4#149 z<9BL@_vY*9bH}BtYK~@h#BdlIQhDU{xeVsyCv}yWrQy!1=NAbyhyiUr{AY3Ap4GzK z8COpG2c|6wsqzuj8USy!_`mw$f1^fRvRC-nE$PjtIFY!I%oM3EGR01W|9VTfL+iVc z@F(_W7=|9Vlv+BbKT1R`8zD^)nTG8Qs4@p#g=$x3Mx3+|8R6URFIDyhDok))cA#gr z_D!ad6kAJ5@G{Pd&^V7DDlL?@<2Bu$&QQYj()_&Mn+Z%}5;Zcw!tChEuMSbRPJvv; zUttAG3mlkGM&m?CVbR$y_RRr!*?~$V#F$9-boX^(I^B4GN%VUrWb=~HT-S)Ruo<-efgXZD7 zUoexbAb=7Do+HK3Mef{NuYn(IZN0F|w94=WJT_As4rS7;=#9W}fC7c<-6ZXpr;7S4vwuSfnBuP;9q{%pP+yBSkvM-ajqua%$}U zxP~a>Cx2N&O3;GNQ-W7XMrp)jb1`PbGs`AX!A7eyxk7kB482$-yjmqh1zn;A4%ABA z88T7{sh(IMSK^umCTB2 zsUXLGQn`X?*dN69lIOF7*2!0s$?ln>mwGbl*IH{HB8fuNc{ZPl;_sy-1<~y)wUtP+ z4Xh|?nY!1HJJyd-(pRlir*U1o;D=Mhq+R3<83v>kw^G`q@i<-bp;@EPuok4KUI25q zeKLbtRuDRVo&1cYHIEI4TWxJZc4BP#@Ib%g>{|~jS*De&?yYlk9}nn3qB(v%zNKwX zY3E>W?>xqi{xR1Z0J7v+DjYSFyb*<}B;D>K*^=zSkdln#5RVPoKs$F$aGz99r6X*m9AfqzUl9J)ye!>V)NJopFYjA)qvjMC-tq`of^!Nqvot zw6faaZ1(YS#qyQamu(BB{|W#g&w8X-P;9ob-|Mf6m{8`UZ|R}~BZG1#UXTBC zb4yH5#EfKJAr5&Gg?3&|i!O)0?M-ObA&Dd&Q>qO^!|YHIYrM%b-y(ek3U83Dba{2F zD&P>SZ_XQ1PHe1F&fAxe{4wPHA{yBr3Px#RhV&h3frT7sAv^BX68bjnp4_q-!xi>5 zF%(Nam0X3!W{(B$uzP-AJ)6iFU-|LiMdg^iuJi@9n#J-PI=v_!*7;X-PuPb!Wy}L% zxNdj}smXX>LRmM7-H$IMw&|ha!QX>T@bMq9$~_Gp6}iiFy}O+^R%ajv+wxZ?2R5tx zT*xQq;uAa6Z$QNkeHY69T-f}(lpYJN$Rrj?P9}N-B0kt_8p&^3?2Q=gU>ph5KOqzj$c%*n6bPp!PHEZBtlZV zk=A(i-2-R(U+`*X#IdChwdKIrprU~*^$VL1jKbpa)?1`*#GPhD*#XAe+fIsp-q`Ou z^R|;|3{5=rvhvgIHdE0F9ol4S$rV-nAh5b z&r_n}p^WO`9u>t3$C{X12t6AWIw3gg_50TW<2iEvt+h zc(M4_RAQLwdWKZtp#SLa7uR&F2oYC$plrtJNId|^F>9X4!(XEvLH#U{P_3zG*%=Jpn zkRFpoOypld!rxfc{SdOq$_>OT4WPHkVr6JX0(UlwiTuGSxDmDdW1-L8(aY{rag{(-6|BL_9tAv|y1$*Ao{?=(vxaTMQ5H^SJa^8`f-*Or zEP|44Hzmul7#O>-xUnOP|$+U92pB4nlswrkaOg=+h`F(*3#?7!m=ZJll5W5mF(?dGuJ z$&y3YB|d&Nn!ThnkJtNWZ0C_YsE9W?fXh~P%HM->24HWYK&3{BLi>ZB*-jVBK;DQi z6qXv{9@kLmMJMS>77$WA`%Soq`riKbtR$Dz7)snv2FbJDxD{>g{SO!EpfGLTIHxJu zNRz6=E&t+0)W9n!45#c%Bc9?*It9I|3lkr#o0FcHeCJ7_u0drV;K8abA`R~GSDtAK z>R0Fvf5{4G!K2XXR)8I$Hk@W^X^2vT`PDlhObbm411K zlSST;50OpnaOKZsY0*V^sXr52P(&~>Kk=ITZODWQR2sKvrS5iYDGeb?! zHLS6N_&C6g+A@vbK`4dCDD31{z5a3z5n{AMRMA0^li;y<#HyzG+e26;&yrF<9vdMH zVs=-iHp7oo1&MgK`#Rw@Qb$FP@u{%%bR#P&0q>_L{Z}^imBXX%1aepjan2vzovW(~ z^@gY>(a4H4><7DW!kDE6EW~CH+?uOBR$mQ&DKGH6K@n-;g&{ zIVuW?5-u#}Np!2Oe~4}0&;xw5E~#)Fyf60EP1ZPjLR$N*s!$lE0Pk$ParjwJ;0~i) za^)Aj$uQYSZfkHk_VrSCje;0te9I5glhb3r>Q%@|?N5Os)yi@g5D>Qbw<@WjEtt~i zRL_3ZyzZB~6T6|Nyw?K8DW~W!CJ`YDeykr` zTz}uM`7OO-sXQt4>)`IIc#1Gf4e=?UQD?37jbKk9=InHAY_NO&%QTEFx#55X1*aGl z{i`l$wmcEQC-FY*ZEDyet%HLp`7_Q$d39}uc!z1}55>Dz6o7ldI|jzqdgqB7g(mAM ztfp646W{4!s2(~?{7cbyX_9p$Z6N`N*f%vz`>IPjT=cf$7bW_OF+DHI&^x+cnG7Bd znK=fW91vSK&ea5N_;Qt(Q*!;=EP0xXqQlR___nQ^-DWpPn`{%#)vHCZqqdGldo-x>~zzm!m*S4dDw*Dj@muW~-pB1wG^O#{LcUg1&yk ziBiyYe%SW!h@KbPk5j+s1#R%~-n|m2l$?0~ZA!n!3KOmzbyfj|_0(f6wq4kc5#TG_ z5113e8_Jy)wAcy*m`MV{&Vm2!dP3`jA@Xk-bNIqQ-8H*h+xWGi4psK07<_L~^oHs& zeOUii>}CbsildIX?}q#BE!#Fmr-+RU;G@sMb=pc$ZEsn1jT7Db{*<$_@BKHt0#7^y zG?Fu;_&tRE>637-Au77Kzh!L}O-9pq4Ix31n`%lY)HGnk7`~zUJIxJ+!4I~ZaVvLM-$6q8%@Vn`V-NmxOnrMZ)Iiw4;1~-&?me+I*nal8CQ$$9w=*i>3*U@*^5kld8m$vT_qnbBk2(}~v`>ePHIgkzJ4DGHJumSD z>jRd~b-TjG8k`k>2lB994#0v{&(~4wMp2jbE82uiHT63bksD7LM=n3cAFDUrPIZbE zY)FV6S&HdV2{>^N6B)YZKaY{34((Zl)&FQUhvyuHXr%)7V+RVm{h_cwH#{y@hpj)p z>A!M+SAXC*(HVpTQ5;HE@g9V9^i{+Iy#DI}eN@xjrYe>XJrUDw5duK9*_p&}wgGj; zLRG2B@d{;urz?qMD%t-W6OEavP+3}JWs@T{#}AGIS33k$nX0*RooQbhScw`+Dc}{B z<`8tLW|#)I*6}}jm46w%0yMsDnDU&`Y`xMH!;3DXqz*6upAyMZcanaroK$`GV@k=p zh{gmR{l(X;^82AfyyVXrUhBqn|J{kk9Jj=9VF9(zYF$o$oYr?Uz)-61D|adH3-}0H z=p8EcsXy*dvW$MO3%u>tG{AXYU^%~x*{pCyfNyfvPt`roIn!Yu`S(dLiYSS@bmKA5FO-vy`zs*5*2oaF2Jir4i6{{83R4$r!Fgog#lTbP; zskBmL9l@7^4nh?|Ck1f(;^V3@z<+QXq09Xm^GmPw$r~IP+}v*dSMD7%I6dAfi@4w^ z)XvH|O`s+TxfTI%3@Rfzl7l%K%$MbN@Wocbi4etzb`$`h!qFUc3mIBxvxidNx>5UU zl3;@OCsi&xcn}ZqytY1J0h`XZ%fJl`rU%%%&As!=EE;6VV~3zkv-{6YKTtW_Lsmw` zxy^V_7#f;fu)ugs^-dXF5}&d%D!1&vbI0a&)UCep$79rfvLuhRZ~?(=0~N?0Dua#< zyn+TrK^O`SA3aq$xQln0-A{Y%K9`R5 z4==B7H>Qn|Z~hZ{NBQY_F~I8)um$Fk&rRZp5F|MT1Cxf=L44#a8(}8#owL}_En1ba zff8#|fU);8t<4)NCQe*&O=5&n!J1LHwaa->&u~&Y*7?AHEP2KdwYNVZ$eqRUk-}&^ zm6%pKa7GdeI12moJSC(%r900}p1oad4z~@VB+c{yR`8EwTV09wFF_klF1F(km`Y2( z-_lA;b>2SJuH@o9dEcXkD_B3l}N%zph#PELQjeM%*K)|p7< z!0`pxr18}H()<3T9>0)B5zHafG!dz-yUSKqZ>(ti6$Z!Ou1D5@ii+=NrLLkDElg?B^!FM*J%fk#UsabR1Jj_NsB>8N%gj{?|Ev^#w*UBuiiosc+JQg0L9 zvzNwgtU_}@2S7D#FHT4Be|M=6U>4SH-uqKox`^!c87J`L0<1!%056E{*(Kl34^|uE ztEPdYM_P$Ojb|(ZO{1+AJ7pF-ax6jN3jWo79hDz&mXv6$3f^O;trIubbUz0lY`QeS z=kTE+BQq%8VkC&$$^n%Go}8C!Z=~p`-+WsXcQJF)^6P z5KTr1+!f^BFo!)4SNOjl0i^6X^7Cs_M1)IoWqKLdUcNalFetANY#;n1_jEu&iC;{T zq290c-;7O*&$2aRkjVADy%bQ$ZZj@$QiH;}*k3@)n4)>st9<+)``k)Ryh)%UnMPkZ zinFlwQTnwHN?_AU)a*we17IjN|1cy~eE>kF#8D(RvY`^vR*V$cx5KU1)W%m4#`hazJsEvx6Oz$8@Kt(J&qlY#rL;}1v&WK7N9!y9iN+gQi}n`LK+1eSprN| z;kkc~CG)SrIbjfiNdAict?L8}5h5a=$@tEi{$K6@12pejg^mZcJg^GMt7{}(3aDp7 z5+zXysPP4)-phYg^BiCMq-(*o3ITvKdQlm72o&ZT>mH}U4v3No1f&L`q=`C8Cr1i~ z7~iKc0Vgfj6Vp>X&G?{yOgWU7e(EvOT6Z(Hp>N48U`%O@MchLMHbmg>k8I8d8w&lO zT1H0(+U(Nq^_L3yUa4Cb;{bBZav~mkV7vsa{*|`QbKY(K)A_sO34up`adbdzE35D% z1^`?%-BI~o`N^lsLSb7)yQ|c9QFKu)C3g|so(z){?L9^iq0Zp5Fp#kXwp=r7t93V^w-A4j1Gki{=08AA#V>xZ zu=@!VhLAt|mnzqZnk_`R$4M%lbxQ707~}F0PhtV1q74UkL?Ln^;6o^Qq&m$V;Dc5X zFKrlvUm|W-MefE5-UMi9lfQ0o?)>bn?ePSafC2gzgltfk;0(N~%6%93sF)j?=sp@#K{?7XTGD~C%X&L(!TpZRn50ntNJ9iGa5Q;S=M&J|A z^{{Eu1~M*QFjPu%G~-)XxDtaAkP3gTf^hk{X%OKF#%=*KN}gd$V(}2WRpXCFm*=UX z%c$!`PyerrU>=Zb!JE>L$hra0-j zCst3%mSH=bYh+}E2~LZQeBo?gW@%7tAYVpggfsG1P7Rtarlv)Vi%AsaxRSi$OkB&g z9;JmyNG$zqknMIo&0N40)=wc&mOJbIf12ZrWSDW|3L zxhzYY5R*Aa)4$#sTSBU8`;`)1N$!>giy~WK$U4vS^R*Ge`7*xp6v>@vs$B3VhZ{lT?%?(Cn(IRo`3{`I zNk1u`+;*a*6XnVYLGs#SG%jd#uaJ;D(fPOVgik%9;l)qJwFS*n|Ecvw*pMv{?tyRe z9#7zLEb^eFM}tY#PPeJ|x-*LOV3LBjRvxr+ofr)l+{E)F>j$55(yg}v!j+L0&+?|r8zVv zg$yS!szcdCxm7?d_Fi-+tMFSJrgPxM)**fnB=&xBuIS><`=6p=8UN-vs|A!6?Q=PM z=UC89`_cZtTim6#5WY6yExNbH``ddvJ$vaN^+g(KMnBjEPAd9h=OJXFF?>oOXR!z| zv{oW9w(9#{=`b!B+xK4y=oRB~Uec9{$7xnIl^pb@j&w=~9y@*dG#ff4W1+rHhg@6p zzqyyb^z%Po&P7;i?GaXwd(g*ntBH6vW4c@G6j+bm>|h7;WgYW};jt4X$jd$Y&ewe9 z=Td(lviLsrw8FH7%CzOauG-K}gntg2i;>We%Byd}lB}rlFa=5z(o!pTSByf0re`O6+IH5n3hNqa*wxb-^Dq&TyyVkOR_8DfZLK4m)WDLdw=PicL(Y|8}UKJy8S(j8k$mgQy+B( zl=yve&j;?)6>`tMXd(VT!%#)pZNy z7gu^t{eQ{v6jBiw&lErtRJNG)SguGj)_k9P`yUGmQCn>&U@WJ#`y@*&0Jk@k<#Ud4 zXxHM+=cV{vF#+RnEOHt4MU@UN8w~V5_=}w$4I6>8=9iiOD{ z+q`z0Gx9&q7f;A}$$uM(14a(*QI5`J>3hYS?UMH1gMfa8RCIuf?r~RKNXx3Ka%Wch z#|J1=yM(iNCk@B(|J4Er#*DFbpwKm`I%f6NA$3S){Fu-!a*cRdw^gHDUfHLMtxk3yb+d<*fbXO!`Hf~)5P6{tjUIv)eR}}Z|k2)p$>8SsM4&ccb}M9c0)-< z_#!M5u_SNgt8$MLbGCaE$f+yn-`YA#zWK5K&b^lZ(A%_)K6OeviYGKJ#tt1Ia_Vqu zeX1r%1ND$B9RNVF{kysJ3>BUS6#uD~RJ3sL=L{VoN)8nfLfG zCd^*kyjK#*Gskpg6*@H98fOc98QW^-LI5J=`QIw2-x_BZOJij=r4qwDU!m@?UhJ>!*n?WMpIbxKXE}tBsX8(t7XL z9UFy}Wuri8iBI)UumhFQ!K$kC$vkWj_x^s;ls_V@2o*14A2$r*LWEV zuUE1+Ul!DudCwm9wp8}V&TyCHYPy+hzRe#^T60->O}G^5`GsP=q}>P77O*K!Dt@Cq z9{;;DaIcOIF&Fbn`@@L5rU~qm$Tf`4Ic+qRh>5C$hyZi7gD5bOk0Q`GgNkhQ=GceS zDNnR(Um*8Tl#sBO@n?eN-aUOu$r%PC=d<}{@$q?Ant+g7UcZ-La->O3gI09O$TuE@ zZnTJjj3|oUGCzKLPpvL}E%w{jJJl{XLqJW=q2I3FD=TctNl{sr??<$Xrjf=6eapl3 zN6P{&GW}@s7w4Lb3 z-%kx~Z-d0dPt3vEn3Oo(dXM_9RhK;f=TCk_4{0Q1GI&d(hpm&+SOQ&T^UxtWYaaqSr(&t;+=Iuaj%{q%NKvi0JxpX(7i zEpDhw?J3#Ih8#o`GiFg}FZ&aY=bC}Aa*Fxr%mn>cWYqL+OSbQ_c1FB;(ptNz_k2Mos1K~?NO$bC!5;=7n`YpJdll>>d@VxEu z1Pe7Q_eiLpl((c)+dKL_ugq;XB{by$fG81+U(S*qly{pck1j@zoz1Qf3X6?}M99HR zGsfrn#JE363?zNW;DNf-G=bo{9h)_3GBQT0X=*=gh_((C&t(|G!oyX+o_{Ca^P+ud z{$b2YD$)DjnBk%zR~W(0$=%U@Cw*R6`5kkt{gB{{p^Vfx$y@|GOfj5KLM$e1v+qa- zRLJnwJqa*n$*}jcKom2xhmT9o#!H<8S6ElzU0E)V0#Q@ey^m&$LZABIX$_1Gkr)#w zn<*0mOl4boD~Ult&_}T)M=hz#y*UB>qy>s*1(CsdHAOhUiknzsZgTj|p3xthEf^<1 zXN?du6OO_bUEyOwtT1d|UV#Y6Ipg!T9MrXeWM;QhcdT%Ek8zMYz2FU;HHia|AO4aN zd4KVnRiM#h&HHJ4G<{2)%na%INH6H4JZ!{YdWUThDJ7xGPgFsul9`R4_FMYg!0<3i zp&$UNvsb#Y4;l~BZ?vU6e1oQT&Jc34*$DR+Rv+O2)HK@k;cbNxO{cB z)U@j?v=*w@xY9;=E*BeOj2YV_%8+X``;#~@mM?6$KISOreO9@nRgq1{^JM%%1>5E@ z&3NqY9AZ#2cqPQpz!9N=oa|53(123!ey&0Mf|Eh`FYSy)#h!eCw=;(N-9>nN3%2Rq znoae_Q@^7tS_X477kv+dE|*chJ?hSC8;p_tiuJ06w_a97CCvPiq@|^H1FAzZ*3Vgg zW>q#xY{aYPR_-2RqEk`Rca9Gbg-I4t9mRkZ5b!;C+YSe)S2j+D(V0&Ak!0Zy%%}z+ zlA5*Wu^7<*eDP@Rbhcra-6ZIkIqS0nv2lvsKvay>Ipfu$%|U~0-CSaNO5E@XSk7U? z$j^PlHfC#>*WetXjs-T}F>zj+fzOZ0>1F%Fd1h zrx!Z5*hKN}TRKQr{>j?T_D{6V+;u+sccXdhTlv16SF}uSZ3Z zTNaITiGSU|nw2nZFz|z&H^1tx(v;!F*pg8q=wdkRraS~IOTuVidsmU1y*T0B!DJ8hH>3o9xLE|)ujpQW5}{LWYzK40L+o2<7y=sh z9*PkHMS)i|=zuK7dkBV{ED8amNsdn%juCKd@_ka-e#W6a@+5vx(rz}CDj2OpzyOZJ znewzJY6EZe`0{AALC)vC`}T8%Lq5Yxu*3r_PU8F9b}=KiM*wza84SbJ&3r`g%G z%6ugB<&oDHa@|b&vzi%tU0O$>%xavNs4^K%ZT2!W1I;{JTrz{;at;kL>e>Ps9UZU^ zstPpP3v|e5L$?ZDKD^A4D002&m1c*kuK$Xrs{1bNa(`P!5VHeRjDl04na)Nb53hp* zNbC8kRO@}`_a^Zq5n|LIB7~c*p~FxG1*fABXL%B4Rt^8CcJ=Fuh+(UGa7!99l$*AY?d+g6 z&K5hQt(tyzrS8Tv>_O%xF$c+8%g z^XOI?p#;D1D5`lD?VL5{;bite!E&_@r$+PBC3i_f#RsAusck&sPkvze0aIAdRiEu6>URpfL;lBHM4{XDQ=9;(t=8j8&RB!hs z3x=5CrNdlLyQUmc%x>r3us`J_Gamh9M}rBt?XUw-p)dYe)=T{850kBL@U+~jjIVL{ z*Dvy}Ofp}c9WIXnCJ+jEHkJ>g`f5S!=Dy~h{5Tt|L2I`YNlJt7k9ICy^a{_H)j@i>w&swt=8v55k!Od`vE%IjF*gDCOG#Kb61 za8yefEC8}HN0v_PRlJ-cjmx16y1!KW3N8*`NqM;dm!Sxy3guY0j@~p_Ed*Aaghg?& zu>5(Y2}F?gDtu$V`(?j)Q#u81HcK+ZUAC2&3Fu4vC)U-*wf~a92M1TH3yYgA_MWuk zy4$3t`=Tuuy&}T}dZ@^NwFHHvzErB;pi9Ge56iMY=r|(f771J#Y!*#Fc zNtRO~ITrj5RKcPm%+DEGaT%B&^_%iY_=loMu5j)VWCj$*Xv&Oa0LjA;*vL%0N8Esp zJUiuAqIp z-&TJvk}ebt&#z{r-PqvQ5G=uW-}+#Ax0pUK3dUGNBb-6l1WN)~Q;5uh3A2%MrrKC+ z{1>`j6&rWuQdUF?wqW~jPu5TIshHUH#Ei6jCo-l^pPM~BF}yYj@gapQue=@rRVmLx zmyeF%y7#Hfs0xS=30&t=#h?M-KF7ppbA4;YRpF@;Tldt_oDddyKlye^WNA7iCkF!R zZDG+@JgFcJjj!&2Lb3x1 zc6IaRtG75&Ze!bg05Z6f*u&$jpv8tL;8t#X-@UMEIre+7`N=uq1cp4RyQr2%LT>E) zF2_Gx8+p7>@h>*ttg)4eVfGe+4S492vzEdqE`RWPpeHj<90#BtIPt&Z%5G;m^>w0fQMq$M){giWYc55pykC8U? za!yID2zDQ#CPpK4(q2y&g}N*`H_VjnESLr zd|CsWmI|p{2raFCrG99E%{%ITDrrf`p}6~)vWYNx$qF`+AarJUFuS#5$75ylW}NF< zq<{lA_BQ!*J|LqyWZoD{$fw$O7=e9<#LpdzH{(T_X~;4Xp=KClc-fh$KCGT&uN;RH z;fE37{y4lsKg33W$SmZZP2DhKbS$mE!;>I4$X?wdsb|GabnHUnZC8fZDAi9bjc|>(4s*$&Y4C|+!5-dDGoZN=gtg(kxByBu1kRU% zuUPOLj5aXCbM*oh5@P^{N>FzhB|f|casMRHaUr05#O=$9#`kbmb^v5Hlu_?xGfvel z!qC85(~xEC^_#gpWDoZdt4<1B*e&MvQ2paaGq$JoC5fgNaPAWH*^_CdM zN)95c&ji>t##vDCmZLsX{uzpCx)ZEyF4n2)*X4bElNt#^O^hgbmC|}u>83dO}tNcgFK|Q6@PM~R0 zku=~R{wej+e5k=m)3l<#6EXNZ>Z^Wu!YJfyN;Q5};nY`g;Ly?3Yo2c)oiG@`h|*{*v#eeUPH4l2lv(IWZsAuAQ$ zUNX_$3}he+#Qt-GL4Ey})YIc^{Q@T=^`j#S3wiKccJH^Jsud1cRG_S_5IMwiANkwg zTipnY(#;N)i*+%-`@mU&XEgdm6&Y9JuP1MwO9nbFywmzrpr+Gur`X8t?I5x1mxlv*M1SOH2L4svO{X)a5*q>{I$&SpM6oXz-5X{BJN5@&zD zZ0|CV7-PZUI8SQv!KLUlW6W>9X7df&mEHSPrw>)70$NR^zn?Q?+8KbnkF~Z!a6dn8 z`*JE#-St>W={M3biSuG`s>*3RV6UZ{1UDBY?P{|aFQI(lO5OjC-{m_*O40^;{0e8d zzfoWp*v*aMdjpb?Z(HJ4HfHXaK>32edvO>8@F(FtgY*^C;(_Kw5fN!k6weAG@YeJ` zWH?59(dYIB_$7h_$utCJt;!SIinh&hiVXMYf7KfzA3!&dqS~SZp%#?^a0~R8JX$_g z4jL(!<<4FkqrpxkyncNr11&4-WPny7prL;b!z9JRpAw{M3^OdfluHu?5NX0Qq6rPsaEO#7MQ+hA@3JU0in(A~?6`DX0NitTia?1xamkUjG z1b$V)j4R1ZvTGLQWknL*rN)jQd9cCS6ru-ovz6SK1~)i3*YJTNsp z4_B<)w?P&z`Wh4o`1r;3y(f0r)|lA88QwlHD1()m=5-5}dUPg?r0NKg zJXYH&EFD{IIxN1v8UtYOcbcW7Dj7zMuLRV(^9$7;w$cQT%M_K08`x7s#@YB<(O4z@ zEEbZ(6=st6NLT@RqlP@RW&dpgE1M$qzq@Q__~X0~SWTfF4QROq9Gbbq!q3)vu@~Z2 zvd_=V63)7Xal8`HGr4t#@V>rgIFG7irDib#?Q^f(L*k^PLciJP;KTiEP+FN&&q<*; zk!U(P`7sq!@x2HBr;kdG&iwppY=Y?P;q&*>qcQJ~DB()+Q%*sDQQHWlf1+}@<2;@`BqnpU4X>}$I0>n2RlQCa;L z!vPABJEeYZN}YZTk2`jq|9!G_USICdTDK{cZFM z_(p$_CK0d6D-d?B7htjl!LS{^^0}GymUOEsI3BQA^;HgR4vj@T3RD>9uka#-K%TuLU(Brhuc& zFlf!&8CW`6`DOOMQn%DFx9G&rANNOBwZ`Xshk;m2O`Hq;a^>>ZchTF3wYg8$wHsqb zDFiDFG0k>Ui*AlaK`fOfb!6djLT0w?XQW;tTOw0GL%A9D!Yg;uv<&dS2>Oyzl+c4n8Ov~}LOw44sFfx2bGJFK}LU4Sht@xrPo8e)d>Gzn% z(eS(3aY=AWeOrCDtB zyBZ=Ir#(+&%HLmuctQ>|C60EbR~w%?1^W#!H`7^2eZ=4EY^^Q2EUKg2Kd_TT?6}~f z9zpzf^IQ6)X9VcuB~Lki`}>7!Hl{WFO!8lRx8PfD_qQ5XL0^#iz#NnD zMMkmgWH-Y%W!iJR2|;@2_C`t&$wvn_mJ=KD*`W~XQo3{=#>w8qjkN&}zE8z2v)rpe zEx*WQlBl>y!Yk3~@H6^W8LpQ}wW)7p!-%DM_u~CAp8Ie5FhmOxoG7o{`&%dux(i5~ zxv7G%?A_s2xX;zxjG8Nno`D@i%6r$hT;IepgVCiyi8ldmCqbo@Brk`f%=oj~Ap<%Xh#fJ+!|e6>&fC zbbe>>Fc>T&&keLmtl&Dnz79A}3eGAr784y8`v~^T2DR(kbZs)zmwRAY6IuxcZLvMz z$hfur)XXS%*d|e=%o@DRaH=FSH!}XKdwiTF|7$L6 zw0*>i;AZ@pzzLL_Rzi9btPt5|pz7e%KD7EX?VKDC*u|Ao0Fb5i3`mPGhY zj0_{+PRxw$sO-s(2ab}KdooQ z3$G=H1+0+<)CwL@k|gQ09{%w2@f*r%diS?ci4Jc_RCjD$UsPRAhgh+|yS$Xfr8U-E zuMo3^hKi*yc{8yrY8^=DmRXyt!lw7 zV!13BBDS~CzxZN$VfBvL5o+I=gw@-mhT>P`$4PI=E z@Jw`N50@$fc$%!m4_Lk*bT6hMNwYOS**U=B`_0Px-!WpH-8YL#+5lCHawfwVX zyRE#pBi8Q_bOo(y{Vv$LIQ8l0E94_VF(ICx)&6mD>`tU4Gw+{O7n*dX#BI|y(4+TjwI@%KVYvK<$e}4Lj8Z(lJw(%42o(yeV?77i5a!n>=r<@Rmg>BQC`)oyER_)j1Eo6;2(l!O^Esfd?3r=u_ zp$;%a=s|e#;@2rBEZpjsaE{Q1JlSaQ@9(fZas6-*jU+s;#-5wo;S+U764k9{tq1*{ z3(b|h<7kySru%J~C{p>l=SaP=>|#@m1JvTx`shjy*H6Vjw9U@NA_x5xi}6wV z81}QyS<2&~)Mo5?f_+Nk7^v$EI46+7@(_^>aAc}HO&8yLojrGnp1GG%}`M@1t*u0WVZA%PWv)!b*Y;U8({9BRuTVeW=EFUERnfjpQs~;iv$mXyqA{xRkb3r0 ztrtu^jaOE2wvf~mE)ZICc{wDE{W$}bd)R;{0p+%#eJT%60tHN2OL_K~NuYIB9x zb@H`5B?;aGWeGBG-K6U6VGU;&;`Be6l+#Rg;x_cO*MGb@)=bOgZiXX@9j^~8ef*Du z(%n>qdn(kie_zLaEUq{1aDRzldEuul;eC?F=cX@MRIPrEH)d3l=1)aenHg4_vs^~ zacj(og34CBNlTxcFTn)@K%GhI%mOi;n$20r6cn`FZHyl0J(E~dcx%kr;O_#wmJ&h6 z#YwT3g=Lj{%}K%J@-ln# zF>aS)XPd^tmX_#jyc;k|)oT#&&bv+V4z9oveJ!vW28=Sgy_ly+F#|1?~PBpAc^VFBd35pQuH;aLd#J-JD z*I-q9wOeq8v;>Y}Ljf`fW4to!@pV+E#^-RmWGt!vGJZ;taxor=`|@IgB;`%n=Dj4!s$*BO z`A{wj!Na4g3V2P^J?YC^63f!_w5WvxueN;|z6m|Ug!p_W=UA3r#PWM+=PhdNueRqa zey;X%Tb$K8=2b_wI+P1osE?_bp8lX8K|#3WD1aX7hDJmTQJ7vUO}xp8EErU7MB`HkMt_x8~C9PRl2gi4uDp2vrcV zn4~(1U01#TgODz+=5Zk9=MPD1nH$JteE!?w&s^RXtm2`lanVuKq0<`|`)+=|$$DOl z`JU@z*e&1)^7@7YK2XTkvypA2=@q3%#$dISGl{ z)yJe|EYb&iAbf_2=3+a3ERz@nKF6=qQ7wok{`S9jWqWwr|0L%s-K=_2YNFul6ok2e*NBHH=qv?`4a^=H1>*F#EpXNjy z##@33*4*~AvTjF%M5Jw~RxnOcX^u|E*>N(xzB;}t$T_}p)%Et?D^k0`8p;!GmGp>_ zHAPCvmG;%?Ic~L^=hewGakU%mwXXiph)iN>xI>5$KCpZ>oyFhfPQt|{?sjukSy{H% zi&g=daf?2IPBc5(HIn-qi|Y;2jcl2XQ>Td8WU(%g1t9qN=MdZtusy@2Ps7jW=L0P? zI$QfzZqElLx^`t)AFyfMI$hvd7u?(U1SOXsj(Xxopatd?Txpd}!9kCvjoxhUyXO4I znWZJn#Iw|4amBYAo8z05prP#V!Tbi!(v9wM#@ABQb!&Egoenq!lrSQx_-(y)Ng0oi zx9SxvON6s4hwBiMDl(TzV&9|)JL^3GMZ1*7H$nmeOSt!(>}3=UR{310Rfp%jyt{A3>+z}pYi z?P=XKWswomO{`f?R@`j(45}db+`PQtr^v;d;lpxIm8dyB{V4biE#NSN)>JtjI!V@ZdbfKEXJPj+ zeQ>vZ3v=!H>hALvnCR`~L=+ueNrL4oPxOsALZunW*C}m6QY}ggO>#!DhS`0G3r~3> zR$td2rhB8wdBWhAQ{$g_ND=n-`?KA|NevFa>8~e5JDjWqI=haR)YL7q^0JWR`#s&m z!{PK1VvdfG5&3cHna=E2W9JULpTx}5eg{EwSMDB$7;WA9)n4Pn6GB7v25y4AAp!>R z5;L0DV=c8)i-H$Ve~q6Gxf#|y43uqHM#(4!fxC$ePwZPyQo;^9T?qYrM4S-n4Rty%#^F5M&>DVb()}DftQ^UE=DUJPwk<>o20fg6b97XZAGGkNHWwt zOFw91eGJSE?LIxppV9CjDUn&#IcMOaU~Gx0u#Vw>Jf43Rgo%m4PJtvxbYHU#K_mKe zHd|~zU}l~m>Aef!$U{ofNBq~i z#&|6SQVcw46X{}TKhT5^4&r`Y?WiTqmY~ekHc`Cj{wNb*eLxkCF-*#P2p!qjj{QB| z<^eitl2o9vtH^o%dpjF8DkuC@-r1@_f7_jowoXlSbcWm10;!v15p_a8?%BbuVY&rBvy{*`y3Uj=w*Wk0Ri(3hb60izUMA54EaC;ar}m!?5>R;{_TnEQD;x29V( zFJIrt0E)Yz6xt;c*KU!v1RC$JTu1|Tr0+3_!7>3ZR2_53-{8DuTv<{EOw_{h;;UbD zde}*;`s^iR_8cDIzE6#=2K3mb$RfnKrHsF%_Bg&vkZKw@e5|ZI$F^RXXuBK0#{stF{lCEp|z9%PJ)(G1iSN=ZrC zuNn)yU>&#m!kVB?GaQc6ZPs}2v~Y2jHy`m_Y1o%1$eQoPgEz*(<6i2n>J0d(U@b;O z6c%5bt>CM?``c{N#XEhMSM1=H$zQJ9`RK`@I>ojS8z@KsnTM@qZ8q((%^#E z=%QFlnp{AXm|=PSH#YFE()k;fj5tw;LGJajR8l2)?&$tka~jqS^F)s6RU?+-j9S|? z5A!VyZtul~kDB9C8mJtSE6rDG;FYgjRFlu4COc#qk)Z_TODrsP<&`virrMDx2< zujJj-o3Aesm{;}$O3EL;^mQ>gdk_yvBl>5Hwl5Ak@d8Q()gaDE|D#Sg&7mv5D+!xB9Z7_p7#=qH7JDkH0jubCZb7n)NL%9shKCslVMy z{f&2V!5F6qu^5jvtA1`Gk{FEvL_H*dc5=pAX}Ead^D|jpMMGb5xr^~$b7A<4#IWY$ zdeVA*p`8y>N5_}l`F+AJ!^zCYZUsk3U4i+n6>Zq%)X$71DXHXN~=nXi;8}nw9)>(=rUS?O5+^c zi_dW8ZuC+B;h!QaLw7+A3UCg$POP&+F2-G0+eh?-dv9h^+hE|_V z*Kc_VM{(8L(vm^*m*DO6EM%_&AoqPV@W>?)pu6(YPJqW*5tabSzO6`&n)|cbs*GB_ zbp*CD5c^-AbVM6$(eV!!w_Af*^|cD*H2uOJA+OHFqIoo}yx*;}MwLJA>Z2FY_PuT* zIQCPKdfx|$wJNH6KwbzUTts_rMPY*yO7iIuJL_kTvyznFQuCw*1~1V*Z!U?cnIJ_g zR&qBs0F{N@F2yF#ho+e+;NNOYZ=}QpsmaMewZPapqY4cCpy8^=BRDQCczE6cWPRTu{uP z+LqHB@`ny%ozGiywZ#|Rtri5at1dr&QNZ~BcA%zqKiaJ3c?I8H%v=j~=Y$Muq!a2` zJUm<4*bJRM?B2p&Kfg3IHtya%T|Wghc=RCt|pOB#N{X1r-YND*7A}vkf?mGj6 zY(Ww2ud<=+ij|elmuoxa<@>L`o_P}p9@m{CtD41ETLO6UO)gM)A%RP3mG-N%wiA54 zdy6S24tmmC9pSX6ZbTieBiWt{$s;*~3h&ozHsxgD-$6-$>09VHD1N-XVzx2kw~3LX z3oyTOpif`JCx{?wb%2oiD3?a)}yF;@aWi zoZ#LrEF_He+v#I_c(U2O9cLtZXnC49<1>%KIYqIs)^vA>ABmAmdV!!_%raV8xH`Iz zL|#auKdWpMrT_X@0~7KALKxfb&RO<^6Mv)qFeDjypCyQKDho#Qwy)PQBaK1LvP$xG_=(Uajx1Y|-HB|V0kC@0&r)j!H7&J#VqHP$#G92EPq6SO zgF~HS7aye3b+lN&lb!kf6OLd7y>cH&5jC7H563u{cJ76XI-}<=sY$}O$wiHXyq<+M%hrAYf%cX7E3KxQ;mqemS#d>QPf_W)x8e-`XW}m( zrKFL)8$=5WM*5)^VTZ?GPQVS-O52y0ZCd(kcUsZ84cXj=R>v?@vp~mHsbf zh667CKF9oU_O{Sb5|jvOBIJK=*?bHm&m)Ud9a3grmuZv8gpVUe_HwoY>XnY*#k}tB zL7PJ3_Gf#3)FGxiYu?Gd{N2b`e-uRlC&um)bf9+qLcjJHmXTk_CJ}1e!!*j>byq`I zFidua2TCu?Ek(prMqqc%Rm4-P*hKrZ>$$4KA`67_nP~URUuJU)9}t=|;;pX}k#^}c zC+Z9*%vrP3tBu@3PtTkqt;`8@c?-Rqht$+lh5AgN;S*12gLyPdJKEOFtXxI)%KOj` z+*>YnNLC^IyjCSGQ}^9m)_pI7M+=QpVcm3(cHxw1SL1Qm$z>nB(cC2(w#9+#3*|BG zBb2Cq8W^zrWrqYE)h8j1`jArlODk5P6~pSldOuoSx3-CaS!99QNT!A);62E^$G6hc zXxZ52-ObXzWuRZdZUg(2iour_Q1tpxI#juXhQD{m(R%WeoQ?I961q6P)|DUCMEAKY ze>=?JHzaaIKl1Q`;_Ho2`O<1TTw6C_GpiND&=$LGd-UGx-EJ;(5Zv^tZU;$xS%q7{ zN^hYF$)?w@PR<*z>i!uMoHDWvhXka@duZrU0dT+>=Zm!07o-w#ZF`&yg@jtKd?N}b z5(-L%_g`?eV`gQFch(6I&C=X_RA|vt59Vi$i7oN#5AZT@x_r|VMITiy)U z;+!sujl{+Gzxvwf*eBWk3xLvOtIp>*HqGaQDiy zZy!du3atL*cUMhxm65W}yhQotkPH9@TP~uctqgzStj!gjmHzn!o*mNFFDDnw^$B;s zvkAzf-{;RezG~Qy*B-txvl&dx%s+FWnjXIzQ-aFMeyv=|P#!NZ>$HZ?)X8nT+ND;` z(v1_K-TgAsz5*|OOmATZd*)(@73>h(l zfiyK7<_l|{V<=A+;9&A?yKf%HT^EN4~p0g2>$u!?Itdk;RUN#3;a8) zuiuJwbX^nb>3UGwaV|1WF~9B|j$P9#zmk(bJj1ZtewGgH*Fq1Q!3FutgHIZ(K7H`l z!SX}XF1rz*{%ArAO0HfbE|-_5UJocb(7e z__Dt`WG6@U>0?Og)d**_ozR|UW!E6*WNp5i4b&`rT9l_4B^V3);H!3shj&_1 z$0a9Wy;NyG-mNRZJ1N<2(|8&ayS@(UjyiZgiM~BogL3~JdGsZA^qnOh*2Hs^O{bP2 zIVDAA2Y0mY@n{yO?_A%dtR87i;BR(@;JmSJhb(EN-zN56-|z&Ez_o}t(Th=4q|Sjm zeQ8u@M1%&RA>9gw<9nSd%LJiaB;FR7@_gWL^@qzqn$$Yx8VO9!j7Yhq=5DEy@t+cr zqeTNk(We&7^j|!z8dIe;5{TX$Iw$t>CVV=ThU&InA*0JlyqMIM{-Yf=VvMMOVO zwJ0mfVU+h4ia$S%9BBGvg z)O{dB%ed#O!2sn-e}WZJ;r$NN!=!||51DN?tBCEUBtp`B0TZRVVe)XW7@Q}Aa`=A^C)S_2YH{4#}} zB>%|Ao^TJ?U(ZP0o6ik&R0W)dV=$l|zZ`F*Q3fIz%Bhr!|_;`%}jb5SRoPL(`VGu!YTqnLvvu+EB#`y?v_) zrHJQE9~k`&`|iQrVi9q>w$lX?;AXqwEq;N(eb6oCSKaze~ z4g~SH+9#l_f+9R*3uuX{Kp>$vZyF{IyYPQ&m7ZBxm>6W?4_*=Q=@6BwyVY=2W}Bki zuv2pEC#y!~YpZY&m}Vj%?GpM!#REf-b*f8&js=m+IE0<{%TY1p0qZrJ0WXTk%}gQ# zDFzsD^#1rTI>*!SZ>Pg|wHjT^?H}G@5;Gsj*{U_&Egkmi@3T^lkS|UJ9I!4G$c%1Y zDn)(W3NQYQ#cP?-mkc>@Eq^9pUzeE_pu&WT!2$tS{Wb6*9X#KsNeRkuh*8aOmaMFF zc)Do&Y>@l6E~cF?Ra`?Ex@TM2u-7qVeUfU(8*N-YBzUJBRLle*-UXzN) zN_t6k$`x4qOc02Er7c4`+ns8mKTd`?FpsE0yIs9xe0euZ^TE#`un+E(%8Pm5RBO#C zm_%@y#$fRLgr5BFJ`18Mt#mhBz=X>f`eEpVb0}jCe9uY1FVaBY$Qre0EsY2Qng&`U zUSzD%|5^6)mku5G2dQcR2g}+xy?d)2;6W!??53yjJf`01DF? z@P||uK*q*K+_Gzq8UD&Q|4X;}Z?bW-#y>f7hsaUTWAu=66K97`Eb>Fmwar7l%6`EB z5ZlXLFWyp(rB_8LW&H1-E~f*C{@TC*m3eK*t>xga5)it;Wn+~sp;lbU&^=~Y7}XRx zY9#u?2bT%0=Q;oc5Ygs1gGmqfuT4z+wk8-5yP|h! z&oWRh+i6V;!~jxS{puWp_X~~%Tx(IZku6f$Nn;bKji;; z|Dlb$DY&j(Ej#n0tZzUKW#dsYjw}Z+>oH2p9iokJTiB-M3e4R(SdvLR5$-?%0Gv%1TnwgFRfrh@37hOE?Y%!3BL3KPiRtcR|b* z7ncx6zqu8%y)Oi_-R}hze(f54OQ#jedC1iy$A>r6<|LQF+_c`T#nUrX9|K@jj879! zx^vAv3GjSxfRE^MFKY)#VG^3arN2BJfMVCMO-=nc9*QomOyj}>2R7;vk%@&*r31wT z*;rvj=*WDU(!r$eKknIZWTpc}S5{XoEN$~UI~8p)WOkCz`3I`r=#ZO?zZUF|cC;%+ z(i?-@xHA2fNI3t;1<)M-j7j>h%DhShJ?LUY@tTn1qWs7`)%PF6PJBx;Y8yX5?W#y}-?f2iOHqvfw+&^VdMH@i84mD01?;tYl zpvyPq8!cUSS*bTSI&PRQq4~XNe#kY?E)3V2?-kG@^qK53SLEt0#(#>#NJOod475k9 z{rE#4gugn>nJ|x1ZavH{tcc0Wa|z{WMnHt`F4xw7Dd_}Q$h)j;mFi1+B)&BZ9#||1 zSkS04JNN+bwSN5E8};L}7xHg$wpND#7=JTuK{ep?1n?<$KTMp(-LM?9iFgo1rhl!|_Wur391u5(nx=xzgFv$iWK&YoQ%6ED#oMG?e71SM$I zdp-CnsIB?%GA>e1Q;q5VW?mue0{fZ93@nM>aIL8Q8LoMJRTs^EQi&TDk7Y9sl(N2v z{#=#5xJoTq0mtO_dyMEg#8Ipn3k1SZcUgN4Eq1>K=3|DS8#!ByiI{&B?YSHZlT=5L zjV*3?DR*FrXaD*+s1crU6{qPO$uG(E*!d~#EIf+H^ycv)P{3U;E^k@7J4cQ9%h8Di zJtFcbt`}K5i>8dezbykO_gDOs&TaBdWIJggP$~a8)JYB|Mc%nd#OF%q1SHDP_Y&o{x3Kaj)qJovVT*P>~6YOq1Iell{WQ5-)+~(XH|?Jw2<*$ z(i)h}6zGTCz|iS8J|A8-$+EW+kd(GZU|~OhS-alCFErPoMLmVH$P*ccR}0^x6$=^r>lC|O(go*X z+Qmw&`YC)+dRS~hh*aXAI;6*Ri>9|xwAzf3HrwwZixg31sYx)z7dcQ(G3X;^D4@Ah zu%R)HekMoWfufv0L*$-=``z9r$J{1P<9=sLpn0Ei2ijryt%~J0gRsT0KpfMubWud2 zQc~aNs&&*>{}_;YrgaNEVyb_@z$Sag%vyy31Sw4mxak>$09N=Z^*entGIgFYKJEPc zUEkTAe6x(ae9lghLMDg6d$#k48ok^l-qX2bnapU--?Ff7yr2 z#KB{sitXUu;5FlY{FS(Rl5MTaOdG$=mwmpbwKP6C`5WNxrl0c)37g#@Nmf&i|M7eZ%FXr{wpr=F|m5Hq~}RF5_38~7ZVFqI_n6b!}Z zw5k6)_VSS~XTrd#rr2LEHAIvhofrR$duj?f{!c}qH?N{jV|#}-B|NL0c+m1=JNodi zgWe=eicEeuK~XUeo%m6}l%7$tTPvN2LOrMs{Ou;T`!&kpso(fxNKugnsh1~d^ZNnD zg3S_X<0U};4a&UZE*`I6SKPj1HU5BI@!f2)7z1+~v+ zBvNQ(wkx=ZXvRi+5E@E(5x9YDf!DVKiyDy&!mfut4}QzLe>VSQxAOvcHLSCPl`)X+?N}4{+h`_e)>!=CFkFRR zIC15?5kN;Wh3#+YNUevOJaNE7P{||*yq?x`vJc$+Jk$GZyo?1itEXCn(XYU0h=GBm zf#OY=kiPGt4&?P1JE4OixOw+&eA7~iU7cIuWUw)(2><+ViG{B-;TJc1I5l$LCM5dB z^m!e~UbpYLVwN^OC8fX9&r{Wc>Zkp3oeP@Ig;#ofKb+&RWU=GS&)SlJ+m8|^=?A^% zL2SS^(_LrI;MT2X)9-jR8ep}zVZUe=;! z9I=d^%oLC!vMBCAi%8XRX})91y7eK}JDJxF^%aW3`<%vv=f`c#n*fDqu1P}6-yLm* zboL1F+dXpo!$s^}9O}&6+=!JO>sE9#9*1S046DF{sS-ZVSbSo-9x)$>RG*RY7BA$s zg)sjNZ`VtG|De~OAm0KLlW;R__tzc7FaIE)CFPdNb{v=)Ohv*KXb*K3&Nk1IUqGo4 zcH_zF1#H{yd`UfaYyj7ZzKf%FkZE6}o6`@8%1)87rdfM^SMm(jCIr(vdmxe9LW|I; z(Zy~LOZ)Y=nr9K8<`LsmPfor_!mQm56}Oz@z3+^B$d}lmXDqTDcQtrHiJjAU6u3!J z)+Wjbx&{dU8rD09L&wtr8PEb7%Wu~m!ljfm)=lP<^qS;SOFE;n3{)2K)xIN4)qWE} zSfN}_gW(DpoP!vRsMHe@&OPNii2#sUi$x^{LC%+FUEDp4ax}!x`mem2r9Hg;{mbq8 zWKG%Q=}vh%aLA{Vqn}+7@#9&pVLz&XEgoGA*+kUwZYqZlGXesqzQ_$szPun^OK^Ik z47CBJF$DP%UXI0yZI4&S?#@?0n&Q5u3qD8UJ^zXDayq?etT7~v4JrC+xV1Gq>DTkO z)P#4x0E^e?g?){cWuZUuH@=>|tU1fY$7kw<$3AY#J5bo&OsVV}YbE2ZKFFEV`VZ(| zAg|Es41O25=To0IUM*db%vc->pdr$#F@?&8=Anxr8T|KxA6<|cWR0oBsjq)fw0vkR zUiBWK!8FITM96GRBVt6cM*yPt!P zwf(#vC-_AQgo+y9suAWDX7jnOPB_P*c^?48L?5Qc()1NPG|*gVUd(hVC7 zT?NLj3-561E_O=i_x^aKOv!))xuY4zd>ur8CC9q@$2+#F-H6c%(}`KTdf(l9Ei?vZ z=22riOByeECZLa`nt+ML>+oVvo6Q>_OBZ8rtp_dZ-U7q699SpcAYn`t4-0|}bNy1@ zwp^&1zy1}lqvIp_#rv#H1;f%vJzJOZ_5CC36wuz&Zfpuuw~7QEEwV*kKZ)~F_|fkU zq9(1vIK-^d+?x;|Jr1`(dbhsn5FbUrYhAcWz9^3$Vas1vFw`=D}(j3qrQ zh1EPkF;d0oOR8V`n4E-7_D@)9NfSQbtIyR|=f@}u89)IeMF>r#4&#M6W4Fbf2spgS zS<`Hfv~&X!0|MKkAme1tM0hCCK+y2;xX1fUGld{t(%m7{!>&zKb9og6w$2+4E5xQj zPno8vsinRM_23FEb$Aiu{7{U3Sk7;A?%Nkn@VwE6E}WDNjc6+h;ENYBCR~`eCBf@g9g}>OUi#O$iAJVfplZ z5*BJ+4>Xo-Ao)3hABy~x?3QOm(9?_JGgCz}a+`XhZDybV zgk4GkB3CJW!1MTfyJzk{!r+GwX-sVViKA?3<7JJ(9fEcgFhosmr{_O*jZ$fWD*nrt z`C4PeZKLkdkrPQo(y@S6+b~(rd&iIs;ma=`&B8i$nhfRW8RB!BLvo3eP z#l}mlZfSqM3>%~;qK@;=Q31DJZtf026V{&SKueijSRg&k`xNo~{O#m4BX%i{frchN z^NhK!o@;n`g1X%fH;us3)U1euzL|}5x$c5pbtWONO*E`>P=n$dbwW!I(dVmYmKil{ z?)k2PbXK5)@QjVDRv@GKz0I=#8$`iL-pt0M=ZCQQe9-Fs(GMkO%mC*hI5=NaCnGjt z9n7%Y`Oeg>h8_G@p8=4NPxF^AiWnpruPl{TU{&Caa_*p^lx9fb|(C z_~)JkGq$Q4=I75cN=kfVA^9SXH?=z48AaiXU`ZS$KXU)7Q<0&vyv}uig-DG*WqJF2 z1%`Tr;uESytLE_+#{a$8$e2x`GEEQTUjVK(YVMoNzTR4l^;w&c3)UgMy;`gEeMbCa zi;8%*q`geN@S(Vb6P}&6q^xf*{8yTQ1GjMd-FJ=3jXt_t&H8UP7$FQz1Lf4*3jG4~ zq@I*GckD*?719*(Vf}dio1F(j7kitsid-)aRT+Nk_#THOD&TieQnaxkh*3^kGd2mJ z5Mm10e#`n8u3fB{U)Gi#ERP7>!?0E(9{wINL&{nMgfmFhAh|ZQOFWA+J9wKL-P%qQ zdBd07D`6zjb?oFfxX;V<3sAWkXU8YCsvwCUzRTLWE>FwMtm^?Myk|vuPhIvc|6 zZ`)6lTIR>VHr8u(SmGaD zQY1utRBl(Ng9}6b^rkP~6Bv7OR9WN^{oSS2)TN^Tn9PL5h&l%U(d7zIE&6w#d30 zMr|*VzWdkfcm#CbL9udx?8j!;>h4iGfYx2)bl{FfBjg+{0jd;w^p<~2JUD*ZuH13y z?_(bj5=T)pQjVU=SahcGY7TM?zy__y{eY??0QliflY9jJO|E3Xis}kWf>6ur8 z4T^~GdF9G*zWT&@o_!zW7@7?}1Ov>Ecdy~`M^RegP7(8+&kXinkYrVhVFjx9W3}7s zbgnJ$@@3c^5P6Wfrn7Wx4Z;5&Bt{KX$d{1QtxJiUmMx>{KL=9%pNw(Xe~pthR~O{o6+1)fj^QjH0> zTsVpK3K1M6dDP*~NfzVgQ}c+~EQ+nrC^?t9Cv+Q;q#5D>hP6r7#}x@AliqW*i1F7; zQ~B1V7)Gc;mNQzUmO9}W#mCqO8?D_Y>&OV&S7{yVta@0F&z>H!J?Rv;0nWIy^tF@a@{ zjC?&g$tW$i%dZ3eIPp~IJ^q-`udPz?UtD)^USqBG@W~>8qTADc*?Y+y!w=(PB;5Li zvaOt&{@r2v=Tv(YYyhpRV1&jcHY+GO#3|t)nJ*zd9U!oA0*8YuZQ9_;hrL8iZ&pOy zgiCSUhMT)-YHmr+#0hB}uFKBay0El0Y4AW}nTi4#AjH0GSxxwCN_c>}#tu}2Gsqs; zouY=%@lKIXSb{|auI9Y);+++RZK7m1_49HLg*8MY;Mo;|1J(lq)tG5aAA|t{nFGFU zb0kEo4?)~&v-}XSowN2L=-eNgXJ%$XCh>ls-U202%;MqDA?j~qfNs9U`9qxft-aV{P%BYAQ8*R{fz@ic>qaIR+cm&kuTxi!1o->XpyDr zGx0h;{Tg{sRh??0r|aqlLto4=u%?Oy_;rS~DdJF9-F zn!y!i*rhT`U8u940B)I>i_V_du<;~KDE;i$o<1OeGZ+x+j^nLQ)^m^>R0^aBP%b?p1H&*}tg_P0)=Wcxj4)}k+4Z$~c}ck)BKQMogk@g@ z2_c@6YY|>9Q?NfJ;2e$nfOC}S@{eu-`Uq;zv+gQt?hC&~Nou98A3n@V1SD;s8ml|B znr|srmd)S55uXOOGyl~MLqMP`EhR~GKI~Q!Q^BTHCLS-o)kLaqt1A z5zA2C?#^jRZJ!xXG(XklRR4y|8$9{3v|@umyWl0d{w~hx{ap7Is$zq|b448&WQ4Nx zB-@J_zGsLdt-{PQbH&F^(SO0>Po*-8?B_8%Fpt*$qYo~7<{ub5{#Lm6RLsZ8x+ge{iZo^uT7J2;cf(xjFk#BNXldV+t&7xgWEi20 zn>T*#7WJC8#--1IisyAZ`(ljFUxM-pakeN*@J*DWra}v6Jz4?YHdG*q8A)if!f{_% z;ALMC?+&=asXPo3eQp8cxJmr*1My^+hISA{!Yl@edn4XwrWS$Mg9z5Ddhgw z1TRH+>tKAIQ0mN$u?^>6aBUE}VK|P76gPNXJ%4Uyesr$CdVPPke(1r8$BzR*lW?pr z>f1jPm9f7&?W2C!F=XPmZ_nay*Wh9Jw^Sa%lcIUN(`je4`!7r{uUUUI|I`nqW%AKB zBzb@4K{&audRx4lF0sHCSpVA5YQNoyq0SK*4ytj=k)%AH2-|>VS4?eQ@Yom0#DueF z29lRR_aBc-y^iTA*nboi!M+psaMG67{3%Br7Nia#Fw+m;mfn~y06~lYdNeb{EQ$ng z^G13FCjo#lp2%3r_!J#l)BINIL#_3aJkWKKg7eoLO2s>i+Y^WDKNqFngf@6rbN#+q z9J;@@*`WCGS>7-*GvOM%R_C<82gpP_%Yv+rR%yB48XFt+3OT0$9coF@wF?wp^FkS&1oHirBEwUauqIGDLZ7~Pi zf(yT+6WpHDY9jv{?e<1R+e}&NZO8jGwcypv_8IM7|Jo8*e8dPyfQHg~f(=}N_OF#c z2(6$$?Nu|_KkR${fhow}e&%6$H0*SL=(fCWgXhod0QYr(8XHlg_!4Axg04+M6EkLY zO2+pG7~4tqCR{%)L9v%K4|Llh-(=W9n{E2Dd-%o=s@)EhbP!E)r();R4W2eP?-L(@)rFG539@r^1?zKrX4MDy~$tg_5D(24a%=csA=?ky)?2eC95Uefb0i zRTgy{i|r?!!=xNIUdsaAr_fP=iShy#=SX~S5vAqHCTKg|obY@Py?K_qW}(G#zwp-- zGHzoAF)z{V1WZkDI3Hg4C7D7xAo7{{{2CjKG zVa)2oTu=P_>_c%5JHzjkFHfs{Rp?{dxDC>!NDKF`j5;Gho6O0DjLMOm3uX|xTGlu& zD*orI@{<3~0(L8qG*W~WO2+*moHTi<@Tc~pjN$(AuV5aY;NDlaH68oG zC{eh_j&*hz<=SqBG`QqlNnbmje60u)Aj0~3hthlLJ%CD*KSR_Q&*R1)P$!TM4d7+c zt{tqYfBpTmL>cCSo+}@CIl<|E9s@FuO1gNHxjMCjUSF!X?Kf&n z7H}Dpm*LZg{*SkJlL+WB&q_9D0xiC)wVX5XklA5Bz-95y?M%pvuRic7B2{m`{ab<7 z4u*k_c;3X}O*hSq>0&cTp&T8ZHV1jubpQJ?Oq@*Lz`m=)+oBSN?Zd#p*D?9E!4W9? ze(Nl{E;3X17~MN*IoZOI#&?H$-{zLr%nl)3G+!QcRpJmc(Tv3nCBM+RW+^kHJeHB` zU_qoDoaf=Q8-pVI0ku0VYiy5e4>D#POC`!<2VL(sON;a+lv@q5jt1%`eSa+vkiK@& zwf+xrNc5dlkJB%T^GOR+P8rbMipXP*;P;K&iR=R|vVXFUc!44`>~FEjy)I`OzWN zAm;gJ-M^rX^k$g`+3*5shXJ$t;8p8~ekUa3W(=}Xe31WB#)mF28Jgt&4AGQ2qHDSC zD_U$^a#v_Rz5OJPXb~!!&CMbTQZ*aj(_5B6J$r9*CG6-IQgpiy5)g4SRm>1UgYax$ z+p=fs7~^Sa5=aLC)D=M3TI}1atETA7Bct)if3DfK(^spvT&v){dv6BwY(+i8D;3Pc zp^Z6R_tUL?`4H}t^99G(M>`IQHn=H*N0I3}@T`jU!rJe}kMrFDjn=C-Lz?hB3Sp3j zq<$1K|KkFzw|zQ?2cj-=B3-tRbOErwA%{C0bEIa1x$W%-6D%b3Q|=xmWVP)98bTmd zY`;Rnm0-dFR8QX@fQE$j>Vy+Tt)^H{Wh=#CvDMnsB7{HiEx+YF)~Lr%ShiuH2?lM& zICaVd^ciPgdpc07_B$6557OpF91xu86p4m_qP6dwl~q-{k?PsjKDOTzVvf7Nv%2;1 zn9Fv=s*uMJ>YJhE(p<`YH2lsma|%~hG>&2ugv~|$GJ=BgL8^lyE0vgG*58-aQW4m@%4vy z2{=a@2w$y&kXHHSQ!VEXG7O z9~v0`%GL2wuz8l3MSH0)BnJuinihS9cBx^$PHeF3ZF*&N()|8~rxbazRz@Dvmq5C< zUUmD22kYBgRR#$TqU$<>E#AuoVir&^r57D~W-ie;*wZ7~E>0YXu#kPESoXL005fClUJMV+EklTkj|4&BzPpETGB7=W5_ z)bx`PDCF8eQ`jvx*nxl?(zMSoQc{w!&1h0?y}@u*D7cmB!#xlEU&Z>P)o4<^WSCRe zQh}Erk)az-DypR`Ulr&C2X?kkUA`TJ3Wb9MVTJtu3jWC$8;(#6@=%PV@&JcD}$ z3b7xoP5s-FU>mo(4}ALJjeT(dDN+w8*sZJcd1_(@{Ok}pzlj{-AwrLr6oVn4om;^3 zrs-#;DYa&+Giy3Vd6k#mOZC>9y=tRBtYBhb{DF@4$Y^<*%L?`Oxe`snMNB^Z-{Y)_ zfPvGXRn}@X{5c}2`({6;T=(vgIvYJKkfkiHaQC0B#gyZ}qrBeM+NJgj;j~2eWpmuC z?*f+Ar&qciO=4ySodNQJXUL-*>nO2O?PST;^X_L{(ZZd_-&FGC#I2mOyJtf(1UwU! zTs@B-)IalBK1fy%zUK*a^Zqcq$A0at`$@KtEU0A~c`XjF1Dg9;wYu(h_0#ExDC7`S z&qkdbpl1$h=1-FGgbakeH#vW{nVb8F*xc#c{Eyz1a2D>t_a_E1X+S4d(25aJmwk9I z&ni%Xz}BJRPV76SF8gwBlXjuIpEK=;_0RMh)i=|y(eEttOKr*nctK~*qxTP0){ESNUy)HcIN+zv5(1xG}Q|FK@+ao*H%1iLMun6J-qhxkZm`9?&fB6EG|_ zSx-#b)V|PA-qb&ka5q8*TS=fCeEw*?ru24{w|9SO66z6Npu=S-Vj%Qpon+tMl`H1a zIr52ag*W zQgD5PiH8)y-E^sGVf}xVU1e8XO|u<5xVtAf1Ho;8K|^p4F2UX12_ZNH*TJ3O?ry;? z$ly+J2yX8@_aEG~&iC%F(_LL%wRdfGC)=Od=B}VoX z;)v_)ynfs3unM;-ku@>Qeh}VRG7Or(R!yh6XcDJ4+|W{7WoMvavn%5RWqv4G zt0TbKNWl0ktF-$H-WV#y_4Y_h{oKYIcz-+xG;CWZg2G4%u17piw+8%Ys;x)0)eiZL zKAS_!LL2GU-wlAJg=%|MT0C+rkgZf@*@h8nV@{5-{J>&qhhphB;K;-Y4$y!Q8@-4WpvDj~J=o0gpXwj)QANLnG@ra+zAM z0;}aLRy)ps!eeP0K|I|BxE6WPs}8J;Pn>|4fN0D^eiH3<6aO~B!hd3)nY(K3QZNibB%bT zFFkl(1j%s2Ru<0;wAT0?ZLl~Ld%U{7ZBUyXMaE?LTt&dr_e;*Gu#J$Ako8$*ak)YI z`C5wqt83YB7(^A(^8>QbmrkQh<5@8NkApN=gxDKnN!B-uV?dTAG-L*&HN^O8WOPnK zgxw{3sWq%_S$G>NjVtk-KvH{%|cc!SjnG z!@%s+Iks0&)^A3m)9;XsX!yKeA=*UG52tjIchHpVE+hBWs;cGsPaW-NB=5X=7m95C zVeZp5SYB!gglBJWm{PSmj`|QHtKe1uC@&t>5Rcd;Y0+ng^>(lv<+>aU2Jj`9M~^p> zn9O|<<8iX)Fijdg+EMV(WYysNZ5jE_B9_zp9vMPfFkWNuI<30SPek~Nwbz(TwXS1p z^!Ov63CyDVyrc_dcOv*cnw~N1PX36MA&e?b`r-F}Dy$I#P^UH>RwjkjT%>3=hZ__$ zG?NYCB6gYn%SgpS%wceyromTOLfkT%do=o*vTfbk30CdtU4~KQmUM+nLEP_4U_ua& z%gAN81f%u8mgaBYxX5p9gfAQt?AK|>)b9`7N1>0kzl7gC-6l7Qk2Ka|h-)^{rK za1cUPbW%Q^)PUu5k{{wUn=*^;HHBJY?*;L8uEH+2hFPcWty&0qjO`;}8%AN(*|0}l zRfwU6)sn=_5|$*4#4}xlcifh{CBA7V=xg1qF^a5pIu{E zK3`qkcFM$5Ip$k_U((l0a_kFp;i}k0*F9!rowAw=IR{KPF5%(b5@M3)zg&=bL7D0S z613M`@pi2^Zw}bw58<4?u6Q6@ts7#6KePUud};MY_LpI=^bnwt<>$Z1U= z6Mg%gdPjZMC}S)g?bZbi=2#tv8$_%}nS%szOhQw$Rhs4~o++{~ZAS7x!blolasca6 zC0A}UVR8W6%s^%DeMf9%@Yfe0*@}-vjqx}1$#mnZsOsZYkL=#k)e)^{C*$r7>L=rF zrEEPr$7yOD4OMpi`ukoq&_@?xJ6r%Suk@#!SH>xI{eAu*AgIcjNpk@cs9hJF=lwEz zv+639=5wX@p<_%kJ*PIQ};8XKr8JXR3kiJL$3g z4vTZ?*f@JyP~+1duX<#K2Mx^!EaU6;WgQMH?iBNQu+Io5<88<#{43T}ka@aGrr4}0 z3AfF=Omz9uU*+|KUDmz%?_<(Ufpuz-OO@u3Um61L4WrG<+$5=%Uv`EsbPUtX2?&fJ|h^kkc2WqNg+c$+VM2?z(DHK73| zu_8D7*KE@1VKF86*8j z{sLt4^4z~#PA!>l?2nE7m4iG{6C4!BPB5)e7G5#!`<#3q;_MO-wIoc5!T)iWPBLfw z=cL@M0)VwJF(?nDNW{fq3QtF(!w08l%u#3FfjU-KIZ@ZdqS?8}ADCn|X1t@Qd7kVB zJ~&J=(`f@!igZ4;->p5h|9ZV@CM5}{tBff_l2}{&qj5h=|K!Z9EV}^RlqFMLlAK1$_T98inJOu z&5&-sGJ;#snmpvi-l*N=*f6Bh7qh96u?Kn$tC?Pv~2|DY3J3*oG(2&RX zaO^J+akl}fy;|At<}!B^rr~pJ9ZG$L%3`uYl5T7?8*RJtH=oLE90z9UHCL|(yUo-B zCXxJecIpxOQG<(PP&S@s)StKZz>JMCtwnvNw%fa*i7N`aR>!J5lqx3zrAw{@xkZvQ z>zU6`r=IT#vVG57U%wW~D~76Qp5e(|R*oMhbd|WY3~#atm@i%&)?@xOaqxO+KDZnYJ)JUqh_Dx6 zh7_6wl%6K2otJ~Bu_8onDo@@M-e14n9glAB7QJX;!(sfDwer#qb(?_bgb6XN*3mPXs z4>3kWT_M4xKfS4EZ&V@iwO|gbhCy!q0KaxckCbj9I5ux7yn%h@7S8$B&(}pWT=~Ep*7i2iHDa zN+T{hE1dwthn*=8x)?6bVHrrJz`0acHM*(CCeO>Yxcwn zTMCIs=bo0`HVL{EuRrJARp8pq^9tqAqZ9ew9)-(-{U2>f)&3y8Y|6Eng+~j?uY(Ch zMJ>3WA8-W8VlE$3C_5f*eHGYP3tODj)S#{g#L%YNUjnsD)3Wu55+(-0N@xult_J+7 zY;%$7^~T8UcT~F<@w@XVB+hPPs@>eq-!?-Lq+0iKVA|BVU(+c5Q52tU^6PC4N2u9h3qIs@?s5}7iQk#?PJ3p8QA2X=a~JKC+uzKQXa)&BcL zP|cIBFS=N?*~fQiC5qFm|6UYwMt!*-kXZdD6aJc)w5qNbBevOA%+`IPC~bN$cHIwZ z*CqEP`oeCjBIf`v3}u@4Xo(_zYe_B;@gFY*(o-nCOiM{QiKY<@>?}3K?9e$(2N|m8 z`WNmj#+&0dZx8HHpPeXs5{Yq;>~2fDmTf#^UA92xVG?1Rq4o^Cdpq@Z7gEN{?D1Cl zxp6sxA%R|?kvAW{q;h=9C;dIc=K6rsbqyX5T47}Xpbg8;K3(5?xf*kq%-AmVFb4tm z>-nqXufQWrtY&I+A9H5GW!maKL8`>#wg`NzN_<$nTFR2;C7l@ViiUP)d7nWnFH0pj@SMghoOy`uIXd1yu~r4%ns0?F)C} zbk0Uv22!Pr*M=~t`~_JxomaN6jtnvb+63t<4QPz$0Dv`=rdx$F7{V`)C|4snwKn|S zIkiBaeBi2t;|9$fs~qZ+-QeuV2gG66uEFOn&>^REEpLt4o}ahe4#e;`j&5u5_s}DmisceV;YixU(3q=uC#X{U(rwjv4oSwddvogiCo5F z8chu)X_AxFm_9fk#(yOt=|`al$}ANxTBce!j!iRWS9S(i}J> z!(lE7=D}I{edlXNEfoXa{$r=1)e&It2;X2l-Phfh_zYwp%sv_X_?1 zqs?KPhHN{qQFHczkr$i!sU{KH#!JV_pQ_v}CQor)o@G&(<5yNw+YcG- zlXWajO!zUAL;j%KO@1^Wvwq(*+!vt~@bB%iztsO%Yt_YtX?I@0HHg`koAuqs^REf_ zDF5~ln^hNmS|ZOHyEo{72LI*yw^nB-KS&&rqSE?yvB3*{*A zrykHZz>V^~)kI(TD3Z6n=M7#}yA3l^BEw<4<-t**JF4Ypyvcu;RwZOQanI1h#htfv zf}A;}eF3butLeFpR(nr5Xy*-DSod3!VzDR$R3=5^0Mbs$jAo*(|s9SPMm7MZOKcH{J?p#g7&va#`Su_%xB7k)H*+mB&wrzq-- znsITfx4>)8C5&)jup2c6i9BJ=uFoXadH8;ayn(`}EsZnRiU;R;HfHfd@&@=s zyCKt_O?D_$f%J)i204Sqz{bUIOifFdcIIXIknF0QXfP8WA@yv5zyiKl=_#c?_5_>bEjL=1lZ3eJYS#Im<1j##JHzt zo*RLBw9Wts9c)@_(4F=adIDi~Jv{+$8%hE&SR>hrPgke^txUxhcU*F&@NokQVBYy` zGP8Mi1HLH(UO!S9pAGMAWGUw@RXEKCCeEo=K-ID-Qc+Jj$e_Jf zzG&jPFmXO;LH!j_8q<{Q-CqR;dyIz+4ePJGrE4r!brBU&NvG|&11&53Y-q>8O+Qyy zi8w3mA{V!;R=gwh_^@BjExihyOBhd$G|rsfVk9+`9xf)Mg334)KXA$$lkJGoI_dX1 zBSM{>DP*D6FL8C93%hx5nbNk+GTdd6#QnGq)^@+5yzqOLCUu7tSH zFyN>W`~qjaj9>~e5H^@Ac5mY0!>5eo_I9CKrpf~6S|5y2WTPIQoteJ{e_(d(E|@ZY z(G#ao)lhUrjs8ol4>ybpgo<<(O*kWYwwN`=50M6c&hMud>5Cg&+X0)lvG0Q*UE$j^ zsde|GQ9A#MogCj#gl+dM0*cFCXK1V8KmYjm!YUA&vBH~-b%hZ6_-nB?D=vL*ti{fn zFqN&+;*)gQe`e6Z#SM6vr}jESI{%%Mx{F>>O||_S$+DXe%0uv@j3Z_s^DC2)h$zX? zp@EiChtSRr>FctS{-A4&cz{k$ub7R}1&ChtZ<$*C$*tS!K_G)@>-_K+_tU?&;xDW! zr|!UmiiVb;u~hcWI(ki*URGH%*t+Wu`ldcLH}yO-CxnL1N_o~PI+T@g{gKA3bihNB zHw%XZnF$Z|n_5I>aa)j-IHJC6^t}1~Lb4Rf#{{nc@YO?v&2bkXt}AU6uDbXsjJc?* z({yL0I?;mgb@ETksb&gL2S56|Hi91l)1^>0dVDJR{&uKqi`NVVyADrkM~7XtF(@Ej&HH_hgH@fWG$uc#w;LfN${qLtz1sgstf6Lv%z z6ErxVpNc3}1g_SzzjVFymmD3F|Kq`$`%X@zrRtuwP{aeAxfhQNXl`+?AKqhEBr2;9V!F11!y+lt#C3R=vT1Nod~e zz)!f!2>EzjJRMts=8xQ&%n&!#Q+1yw2szPQI?fFm@Uf_Py)N!Z#e{}*{O&Ti1kym>|LqcQ6+G^H) z41fR6RB^&<*G+$pugWYjv>%Xj%k`!)*fc9Cwu26@7e}~){SdX^k zHyveI{026)Ho?*<=d9s{CF`Zzd#B>rjuL)4?GhZ zW!d1|vqXY|Q8g?0DX=(wElBGvmCSFW%f?~&NJgZUG|=o!|J(BEWU4*fp<}G??uQz~NMb2?x%51y}zyk7|U=$d7@nh8gas8PCzQ zXBtk_9Bap39b5?n;~9pZq`f%__vkg0Sl@q8$4+eEjv5B)VtY)_u1r3mKn0yP-?3H7 z9G=JdP_B?pFgv$c#9wfbXmwvBTIHlB)W`=|`{;lZZJxJHB684<;om(v~*ASNeRJ zCJl{eU%~R6`SWKmxXA;H;xM;!hbcC59a5sE!aea-GiKs9OVp?jN-r~|Q29~~_ecfk z+sW~Tb4kuLtCORv0wwF6I( zh&vD{ZcE_6NY_)CWyGV^u4$}pnJ9_{;%sEJ`MJ8ci71iH7lG#torC0BDBsnD*3b4} zJ{!e*pVXf=E+0SWx}e-v%Lu^+(}~;X%Vvi;A_4*7K6fik+_!JSXbgKCMKp1+z(|2* z#N0)k9VyXe^j&Ow0w(iT3wviLf*bW|!GSh-ZOz~9?w?D8WzgA~Da9#iZbeC|mz~6E z0GaC?L;HLZNMB=1MSV+!b6F8e3NK@9)IJ&;!f@V1)&aGdT{wR#dzo9d$vv~P(SB-L z48B**FwB2-p4szESrXsDLg=DV*>e}((R6SK?^va9aqZu=2pbtgPt3_wRB}k`ShaI; zmDt_;F*<>Yk7kZH`J2KMorn!eOGawK!8Kq^H`HVNz3cTI!V9j?6UxzP)bt|%XU8`h zgqM(iH;kgyMTSZ#9PI;NKgEyz!b@EqWS@(o*s$lNi0qEV_!A8NlIXMHn@A*wy!JAVEo_87%R&BKuX zL{r;E!>F!;_6^R-!0E@v`~HF(TJ(HpX(Oo_{=&m3I-(Orny@6bw-(ry=x&ITz|Jtg zuoWtpx{*r!ZoolR&Yx&kh-U6MjYn~AD4w=xUh+2&wcX0aNYG+$AwC39IGsRm+ZRIX z9wXs^C&p|}l@e>eJn^kyi<`wl z!alJoed6Wliuza>qy+G@GCUQjS2)QOTYKk6VPGjX*AQXfo%>qUdU81Ruc@oH03VQ} zr|qj8{NdJ}$vvirx5uv9be2a^K7K8Kw|9TmRQYdg;K>mp&BXZIJ%k&RvkI8UlBo|4Nc<(|JLb^raN{fGYU#O+?I}ed;6LT;PqPHy z{%jau7$w&Lbxy5H+z`FsB}J-ap4R73gFY!vRFdv0>zTe1;+;32)gKE1iNem?69|EvgH7aQAnFP(k zXUZ`S{1;O?LHt?`e_8zLdYF27?`P(F@6=v63k8 zR4e6L!!T4)?ECFq>m*2>!t(dUpR2;Ek(B2jx^#lnMeB}J#4hb9#t_p{`u zu=pN=cfaFNO?@wt4-zt=l=w|B#ycrO3WT=gQimkB53`j?Gcm^=AX1AG?aMQR%-70| zV`}64|JEJ5qZ@^>n06jHt|~VHmyR$_>rDCB3z$yu8Ys9$J>mG-tVuIH->?-AR~<5! zpv(wZ`Cfnc2(6<}NTmJoJE9#AV|!mn01o%Vl!{5@`wblPpxrhS>Xpk}QIpz&AnENP zpY1pFPPx%bYd7Ku7814JI9geza3SILh%m0(O`C{8h@#@u!0Ws7do6k{@1w|30n!mAY9ZHlrNUny+Em3oyrihRS zt_$vivr@je!RK0M?7Qx1tx~gagw>hA4G-|)bH9Tt`8dZ%$)5`pF|oA92dhw*UYD literal 0 HcmV?d00001 diff --git a/User/render/assets/background.png b/User/render/assets/background.png deleted file mode 100644 index fc8f921b636ecf6d610faf78108b9ddaf946f9ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304850 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

a552%I$VSeGKa;?$Jnb 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

JD9WQ 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 diff --git a/User/render/assets/cloud-computing.webp b/User/render/assets/cloud-computing.webp new file mode 100644 index 0000000000000000000000000000000000000000..1272400093e3d05f11f706caf72d98ddc1b38a72 GIT binary patch literal 11780 zcmV+fF8k3^Nk&HeEdT&lMM6+kP&iEREdT&7|G|F{RSV;`jU1W%x4k*tJtJZQGFUc* zD38f3og)qiQ5_Xh9J8UuQK_X>Yx;>Kk+GzizST`TIFn$`AB*b&K;@F#1kYi zV`iqXbI;wR%*?#JcVXb(JFq)5_uS3XJj~qto$q|-e)oK(Iio6Ug_%#KFmK;nX0GLM z)`f7MD&{t@imQ?0JeJ!q^Mu|ugEbI%qgSg2`6O=!z&xY z$vWCHqvfzurcjxg@hfb!WoAZe%goH&hLb4aP30M=)K41je> znE{Xiw53jqF5ogiTC~&By`#1bQl-M`Y`_py+C3c(6&8MV9%iE=53RbWI94hN6GXM+_*&%IOD0Kkp_yjmC;842swt~waX~_oY0uCEEGsqSI zz>K49dv@)fjVIf-ZQsY$&IE&Cl4ZI^xV7z8k^lgP-K<=j9)^o!qRW zZQIFl6}Z*5Eo*T1(pPYq0@mO#3OzH>(K@|E${fo7{3FCFl4}B(j%?|-NvxWAHy|MD zE(AnfWN1M^ zuLi`P;OfUGtLZ~ag8xOTiOyC8M4h0xKh?Y5t)4#m5im^Rv>{;LZ7S~9g7j{6ljHZ4 zAt1UI9}smy|EqVar%%^Wg@EC8@x_5M;iU0hJmmBxbuViQciz%x7 zQH2jAGA3*V4NVD4!O@#wS7}|j!Md&vsV3^6LW-G+i`Pnh9LlTL6lUi2(4F0t6J&*XJ<|kwCN}--hl;PYuDziW)$(L$-%GD3$b32e%q69|7e^8OV_Beh#`LIXwa= zFRB6MX4k+C21*%okzup;OVAzp#sRp!fnpN^ZeO5*ZxG>(=#H75=?B$?0{ho)c?Zh2 z;faNSXlYwPg3!lc&2a|Zq4J!8uVK0>yGu~?%iGaRlmxOUbXY&78^pM;{061F6sJ6N z`mZ6nD&{K`J{iQ8jl#Y5mW=#73LjIC?8kMtWUV$SPJO6iwjzE$VVLCF$n_NEI*!-K z{M)xEQ#HO64@)S@@PR}{SH^9*&oivgW{=_&h$?+K#aKyJ)>vM8w4>(^vciU1ER&l+f z;;*f)+S8^7jrwbUw-pEbw^d#p;P0;d=75#m?16YW^q^QJQej;w>ei^#69Nh9igW-MvnuQDlpj6Vs9iUR}f56pjc@HQ@ z(nN;r_p{I)>8TE!tf&Q)2dscw87NiML56~KN4~KJr|c^L#UV1dR004L(%0uX3=rWF z=#H755r3S3lH44l!2b1`UxTu1cr2Kb0HS4Wf&{0v7C3|MQ2Ck~km%=(qOSr)V-v!) z?hZ6ZB!dhJ9WFpQ4j=^BkaUOQl!wYnTVF$5qFAU<`1bw};a+!BZwf!6@QWZ_pPWfU zaq2_miv!{p6NX7{j-d<>KP*Bv>wZ?^h>ubrYUax*rYf?^ zmh?pDLp>Lhl{7k1#QtCA0&9wQ{8PT|2R&z)@OM{neaOmf_CdTHdeG=@`RRWbzYpkP06qMm zUR^3milwX=~ zNL+?QhfteR2my)i?Qvb15ECSE{TI_E1xPH0M2WyKLdYtu5Ab(aezVWYZ1+Iy=!9xQ z2uKvIxZz;0!0)0j(sq#>A<-bPj1*Gb-!0TT#9^JlK?sjw_^D09cWn>q@wY#9d0vD> zkHC~}xDNnU5yUzIX;a|gm<3aQ_N~xk=Y0xn>4s|$APBp zbi>{V4^r9-v^ozOsh48fBv-CkL6d@W;)M*{kW+JINk?0zsFSAQh(CYbEOva*^k>o)cS0BneGYjl3tKL`u5^{MEV4jMwZE zB)SB33Ufr6U=_o(2HfzMp1V9R2(3~Ldrc4sf^CKgT(i9zPl1F!Bz_AT6_^Vof?XVb zJGfxPOWZ#DL!w&HsOSrjh!54-%z}rwnI}V{S5T>ZCxA-0-oXHC-mzjx2nC%wEM$V9 zHQ|n56o!IbLfbSWq!cO$S_8h$!6RaVB<3Q|3R-nb32F%1G<-CS_ENl|en{LC)GA*~ zq`LNL6tv|D_XRz!33?TFASwxVDI7NNco|+$*v))eP%L{z)RG~!3Sx#yTn7|(OFk|r zR^t$jMiAJI0LQ^WL6pAZ)k`Y@fY)OYr8IYmv!ToO<-o6JviMkMpXJ95_xNBm3*tb51 z&}rf2SYqPJ4pqfjQB}aG$zTTVQjC{eut7K_!8^kD1QQulswcu_W1m$R5|4!*3#z7u z=MYqt0E2KR8E|6eh4qzukEqD2n+kqa-C$FPg*x11mrlvRU*%E6pKZjW5yMy0soQBUr z9ld-+SLgB!jR?{bEv%CGBva#?aXZJT;!Mu+g#*S!E*L4$5g!8qpHIyvz#4C6uKi) z(?Pj!*bkqp1Bq{?IgU{FxvQL7bl?ZJ} z;~)_oYZFdMpg5hwI@@-RZlB2G5)haPZAm#`r_=sQ#Cd~>3zB0O zMxka-L2QR~8?*~+_McqVe6H;j)@gc33n>14fk7wQX2Ma6=tm$Bra3BcwTY-$S-|@f zqJ@U8?AqpYS$|^2y%+Db@qes??k*cSC$Of~D?q`@MO*@E`+ z-V;g2z)XS*AVu^WXEc!;52Zfl3DM3E!Si7WXSY;G;0S|C)fbSh}J z9^RZ@tsSkhTvPpz+var}?{o7SdpJT!X|GuA+|!K+P%vaPLKg%k6g|filkCyFTsD9tAj3^M1OM7Ka-nz(l;SU#Shbgl~-&M!6YL)OkR2qI1><5mV2(0b7NJQWh>u%j}l@_!y55mX`3b)N14MD-69~XKc z0dZ9VEXIk6&YB3!dqM=${H_sbp?XQ&gyYhT>&iKh5C|R6)htlMIMPuPfqgs3V4B;} zRs7~b9x0s-A8Dg-6+!+Hh3`l^0vAH#Mbrv(Lp_4kL5vq(D9H)Btv~6>w}zz&Gc99K zXoV`qNlZcpuZhrL(3%j!EXIj?7&JyOpzwPlQcD6!la>(Kkt{!y6ytfNIo>~YAhy>H z7n?q<9j`DV@A93AB(lTcM@*1JHBi_s`II2LOGw0l1gB!}3YrKnFU(8QVpFSI^ocG7 zDghQFWKJcLw2+iD5`fctV;q_I3PPh{ zJ3$KeP)ym;p+kp|nj;gEb!5or{x@ZBDX0*{l6I?4m_cHpAa+uyA=$^m#PqgBR;s~Z zj4N|50-@PFF(CzeD3+p&s+fxK0)}bUyC5eBx#Y!RbpnFaU2i(uoiNFmnC*qgrA0_e z!VEb2dLTLK((ENSG9tbrrH+K>|Dgn%@HV87w;6j~|Wm3lj z3a$$xR}NeXlZ01$xkBw%Xb?fBzNn8KsGaYD{5=6ov)0_3fJic=j$$la zkO|ngC|zVUTMX5J`R&2JWY9 zGF&2sSyIp>;B&hkGXl>qZ%|2DtwrpJk_NwA;F-2P1Tcr5Qwt(JR)ovJs>K9JbmD@< zJsG;G{h|Miz}D4)>+{Yw4}|6q)w=^MDzIH%#(tnZGh@HyqDUlvu={G&DM);@CIK_| z#a0TOcg<&x17WMYka9DDY;-1kNoSzxGTsdlZmJIt`zw)Ot>A?~_EYZW6HI(F?q% zU&_PPjz|!2z_zLIQ0kNg-mg%Q0A}`?AW>>~)5NOdW_~FMY|n|Q>hWir1f2%7?(C3; zdg&6t2%9dX`&wJVy<}N|`w}j1f+^Z{UC(y} zyLqT7ND}WuXfbJUf~bQ_5?X8_5lPCS?&h$%F1$|4dn8-?_bKSi0TD=s8f;Oa`;f>b zPz#T0qRufBj#6BvKsw*~JvxG|6}tUs5j=WNzE~jr;@k_7Wh9Utuq_S<6r8hnPUzfS zUMa{M`9PX6(Iy_?u!M?vkKh0k7378xI=(Iii3gbXKm_XMq|CJtwIVW8a;*dMNT=ab zWZybm@>Kp=6YX=~t5A7ZfA3X}i72Y)ivFxufB)qIdDMjjrb0?7|24~t0FC*hc{YSR zkL5VcSfFxwZV}`STnQ8Do0S$APJb4jzCBIo`sfx+#nUXNFVMR@2`Pz;+opqpNX+aL zK^_@m<0GONCdJW^=K)NlJ2g0g<=`5~JPcy(e>=J^bbi-=;>}`Z8H(VI7@SZs)Dh{q zA6dr%60@`9d8~&=^D~0DgX=Ylf;|z~LIH~@{Q&nW{K9*EfYQTC5^Cl<6X|sh6=eEX zpm@pL+kiN-D@b|{iAwUc$3$3aWP(1#d+Tnkbafth_O$a6vYj!6}T%X5|>ZXGEI zdVQ~gKDr1(3L=&M>q{ay;D05KbXr|O0f~R)xmr_srv@x2q|*|qJl877GzgTLZ$_Sw z0__N*y&ME_M`kLY`>W8f8M~Nec>H`&f+XrGzcf~YxS5B6lD(!3vvo8?;`-T2suD-$wK>8Q6bvTL z7n@24K^LHaZI;;1ONp6hMToOZPtQY~ktxb|B2;0vj+#h(2dn5Lh_fJ1BPY%vlq6QB z3ESME#JIPL21Fc3&3~St;309gR!O#z5EQYGy@5!qUsB2c6USb$!V@HtiPM0RyP^nv zo)_?bEG60J0day$c6e$BaeAlZr|7{SCkmKnxoc7Kk;DniB=k^85chAC>@_v`;~D|? z&sOsM#F3Ta8Z&uLMM>b2(1IR)fW$ugm?-&d@y@Z!#A!dANJ(A=tS?1f8kUhUrSzBYOx;~ zZvzE)L7s5iB*f(sdXPt4m3KQPXkgwGNRZmhHf{0l_au28ww*w(=toeeH_!ihG~nq{ zrAG6tMdo3PH!nFG0)_51F0R=TNL+M-o*q5A1;YO??=(becie~QDf2M63rS%6u^k*& z>t$j?BJp|4n?1FpI0IkE&P+fOh_FYohI$LSTUN_+|;CwO<*3O zM-{!gr9Mbq8f4EWf`SLMD>WNa|dB#d1%OI6$ew4kA_RT}RE| zo}gepl`48AQvW(FZhFcuO$3d4s-Qwh9o$w=QLjUTK0yItdy*>k@YZ=^%b`v4-5IHi zgH!f1FWt;9DASiWB=vDfsakK`lGjnCTWX)w%MQcW-nb=)(WIyre1O!=4j1#i8FRDL zC}{-=Qa2|I(i;YeFSO_gA5QA%;7X0mYq#Xpl&HDam3sQky>ngZLWR_lfhoNAQ_(fqNPUKFcUayWJg&w1*OXL|Gh}7?WMsr`|qANXmpH!*egNo>m z876Tw%-!YDG-b9=*O1ineP)O&K_Z2oETA5#>kn)%P%)QhJT0l?45ZF?IIU&qUxkW9 zK9Xffy&qDknyGjSwa|~W_eqs{KcQYV*rn5sqOX-8^}pT3SEg!-1ELy5_pl-92YyC` zOUml7)2WGGRNlkam40EU<9wzzB#zOFqJQ3y^bZ|1|1;Hl?v|WNC5rxeL()$S&ec6g z^;q;(&i6?lD(~UzN`LVYkCNf&BB#-YqI>wd(tmV1o@IEtna@y#9_``lN?Xo;B>{}0r5>&sZ(!UJO*c-MBTZV7`OJlwbG~jX{PWqXT z73LJpaE2bfkZAY!$~V^+>2C(65;}LB%J6ne4*hZe$8&6v%i?dkbr0BWyTYpEG|TeC z)K&W|vC2V@@3+922K4C9??n2Y365R6n&Iy9jJr=i$7S&s`z_b0t9MiF+(vIr)o%7% zZdgE%>K%qmP5Pe+_I+$%_`4;CK%z|#HTxQqp1d|(mcFtsI?D)XU38Ai(l<@@S-`_d zyn|8-I?|@8>7hJX5bCswY0>R-fQxL=KQp;m#-iUyYsWO;KDEXs{~{x>P5veBQ|l&o zw4uo)=A|!=F~>gUU6B3>N+~=zrp?(wqFnE|JYV;Q#dddj?BsECUjAYUBe=S9H>=?f z1k8Wa;dGS6KK_uB4SHv8<6&BL33b0;*VIy_5{o z2BW`I$Jk4jMcbssv|M<_&FYk9%e@-&zWx)KJTA@;zru(-*MHxD%VRC5=gj;4bQnDk z+!CFV+W$&S<^_3SgL9egcbxQw!P6nlR-z8Iq%2m&~oL zO#2bnIb}%P&>xU!SaD2{#28Yy&xXI-huVO#J!r-vdO=|h^2b-d8ksG3b#!HL+&`u zSlDZ&r|OHxavGjtr2JJ#T-FoMkiTmznW~-YPqV5xuY6*})N=4EB&qXzFs5p~^V1V= z@#R4=^B8!*-Lw~eV=^6@7@=QXnIAY9b>r&vWGxWH6Gd!v+a1AnIaqXk#0 z*9(C~+v9Lr%g7p&CQ0bA)GfJL2h;?KN59Ol>}oTRC_?43^pz1?%l;prQhp%tG;hGL z3^SbkHhQ2_&V~>6lMy%aWvd1~c07rX`*9a}?qC_VF+mb@T{!>}kDEneyZthJG;6N{ zNewAgwY2UtY;V$DF)zW#b?P_<#)!NNZ$B3w28lAaynqoh#kYE*i0XMQ!z-~ozZlol&uUJe<8>KGvw9m&n&mt6Y53glzY^1GsB5hq zhBrb=Hl=DOHMmski_SMy1F1`0TF)8z_pOjSxAAl9~d(8m5XZz5^wJllUktQGxS*gr_A#{yFBBd;K&;uAx@1z z;x8ojM^jNfXGHwUp@*4kEwt69U}zIZPeD+X9EFpr_!vPr^z03vYAEy)ew;W+htpa| z&Hock#VIv7SJ%Ef9XA{*^Bigv*8kv2Evc9!%=ZVD&V1`WyFBCHzD>ncss$21A#u=k zW#U6K#qD-onecTd4T*XjAW`j>{LJOK*+s_2Fex&!dRhxTM+2l!5H*pBsQZQe86W^UXZWB;-hEPW?l{wK zb=_Vo&7PxaB`8u;e$-Jj>8l*Bo%E2*$H(X-@u%)C2SLGLm*p~ru(0xbTT^{|$?_I7O^f>&xzx&1I%5B%({baOPwCjm( zyc;Xp=3!%#Uw|K%mZ{ZOfFf{S>w%V&eXn- z4d;9OF+mb#c!pIAieW|(PN#)Vs{<`wLdlZ$h8YLAbtOx-!D)5nTW%}D=Aiv#R8_Te z+Ye5vo!h?rT1u;HwuU&Vc5Vw=PN{ZoyWrGd*Y;z}DO)%_j8l%@y9bS_oHyezoNVEA zkTDhX(Mxq(IQHXX3&+0PpN^`=6w7&Y^%5UjI6h?tb&lS2BtAKBu7(>`F~JKlTR7(7 zVhhLonBXmOql($WaVjo3dee!_u-+A0IR3=L7Eb@{igCqk;d`#OaO}as7LMIHdha_k zBRfZLx)29jIL>8;_V{h#cuqZAIG$k!_pRB&@xEHNaJ=_kMi+Z8TX=O^ogBUCrOo)} zr35p+$8QU-me|6v7u~Jo=#7iU&kXVGpO2ola7;#J3$K!LefEwAGs zWwvmf{a(yK&+^sVQnqlMoTE4WT!(jcBoGKL_l2JEZQ@H_KKC3O;;=3 zs(Sa8j?s#KhDF;o-H-yh4g+uwfQj9rRe88NmUtKe;9MTtqHDHA4?~Tobbxx8dj_b- zHhOeJ99>m_dYpTHm~^8Fz?-?ZR#hIi^!Qu`l||o^wdneUdu!2kqrudgh3x<=@QMRC z1E9A@(^}lL0&p_-8o>R}Xe>kd z;T)ipSXDoN!}T2{?;5qlUSL&yDOU{ODnltlG$?YE0PX_ty_H%LJ8ksnhIFi79VXCa z7J%;;;wW31K9@I=TA4pqLlS$zmjX}=3S7#9Icl)Jt70Uje=jO^0o=+AWdJ|Y!tjkH zt18i2u%bj5OKkY~oij6-tIZ!M0QeVf{hGJY#5QzQA#|yx3PnH?awF8tZI9XMH zX*2YN1T&;9dKiEAxD@(uW>i~M@7y6g0GwWJQXQFbo%Z1;sNUT-Spze)Gem>_I{>&x zoiY|ZoUttL=`q8*)tiR~R#gt3AUXiI0Qf)}GsKq+P)FWc8598SUSOR|X2yBr?+V~; z0R8~rYHud`rU2dw;P8PnhU|t#`d3j=DfGW;E6e z;7nAU1Ni0jXvd3j*iN)@++GBrOz#j^u}h6IW3u+&P=WIkv?`yssuEZPpCZpRY5=!!HAh`LGb+=8 z_PS&hIOhPau;}4vhNus%0f!n+;hRcxRg?Fb8JU)NNC0r7DxC8a0RIK>&gM^6je+0J z7y$G5^mn6YVD^cEMSQtXsk0qQ9LFSY1lV20?nZ4F9lc*cgUD9b9;n!?q; zfeiYV88bQu{?+QmyL&+TXa2CBWY3qy#Ga*!CDf)x5@Ic z?PUh+OsuN>CP%+4x&||Y7Qo>LN`_x+KAjo2ZNJ52ttA8aMHOc7zRtUUua>?SpdN3G z8Nf>(_s1q{WM;oJZ)Pl7lS`xKYXjO*t(#d@3yiTIOm=42CD&zDW#vUNZH{)jwKZ?i z_YCROMEb=!=QS?Ss_!^xf-$yx9}eJW-;2)x0sM5l%`=Twn^ebJ`(VyF2k_77(x)Of z%{_jGCH5qZFve=S$_uiXjNrj5!z(YbqDtr!0R;= zJH4?wExK-*6o9h|p(*sLlX}@YOQtg|kCA&@nKEUF?s#+W3uwt>>$G*Oy7#ig!yqgA z8IuL@o(cf711s>%bZ zwB$lc_*YldA62c&=eg3m|5cjwI$XI`l~;}GjTbo^uH33_ThgTJ5b(pv5DohJ;!-Y% zBfKPBAUQFe$?WuUzT2~VC-Rei7-`aW^)d(d)FY zM#cHhSmI%juQ|P==Ey5lWmNma7mSMY1HB$!a+X$AK62#AO)}a&ue(RalSkKtugDM$ z`V|(;kr!Gaqu*!QQDmIgH@iXjf?_vah@&58Sw_RJ^NY}N{uvdfO}Ymh=-qP_=Q3JG z$BQ(%V04@ps(bfH*2FV>23PTepRx#}=Erd)DsaBwv#CO=vL8|-R};YXpU!Cdw0BSq z&iT#*T_-G=JWD?78{q2RV$F=MrvsGf->VAe0B-(}D(OTiTX!3{x`oDAgi-h7+ur+ zayp~>5BR*v7{pGg>tSjuSrwP6jRDlL0QCrf|DT!De{EHVtaU1X=C4lSds+}2#FY@6N^)(}EvQcI* zHvZvF`I1X%@?@C-Iq(k$sD-|w4xr1tB{PGvNR_im_5o)y?uyLF9OgR|B3pf1Uu{wy znc>;!3O+WOSTptx1g$tK51qNeKJJ!YU5xt)R5L6)DXV2Ou>s?2Cjx9Z-@s>-gX zBSnh??RGjdXrE;TqXTfg*4i+--)VvwyG72@qU-Wwn5b4t4}ZVP7GcJ)HMule;YF7( zfmez0Q?1jY?-??qx#oAR3!t6`@TZQ}s8)>~J(%mNt4htxz^>T*?Yz&iT2 m9DrI-phSu9<@|d~lqgW(aJn?93cWqn_qm-`Zyp*{WPUeF*QYB0 literal 0 HcmV?d00001 diff --git a/User/render/assets/icon.icns b/User/render/assets/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..b5c7217a91cbe4c99d4ad4451048c1698963862e GIT binary patch literal 47115 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 AhyVZp literal 0 HcmV?d00001 diff --git a/User/render/assets/icon.ico b/User/render/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..debc9a2bd75a16dae02fbc1096a8cc81f18701ee GIT binary patch literal 12947 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 literal 0 HcmV?d00001 diff --git a/CEO/render/assets/hard-disk.png b/User/render/assets/icon.png similarity index 100% rename from CEO/render/assets/hard-disk.png rename to User/render/assets/icon.png diff --git a/User/render/assets/loading.gif b/User/render/assets/loading.gif deleted file mode 100644 index aaac0761f39798b83f7e421627652254da5276b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72191 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 diff --git a/User/render/assets/refresh-data.webp b/User/render/assets/refresh-data.webp new file mode 100644 index 0000000000000000000000000000000000000000..cb54150c3d53d1fc98572224ebdc4f03eab0d68e GIT binary patch literal 9132 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 literal 0 HcmV?d00001 diff --git a/User/render/css/announcement.css b/User/render/css/announcement.css new file mode 100644 index 0000000..13830c0 --- /dev/null +++ b/User/render/css/announcement.css @@ -0,0 +1,79 @@ +body, html { + height: 100vh; + width: 100vw; + margin: 0; + padding: 0; + font-family: "Pridi", sans-serif; + background-color: #4A628A; +} + +.container { + height: 100vh; + width: 100vw; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.header { + text-align: center; + margin-top: 10px; + margin-bottom: 20px; +} + +.title { + font-size: 48px; + font-weight: 500; + color: white; +} + +.announcement-body { + max-height: 300px; /* Limit the height to make it scrollable if content overflows */ + width: 80%; + overflow-y: auto; /* Enable vertical scrolling */ + padding: 20px; + color: white; + background-color: rgba(0, 0, 0, 0.2); /* Slight background to make text stand out */ + border-radius: 8px; + text-align: center; +} + +/* Customize scrollbar appearance */ +.announcement-body::-webkit-scrollbar { + width: 8px; +} + +.announcement-body::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); + border-radius: 8px; +} + +.announcement-body::-webkit-scrollbar-thumb { + background-color: rgba(255, 255, 255, 0.8); + border-radius: 8px; +} + +.announcement-body::-webkit-scrollbar-thumb:hover { + background-color: rgb(158, 158, 158); +} + +.announcement-footer { + margin-top: 20px; +} + +#closeButton { + padding: 10px 20px; + margin-bottom: 15px; + font-size: 16px; + color: #4A628A; + background-color: white; + border: none; + border-radius: 5px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +#closeButton:hover { + background-color: #f0f0f0; +} diff --git a/User/render/css/loading.css b/User/render/css/loading.css new file mode 100644 index 0000000..a365a5a --- /dev/null +++ b/User/render/css/loading.css @@ -0,0 +1,59 @@ +body, html { + height: 100vh; + width: 100vw; + margin: 0; + padding: 0; + + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} + +h4, h2, h1{ + margin: 0; +} + +.container{ + height: 100vh; + width: 100vw; + display: flex; + flex-direction: column; + justify-content: space-evenly; + align-items: center; +} + +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +img{ + width: 200px; + height: 200px; +} + +p{ + color: white; +} + +.loading-section{ + display: flex; + flex-direction: column; + align-items: center; +} + +.spinner { + margin-bottom: 8px; + width: 15px; + height: 15px; + border: 3px solid #f3f3f3; + border-top: 3px solid #2196F3; + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} \ No newline at end of file diff --git a/User/render/css/login.css b/User/render/css/login.css index 2e9d6d5..d9062ef 100644 --- a/User/render/css/login.css +++ b/User/render/css/login.css @@ -1,110 +1,143 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; +h4, h2, h1{ + margin: 0; +} +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; } .container { - opacity: 0; - - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - line-height: 2.5rem; - margin-bottom: 10rem; -} - -.login-form { - background-color: #535C91; - opacity: 71; - padding: 9vh 3vh 5vh; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - width: 25%; -} - -.login-form-title { - margin: 0 0 5vh 0; - text-align: center; -} - -.login-form-title h2 { - color: #FFFFFF; - font-size: 5vh; - margin: 0; - padding: 0; -} - -.login-form hr { - width: 40%; -} - -.login-form-content { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 70%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; border-radius: 10px; -} - -button { - font-weight: bold; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-evenly; + height: 90%; width: 35%; - font-size: 1rem; - padding: 10px; - border: none; - border-radius: 5px; - margin-top: 1rem; - cursor: pointer; } -button:hover { - filter: brightness(85%); +.header{ + text-align: center; + padding-bottom: 16px; + padding-top: 16px; +} + +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +.subheading{ + padding-top: 8px; + font-size: 16px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 0.8); +} + +.login-form{ + display: flex; + flex-direction: column; + align-items: center; + width: 80%; +} + +.login-title { + font-size: 24px; + font-weight: 500; + color: white; + margin-bottom: 16px; +} + +.login-form-content input { + width: 100%; + padding: 15px; + margin: 10px 0; + border: 1px solid #ccc; /* Light gray border */ + border-radius: 8px; /* Rounded corners */ + font-size: 1em; + font-family: inherit; + box-sizing: border-box; + background-color: #f9f9f9; /* Light background */ + color: #333; /* Dark text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for interaction */ +} + +/* Placeholder Text Styling */ +.login-form-content input::placeholder { + color: #aaa; /* Lighter color for placeholders */ +} + +/* Focus State Styling */ +.login-form-content input:focus { + outline: none; /* Remove default focus outline */ + border-color: #4A628A; /* Blue border on focus */ + box-shadow: 0 0 5px rgba(74, 98, 138, 0.5); /* Subtle shadow for focus */ + background-color: #fff; /* Slightly brighter background on focus */ +} + +/* Input Field Hover Effect */ +.login-form-content input:hover { + border-color: #888; /* Darker gray border on hover */ +} + +/* Disabled Input Styling */ +.login-form-content input:disabled { + background-color: #e0e0e0; /* Light gray background for disabled input */ + cursor: not-allowed; /* Show "not allowed" cursor */ + opacity: 0.7; /* Slight transparency */ } .login-form-footer { - margin-top: 3vh; display: flex; - flex-wrap: wrap; - align-content: center; + width: 100%; + flex-direction: column; + justify-content: space-between; /* Align buttons next to each other */ align-items: center; - justify-content: space-evenly; + gap: 10px; /* Space between buttons */ + margin-top: 20px; +} + +/* Styling for buttons */ +.login-form-footer button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ } button[name="submit"] { - background-color: #F44336; - color: white; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } - -button[name="signup"] { - background-color: #2196F3; - color: white; -} \ No newline at end of file diff --git a/User/render/css/main_menu.css b/User/render/css/main_menu.css index 60df4ae..82e3792 100644 --- a/User/render/css/main_menu.css +++ b/User/render/css/main_menu.css @@ -1,232 +1,204 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} + +h4, h2, h1{ + margin: 0; +} + +.title{ + font-size: 32px; font-weight: 500; - font-style: normal; - - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; - -} - -.overlay { - display: none; - position: fixed; - width: 100%; - height: 100%; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.85); - z-index: 2; - cursor: pointer; -} - -.ceo-validation-form { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 300px; - padding: 20px; - background: #1B1A55; - border-radius: 10px; - cursor: default; -} - -.ceo-validation-form h2 { - text-align: center; + letter-spacing: -1px; color: white; } -.form-actions { - text-align: center; - padding-top: 20px; -} - -.form-actions button { - padding: 10px 20px; - margin: 0 10px; - border: none; - border-radius: 5px; - cursor: pointer; -} - -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 80%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; - border-radius: 10px; -} - -#back_button { - background-color: #f44336; - width: 35%; - height: auto; +.user{ + display: inline; color: white; } - -#submit_button { - background-color: #4CAF50; - width: 35%; - height: auto; - color: white; -} - -.container { - opacity: 0; - - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; - text-align: center; -} - -.left_block { - display: flex; - flex-direction: column; - background-color: #535C91; - opacity: 71; - padding: 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - color: white; -} - -.left_block_top { - display: flex; +.navbar{ + padding-top: 8px; + padding-right: 32px; + padding-left: 32px; + height: 10%; + display:flex; flex-direction: row; justify-content: space-between; - text-align: left; + align-items: center; } - -.left_block_top h1 { - padding: 0; - margin: 0; -} - -.left_block_top img { - margin: 0 3vw 0 5vw; - width: 8vw; - height: 8vw; -} - -.left_block_content { - margin: 2rem 0 2rem 0; -} - -.left_block_buttons { +.welcome{ display: flex; flex-direction: row; - align-content: center; align-items: center; +} + +img{ + padding-right: 8px; + width:25px; + height: auto; +} + +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; +} + +.container{ + width:100%; + height:100%; + display: flex; + flex-direction: row; justify-content: center; } -button { - margin: 0 1rem 0 1rem; - width: 15vw; - height: 10vh; +.left_block{ + background: linear-gradient(to bottom, #131A24, #4A628A); + width: 25%; + display: flex; + flex-direction: column; +} - border: none; - border-radius: 10px; +.notification-title{ + padding-top: 16px; + padding-bottom: 16px; + text-align: center; + height: 10%; + display: flex; + justify-content: center; + align-items: center; +} - color: white; - font-size: 1rem; - font-weight: bold; +.notifications{ + overflow-y: auto; + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + flex-grow: 1; /* Allow it to take available space */ + max-height: calc(90% - 80px); +} - text-transform: uppercase; +.right_block_content button:last-child { + background-color: #FF6347; +} + +.right_block_content button:last-child:hover { + background-color: #fd4c29; +} + +.alert, .logout-button{ cursor: pointer; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); - outline: none; - transition: background-color 0.3s ease; + border-radius: 15px; + width: 80%; + min-height: 64px; + height: auto; + padding:12px; + background: #FF6347; + font-weight: bold; + font-size: 12px; +} +.notification{ + cursor: pointer; + border-radius: 15px; + width: 80%; + min-height: 64px; + height: auto; + padding:12px; + background: rgba(186, 229, 255); + font-weight: bold; + font-size: 12px; } -button:hover { - filter: brightness(85%); +.notification:hover{ + background: #d9efff; } -.left_block_footer { +.alert:hover, .logout-button:hover{ + background: rgb(244, 44, 44); +} + +.notif-title{ + font-size: 24px; + font-weight: 300; + letter-spacing: -1px; + color: white; +} + +.left-content{ + height: 90%; + width: 100%; + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; +} + +.left_block_footer{ display: flex; align-items: center; - justify-content: end; + justify-content: center; + width: 100%; + padding-bottom: 16px; } -.right_block { - display: flex; +.right_block_content{ + height: 90%; +} + +.right_block{ + width: 75%; + display:flex; flex-direction: column; - background-color: #535C91; - opacity: 71; - padding: 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - color: white; + justify-content: center; } -.notifications { - display: flex; - margin: 1rem 2rem 2rem 3rem; - flex-direction: column; - align-items: start; - - height: 40vh; /* Fixed height */ - width: 80%; /* Full width */ - overflow: auto; /* Enable scrolling */ - - font-size: 1.2rem; - color: white; - font-weight: bold; -} - -.notifications::-webkit-scrollbar { - width: 10px; /* Reduced width of the scrollbar by 2px */ -} - -.notifications::-webkit-scrollbar-track { - background: #1B1A55; /* Updated track color */ -} - -.notifications::-webkit-scrollbar-thumb { - background: #535C91; /* Updated handle color */ - border: 2px solid #1B1A55; /* Adding a border to effectively reduce the thumb size */ -} - -.notifications::-webkit-scrollbar-thumb:hover { - background: #555; /* Updated handle color on hover */ -} - -button[name="logout"] { - margin: 0; - padding: 0; - width: 10vw; - height: 5vh; - background-color: #F44336; -} - -button[name="alert"] { - margin: 0.7rem; - background-color: #F44336; -} - -button[name="notification"] { - margin: 0.7rem; - background-color: #23BDEE; +.right_block_content { + display: grid; + grid-template-columns: repeat(3, 1fr); /* 3 equal-width columns */ + gap: 8px; /* Spacing between buttons */ + padding: 32px; /* Optional padding */ } button[name="menu_button"] { - margin: 0.7rem; - background-color: #1B1A55; + padding: 10px 20px; + font-size: 16px; + background-color: rgba(186,229,244,0.4); /* Button background */ + color: white; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +button[name="menu_button"]:hover { + background-color: #3B5173; /* Darker background on hover */ +} + +.notifications::-webkit-scrollbar { + width: 4px; /* Width of the scrollbar */ +} + +.notifications::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); /* Track background color */ + border-radius: 10px; /* Rounded corners for the track */ +} + +.notifications::-webkit-scrollbar-thumb { + background-color: rgba(74, 98, 138, 0.8); /* Scrollbar handle color */ + border-radius: 10px; /* Rounded corners for the scrollbar handle */ +} + +.notifications::-webkit-scrollbar-thumb:hover { + background-color: rgba(74, 98, 138, 1); /* Darker color on hover */ } \ No newline at end of file diff --git a/User/render/css/normalizer.css b/User/render/css/normalizer.css new file mode 100644 index 0000000..98fe5ba --- /dev/null +++ b/User/render/css/normalizer.css @@ -0,0 +1,41 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, hr +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/User/render/css/profile.css b/User/render/css/profile.css index 5bbe960..67879da 100644 --- a/User/render/css/profile.css +++ b/User/render/css/profile.css @@ -1,110 +1,136 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; +h4, h2, h1{ + margin: 0; +} +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; } .container { - opacity: 0; - + border-radius: 10px; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); display: flex; - flex-direction: row; - justify-content: space-evenly; + flex-direction: column; align-items: center; - min-height: 100vh; - text-align: center; /* Center the text for all child elements */ + justify-content: space-evenly; + height: 90%; + width: 35%; } -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - line-height: 2.5rem; - margin-bottom: 10rem; -} - -.profile-form { - background-color: #535C91; - opacity: 71; - padding: 13vh 3vh 5vh; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - width: 25%; -} - -.profile-form-title { - margin-bottom: 5vh; -} - -.profile-form hr { - width: 40%; -} - -.profile-form-title h2 { - color: #FFFFFF; - margin: 0; - padding: 0; +.header{ text-align: center; - font-size: 5vh; + padding-bottom: 16px; + padding-top: 16px; } -.profile-form-content { +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +.subheading{ + padding-top: 8px; + font-size: 16px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 0.8); +} + +.profile-form{ display: flex; - flex-wrap: wrap; - justify-content: center; + flex-direction: column; + align-items: center; + width: 80%; +} + +.profile-form-content input { + width: 100%; + padding: 15px; + margin: 10px 0; + border: 1px solid #ccc; /* Light gray border */ + border-radius: 8px; /* Rounded corners */ + font-size: 1em; + font-family: inherit; + box-sizing: border-box; + background-color: #f9f9f9; /* Light background */ + color: #333; /* Dark text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for interaction */ +} + +/* Placeholder Text Styling */ +.profile-form-content input::placeholder { + color: #aaa; /* Lighter color for placeholders */ +} + +/* Focus State Styling */ +.profile-form-content input:focus { + outline: none; /* Remove default focus outline */ + border-color: #4A628A; /* Blue border on focus */ + box-shadow: 0 0 5px rgba(74, 98, 138, 0.5); /* Subtle shadow for focus */ + background-color: #fff; /* Slightly brighter background on focus */ +} + +/* Input Field Hover Effect */ +.profile-form-content input:hover { + border-color: #888; /* Darker gray border on hover */ +} + +/* Disabled Input Styling */ +.profile-form-content input:disabled { + background-color: #e0e0e0; /* Light gray background for disabled input */ + cursor: not-allowed; /* Show "not allowed" cursor */ + opacity: 0.7; /* Slight transparency */ } .profile-form-footer { - margin-top: 7vh; display: flex; - flex-direction: row; - justify-content: center; + width: 100%; + flex-direction: column; + justify-content: space-between; /* Align buttons next to each other */ + align-items: center; + gap: 10px; /* Space between buttons */ + margin-top: 20px; } -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 70%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; - border-radius: 10px; -} - -button { - font-weight: bold; - width: 35%; - font-size: 1rem; - padding: 10px; +/* Styling for buttons */ +.profile-form button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; border: none; - border-radius: 5px; - margin-top: 1rem; + border-radius: 8px; cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; } -button:hover { - filter: brightness(85%); +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ } button[name="submit"] { - background-color: #F44336; - color: white; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } - -button[name="login"] { - background-color: #2196F3; - color: white; - margin-right: 5rem; -} \ No newline at end of file diff --git a/User/render/css/reset_password.css b/User/render/css/reset_password.css index 2e9d6d5..c1cd8a6 100644 --- a/User/render/css/reset_password.css +++ b/User/render/css/reset_password.css @@ -1,110 +1,151 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; +h4, h2, h1{ + margin: 0; +} +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; } .container { - opacity: 0; - - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - line-height: 2.5rem; - margin-bottom: 10rem; -} - -.login-form { - background-color: #535C91; - opacity: 71; - padding: 9vh 3vh 5vh; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - width: 25%; -} - -.login-form-title { - margin: 0 0 5vh 0; - text-align: center; -} - -.login-form-title h2 { - color: #FFFFFF; - font-size: 5vh; - margin: 0; - padding: 0; -} - -.login-form hr { - width: 40%; -} - -.login-form-content { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -input { - text-align: center; - color: white; - font-weight: bold; - font-size: 1.2rem; - width: 70%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; border-radius: 10px; -} - -button { - font-weight: bold; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + height: 90%; width: 35%; - font-size: 1rem; - padding: 10px; - border: none; - border-radius: 5px; - margin-top: 1rem; - cursor: pointer; } -button:hover { - filter: brightness(85%); +.header{ + display: flex; + width: 80%; + flex-direction: column; + align-items: center; + justify-content: center; + height: 20%; + text-align: center; + padding-bottom: 16px; + padding-top: 16px; +} + +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +.subheading{ + font-size: 16px; + letter-spacing: -0.5px; + padding-top: 8px; + color: rgba(255,255,255, 0.8); +} + +.login-form{ + height: 80%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-around; + width: 80%; +} + +.login-title { + font-size: 24px; + font-weight: 500; + color: white; + margin-bottom: 16px; +} + +.login-form-content input { + width: 100%; + padding: 15px; + margin: 10px 0; + border: 1px solid #ccc; /* Light gray border */ + border-radius: 8px; /* Rounded corners */ + font-size: 1em; + font-family: inherit; + box-sizing: border-box; + background-color: #f9f9f9; /* Light background */ + color: #333; /* Dark text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for interaction */ +} + +/* Placeholder Text Styling */ +.login-form-content input::placeholder { + color: #aaa; /* Lighter color for placeholders */ +} + +/* Focus State Styling */ +.login-form-content input:focus { + outline: none; /* Remove default focus outline */ + border-color: #4A628A; /* Blue border on focus */ + box-shadow: 0 0 5px rgba(74, 98, 138, 0.5); /* Subtle shadow for focus */ + background-color: #fff; /* Slightly brighter background on focus */ +} + +/* Input Field Hover Effect */ +.login-form-content input:hover { + border-color: #888; /* Darker gray border on hover */ +} + +/* Disabled Input Styling */ +.login-form-content input:disabled { + background-color: #e0e0e0; /* Light gray background for disabled input */ + cursor: not-allowed; /* Show "not allowed" cursor */ + opacity: 0.7; /* Slight transparency */ } .login-form-footer { - margin-top: 3vh; display: flex; - flex-wrap: wrap; - align-content: center; + width: 100%; + flex-direction: column; + justify-content: space-between; /* Align buttons next to each other */ align-items: center; - justify-content: space-evenly; + gap: 10px; /* Space between buttons */ + margin-top: 20px; +} + +/* Styling for buttons */ +.login-form-footer button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; +} + +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ } button[name="submit"] { - background-color: #F44336; - color: white; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } - -button[name="signup"] { - background-color: #2196F3; - color: white; -} \ No newline at end of file diff --git a/User/render/css/share_file.css b/User/render/css/share_file.css index 671485b..1a11178 100644 --- a/User/render/css/share_file.css +++ b/User/render/css/share_file.css @@ -1,191 +1,162 @@ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; +} - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; +h4, h2, h1{ + margin: 0; +} +.page{ + height: 100vh; + width: 100vw; + display: flex; + justify-content: center; + align-items: center; } .container { - opacity: 0; - - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; - text-align: center; -} - -h1, h2 { - padding: 0; - margin: 0; -} - -h2 { - font-size: 1rem; -} - -.left_block { - display: flex; - flex-direction: column; - background-color: #535C91; - opacity: 71; - padding: 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - color: white; -} - -.left_block_top { - display: flex; - flex-direction: row; - justify-content: space-between; -} - -.left_block_top_left { - display: flex; - flex-direction: column; - justify-content: start; - text-align: left; -} - -.left_block_top_left hr { - margin: 0 0 1rem 0; - width: 45%; -} - -.left_block_top_right { - width: 10vw; - - display: flex; - flex-wrap: wrap; - align-content: center; - justify-content: center; - - padding: 0 2vh 0 2vh; - background-color: #1B1A55; - margin: 0 0 0 5vw; - border-radius: 1rem; -} - -.left_block_content { - display: flex; - justify-content: start; - align-items: center; - margin: 2rem 0 2rem 0; -} - -.left_block_buttons { - display: flex; - flex-direction: row; - align-content: center; - align-items: center; - justify-content: center; -} - -button { - margin: 0 1rem 0 1rem; - width: 10vw; - height: 5vh; - - border: none; border-radius: 10px; - - color: white; - font-size: 1rem; - font-weight: bold; - - text-transform: uppercase; - cursor: pointer; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); - outline: none; - transition: background-color 0.3s ease; -} - -button:hover { - filter: brightness(85%); -} - -.left_block_footer { + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); display: flex; + flex-direction: column; align-items: center; - justify-content: end; + height: 90%; + width: 35%; } -.right_block { - display: flex; - flex-direction: column; - background-color: #535C91; - opacity: 71; - padding: 2rem 4rem 2rem 2rem; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); +.header{ + text-align: center; + padding-bottom: 16px; + padding-top: 32px; +} + +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; color: white; } -.choose_user_form_title { - display: flex; - flex-wrap: wrap; - flex-direction: column; - justify-content: left; - align-content: start; +.subheading{ + padding-top: 8px; + font-size: 16px; + letter-spacing: -0.5px; + color: rgba(255,255,255, 0.8); } -.choose_user_form_title hr { +.form{ + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; width: 80%; + height: 100%; + overflow: hidden; +} + +.footer { + padding-bottom: 16px; + display: flex; + width: 100%; + flex-direction: row; + justify-content: space-between; /* Align buttons next to each other */ + align-items: center; + gap: 10px; /* Space between buttons */ +} + +.filename-title{ + font-size: 16px; + font-weight: 300; + color: white; + padding: 48px 24px 48px 24px; + background-color: rgba(0,0,0,0.25); + border-radius: 10px; + margin-top: 16px; + box-shadow: 2px 2px 2px 1px rgb(0 0 0 / 20%); +} + +.users_block{ + padding-top: 16px; +} + +label{ + margin-top: 8px; + color: white; } .choose_user_form_content { + overflow-y: hidden; + width: 100%; + height: auto; + max-height: 180px; display: flex; - margin: 1rem 7rem 2rem 0.5rem; flex-direction: column; - align-items: start; + align-items: flex-start; +} - height: 20vh; /* Fixed height */ - width: 100%; /* Full width */ - overflow: auto; /* Enable scrolling */ - - font-size: 1.2rem; +h5{ + font-size: 20px; + font-weight: 300; + text-align: center; color: white; - font-weight: bold; } -.choose_user_form_content::-webkit-scrollbar { - width: 10px; /* Reduced width of the scrollbar by 2px */ +/* Styling for buttons */ +.form button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; } -.choose_user_form_content::-webkit-scrollbar-track { - background: #1B1A55; /* Updated track color */ -} - -.choose_user_form_content::-webkit-scrollbar-thumb { - background: #535C91; /* Updated handle color */ - border: 2px solid #1B1A55; /* Adding a border to effectively reduce the thumb size */ -} - -.choose_user_form_content::-webkit-scrollbar-thumb:hover { - background: #555; /* Updated handle color on hover */ -} - -button[name="back"] { - background-color: #23BDEE; +button[name="underline"] { + background-color: transparent; /* No background */ + border: none; /* Remove default button border */ + color: #4A628A; /* Set text color */ + font-size: 1em; /* Set font size */ + cursor: pointer; /* Add pointer cursor for interactivity */ + text-decoration: underline; /* Underline text */ + padding: 0; /* Remove default padding */ } button[name="submit"] { - background-color: #F44336; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } -button[name="select_file"] { - margin: 0; - width: 8vw; - background-color: #1B1A55; +button[name="submit"]:hover { + background-color: #3B5173; /* Darker background on hover */ +} + +.choose_user_form_content::-webkit-scrollbar { + width: 4px; /* Width of the scrollbar */ +} + +.choose_user_form_content::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); /* Track background color */ + border-radius: 10px; /* Rounded corners for the track */ +} + +.choose_user_form_content::-webkit-scrollbar-thumb { + background-color: rgba(74, 98, 138, 0.8); /* Scrollbar handle color */ + border-radius: 10px; /* Rounded corners for the scrollbar handle */ +} + +.choose_user_form_content::-webkit-scrollbar-thumb:hover { + background-color: rgba(74, 98, 138, 1); /* Darker color on hover */ +} + +.choose_user_form_content:empty { + overflow-y: hidden; } \ No newline at end of file diff --git a/User/render/css/sign_up.css b/User/render/css/sign_up.css index 09b4634..3571ebc 100644 --- a/User/render/css/sign_up.css +++ b/User/render/css/sign_up.css @@ -1,117 +1,183 @@ +/* General Styles */ body, html { - height: 100%; - width: 100%; + height: 100vh; + width: 100vw; margin: 0; padding: 0; - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; + + font-family: "Pridi", sans-serif; /* Use sans-serif fallback */ + background-color: #4A628A; /* Background color */ } -.container { - min-height: 100vh; +h4, h2, h1 { + margin: 0; /* Remove default margin */ } -.step { +/* Page Layout */ +.page { + height: 100vh; + width: 100vw; display: flex; - flex-direction: row; - justify-content: space-evenly; + justify-content: center; align-items: center; - min-height: 100vh; - opacity: 0; /* Make steps invisible by default */ - visibility: hidden; /* Hide steps by default */ - transition: opacity 0.5s ease, visibility 0.5s ease; /* Smooth transition */ +} +.container{ + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-evenly; } -.step.active { - opacity: 1; /* Show the active step */ - visibility: visible; /* Make it visible */ +/* Active Step Styles */ +.step { + border-radius: 10px; + background: linear-gradient(to bottom, rgba(74, 98, 138, 0.0) 30%, rgba(186, 237, 255, 0.7)); + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + align-items: center; + justify-content: stretch; + height: 90%; + width: 35%; } +/* Header Styling */ .header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - line-height: 2.5rem; - margin-bottom: 10rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 20%; + text-align: center; + padding-bottom: 16px; + padding-top: 16px; } +.title{ + font-size: 48px; + font-weight: 500; + letter-spacing: -1px; + color: white; +} + +.subheading{ + font-size: 16px; + letter-spacing: -0.5px; + padding-top: 8px; + color: rgba(255,255,255, 0.8); +} + +/* Signup Form Styles */ .signup-form { - background-color: #535C91; - opacity: 71; - padding: 9vh 3vh 5vh; - border-radius: 1rem; - box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.9); - width: 25%; + display: flex; + height: 80%; + flex-direction: column; + align-items: center; + justify-content: space-between; + width: 80%; /* Width of the form */ + margin-bottom: 16px; } .signup-form-title { - margin: 0 0 5vh 0; - text-align: center; -} - -.signup-form-title h2 { - color: #FFFFFF; - font-size: 5vh; - margin: 0; - padding: 0; -} - -.signup-form hr { - width: 40%; -} - -.signup-form-content { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -input { - text-align: center; + font-size: 24px; + font-weight: 500; color: white; - font-weight: bold; - font-size: 1.2rem; - width: 70%; - padding: 1rem; - margin: 0.7rem; - background-color: #1B1A55; - border-radius: 10px; + margin-bottom: 16px; /* Space below title */ } -button { - font-weight: bold; - width: 35%; - font-size: 1rem; - padding: 10px; - border: none; - border-radius: 5px; - margin-top: 1rem; - cursor: pointer; +/* Input Styles */ +.signup-form-content input { + width: 100%; + padding: 15px; + margin: 10px 0; + border: 1px solid #ccc; /* Light gray border */ + border-radius: 8px; /* Rounded corners */ + font-size: 1em; + font-family: inherit; + box-sizing: border-box; + background-color: #f9f9f9; /* Light background */ + color: #333; /* Dark text color */ + transition: border-color 0.3s ease, box-shadow 0.3s ease; /* Smooth transition for interaction */ } -button:hover { - filter: brightness(85%); +/* Placeholder Text Styling */ +.signup-form-content input::placeholder { + color: #aaa; /* Lighter color for placeholders */ } +.signup-form-content-radio{ + width: 100%; + display: flex; /* Use flexbox to arrange items in a row */ + align-items: flex-start; + flex-direction: column; + justify-content: flex-start; + gap: 20px; +} + +.signup-form-content-radio label { + width: 100%; + display: flex; /* Make label a flex container */ + align-items: flex-start; + justify-content: flex-start; + cursor: pointer; /* Change cursor to pointer when hovering */ +} + +/* Optional: Styling the radio button */ +.signup-form-content-radio input[type="radio"] { + margin-right: 8px; /* Space between radio button and label text */ +} +/* Focus State Styling */ +.signup-form-content input:focus { + outline: none; /* Remove default focus outline */ + border-color: #4A628A; /* Change border color on focus */ + box-shadow: 0 0 5px rgba(74, 98, 138, 0.5); /* Subtle shadow for focus */ + background-color: #fff; /* Slightly brighter background on focus */ +} + +/* Input Field Hover Effect */ +.signup-form-content input:hover { + border-color: #888; /* Darker gray border on hover */ +} + +/* Disabled Input Styling */ +.signup-form-content input:disabled { + background-color: #e0e0e0; /* Light gray background for disabled input */ + cursor: not-allowed; /* Show "not allowed" cursor */ + opacity: 0.7; /* Slight transparency */ +} + +/* Signup Form Footer */ .signup-form-footer { - margin-top: 3vh; + display: flex; - flex-wrap: wrap; - align-content: center; + width: 100%; + justify-content: space-between; /* Align buttons next to each other */ align-items: center; - justify-content: space-evenly; + gap: 10px; /* Space between buttons */ + margin-top: 20px; +} + +/* Button Styles */ +.signup-form-footer button { + flex: 1; /* Ensure buttons are equal width */ + padding: 16px; + font-weight: 300; + border: none; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.2s ease; } button[name="back"] { - background-color: #F44336; - color: white; + background-color: transparent; /* No background for 'back' button */ + color: #4A628A; /* Set text color */ + text-decoration: underline; /* Underline text */ } button[name="continue"] { - background-color: #2196F3; - color: white; + width: 100%; + background-color: #4A628A; /* Blue background */ + color: white; /* White text color */ } diff --git a/User/render/css/uc_not_found.css b/User/render/css/uc_not_found.css deleted file mode 100644 index df2f3d6..0000000 --- a/User/render/css/uc_not_found.css +++ /dev/null @@ -1,59 +0,0 @@ -body, html { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; - - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; -} - -.container { - opacity: 0; - - display: flex; - flex-direction: column; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - text-align: center; -} - -.loading-section { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - color: white; -} - -.spinner { - width: 50px; - height: 50px; - border: 6px solid #f3f3f3; - border-top: 6px solid #2196F3; - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -.loading-section p { - font-size: 1.5rem; - color: white; - margin-top: 1rem; -} diff --git a/User/render/css/welcome.css b/User/render/css/welcome.css deleted file mode 100644 index df2f3d6..0000000 --- a/User/render/css/welcome.css +++ /dev/null @@ -1,59 +0,0 @@ -body, html { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - - font-family: "Roboto", sans-serif; - font-weight: 500; - font-style: normal; - - background-image: url('../assets/background.png'); - background-size: cover; - background-repeat: no-repeat; -} - -.container { - opacity: 0; - - display: flex; - flex-direction: column; - justify-content: space-evenly; - align-items: center; - min-height: 100vh; -} - -.header { - color: #1B1A55; - font-size: 4vh; - text-transform: uppercase; - text-align: center; -} - -.loading-section { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - color: white; -} - -.spinner { - width: 50px; - height: 50px; - border: 6px solid #f3f3f3; - border-top: 6px solid #2196F3; - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -.loading-section p { - font-size: 1.5rem; - color: white; - margin-top: 1rem; -} diff --git a/User/render/html/announcement.html b/User/render/html/announcement.html new file mode 100644 index 0000000..204daa6 --- /dev/null +++ b/User/render/html/announcement.html @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + Announcement + + +
+
+

Announcement

+
+
+

Loading announcement...

+
+ +
+ + diff --git a/User/render/html/backup_retreive.html b/User/render/html/backup_retreive.html deleted file mode 100644 index ce01128..0000000 --- a/User/render/html/backup_retreive.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - Welcome - - -
-
-

BACKUP FETCHER

-
-
-
-

Backup is not searched, please wait...

-
-
- - diff --git a/CEO/render/html/backup_retreive.html b/User/render/html/backup_retrieve.html similarity index 51% rename from CEO/render/html/backup_retreive.html rename to User/render/html/backup_retrieve.html index ce01128..e3ae2e9 100644 --- a/CEO/render/html/backup_retreive.html +++ b/User/render/html/backup_retrieve.html @@ -4,10 +4,13 @@ - + - + + + + Welcome @@ -15,11 +18,12 @@
-

BACKUP FETCHER

+

Team Vault

+ Backup Fetcher
-

Backup is not searched, please wait...

+

Backup is now searched, please wait...

diff --git a/User/render/html/login.html b/User/render/html/login.html index 9767cea..80586a6 100644 --- a/User/render/html/login.html +++ b/User/render/html/login.html @@ -4,33 +4,39 @@ - + + + + Login +
-

DO WE KNOW

-

EACH OTHER?

+

TeamVault

+

Do we know each other?

+
diff --git a/User/render/html/main_menu.html b/User/render/html/main_menu.html index dd8d0e7..40487cc 100644 --- a/User/render/html/main_menu.html +++ b/User/render/html/main_menu.html @@ -4,9 +4,12 @@ - + + + + @@ -14,41 +17,43 @@ Main Page - -
-
-
-
-

WELCOME BACK,

-

-

Hope you have a productive day!

+ +
+
+
+
+

Notifications

+
+
+
+ +
+
-
-
-
+ +
+ + +
-
-
-
-
-
- -
-
-
-

NOTIFICATIONS

-
-
-
diff --git a/User/render/html/profile.html b/User/render/html/profile.html index c5db853..e7f6ea0 100644 --- a/User/render/html/profile.html +++ b/User/render/html/profile.html @@ -4,9 +4,12 @@ - + + + + @@ -14,22 +17,24 @@ Profile -
-
-
-

Profile

-
-
-
- - - -
- -
+
+
+
+
+

Profile

+

Who are you?

+
+
+ + + +
+ +
+
diff --git a/User/render/html/reset_database.html b/User/render/html/reset_database.html new file mode 100644 index 0000000..db6d68f --- /dev/null +++ b/User/render/html/reset_database.html @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + Welcome + + +
+
+

Welcome to TeamVault

+
+ Connecting to server +
+
+

The CEO initialized a complete reset, please wait...

+
+
+ + diff --git a/User/render/html/reset_password.html b/User/render/html/reset_password.html index 8bf382e..46c1535 100644 --- a/User/render/html/reset_password.html +++ b/User/render/html/reset_password.html @@ -3,33 +3,37 @@ + + + + Reset Password +
-

RESET

-

YOUR PASSWORD

+

TeamVault

+

Forgot your password? No worries, it happens to the best of us!

- +
diff --git a/User/render/html/share_file.html b/User/render/html/share_file.html index 6163a09..c0b8a6e 100644 --- a/User/render/html/share_file.html +++ b/User/render/html/share_file.html @@ -4,46 +4,42 @@ - + + + + Share File - + +
-
-
-
-

SHARE A FILE

-
-

First select the file you want to share

-

(can be whatever resource from the system)

-
-
-

-
+
+
+

Share a File

+

First select the file you want to share.

+ +
+
Users
+

Select the users you want to share the file with.

+
+ +
+
-
- -
- -
-
-

USERS

-
-
-
- -
-
+
diff --git a/User/render/html/sign_up.html b/User/render/html/sign_up.html index 4a1bdcc..5768795 100644 --- a/User/render/html/sign_up.html +++ b/User/render/html/sign_up.html @@ -3,24 +3,27 @@ + + + + Signup Process - +
-

LET US MEET

-

EACH OTHER

+

TeamVault

+

Let us meet each other

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 literal 0 HcmV?d00001 diff --git a/User/render/assets/hard-disk.png b/app_icons/icon.png similarity index 100% rename from User/render/assets/hard-disk.png rename to app_icons/icon.png