diff --git a/docs/README.uk-UA.md b/docs/README.uk-UA.md
index 8fec8508..e6189126 100644
--- a/docs/README.uk-UA.md
+++ b/docs/README.uk-UA.md
@@ -2,7 +2,7 @@
-[
](https://hydralauncher.site)
+[
](https://help.hydralauncher.gg)
Hydra Launcher
diff --git a/package.json b/package.json
index d3a2bab9..848eac78 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "hydralauncher",
- "version": "3.0.5",
+ "version": "3.0.8",
"description": "Hydra",
"main": "./out/main/index.js",
"author": "Los Broxas",
@@ -23,7 +23,7 @@
"start": "electron-vite preview",
"dev": "electron-vite dev",
"build": "npm run typecheck && electron-vite build",
- "postinstall": "electron-builder install-app-deps && node ./postinstall.cjs",
+ "postinstall": "electron-builder install-app-deps && node ./scripts/postinstall.cjs",
"build:unpack": "npm run build && electron-builder --dir",
"build:win": "electron-vite build && electron-builder --win",
"build:mac": "electron-vite build && electron-builder --mac",
@@ -34,26 +34,25 @@
"dependencies": {
"@electron-toolkit/preload": "^3.0.0",
"@electron-toolkit/utils": "^3.0.0",
- "@fontsource/noto-sans": "^5.0.22",
- "@hookform/resolvers": "^3.9.0",
- "@intercom/messenger-js-sdk": "^0.0.14",
+ "@fontsource/noto-sans": "^5.1.0",
+ "@hookform/resolvers": "^3.9.1",
"@primer/octicons-react": "^19.9.0",
"@radix-ui/react-dropdown-menu": "^2.1.2",
"@reduxjs/toolkit": "^2.2.3",
"@vanilla-extract/css": "^1.14.2",
- "@vanilla-extract/dynamic": "^2.1.1",
+ "@vanilla-extract/dynamic": "^2.1.2",
"@vanilla-extract/recipes": "^0.5.2",
"auto-launch": "^5.0.6",
- "axios": "^1.7.7",
- "better-sqlite3": "^11.3.0",
+ "axios": "^1.7.9",
+ "better-sqlite3": "^11.7.0",
"check-disk-space": "^3.4.0",
"classnames": "^2.5.1",
"color": "^4.2.3",
"color.js": "^1.2.0",
"create-desktop-shortcuts": "^1.11.0",
"date-fns": "^3.6.0",
- "dexie": "^4.0.9",
- "electron-log": "^5.2.0",
+ "dexie": "^4.0.10",
+ "electron-log": "^5.2.4",
"electron-updater": "^6.3.9",
"file-type": "^19.6.0",
"flexsearch": "^0.7.43",
@@ -74,14 +73,15 @@
"sudo-prompt": "^9.2.1",
"tar": "^7.4.3",
"typeorm": "^0.3.20",
- "user-agents": "^1.1.193",
- "yaml": "^2.4.1",
- "yup": "^1.4.0",
- "zod": "^3.23.8"
+ "user-agents": "^1.1.387",
+ "yaml": "^2.6.1",
+ "yup": "^1.5.0",
+ "zod": "^3.24.1"
},
"devDependencies": {
- "@commitlint/cli": "^19.5.0",
- "@commitlint/config-conventional": "^19.5.0",
+ "@aws-sdk/client-s3": "^3.705.0",
+ "@commitlint/cli": "^19.6.0",
+ "@commitlint/config-conventional": "^19.6.0",
"@electron-toolkit/eslint-config-prettier": "^2.0.0",
"@electron-toolkit/eslint-config-ts": "^2.0.0",
"@electron-toolkit/tsconfig": "^1.0.1",
@@ -89,8 +89,8 @@
"@types/auto-launch": "^5.0.5",
"@types/color": "^3.0.6",
"@types/folder-hash": "^4.0.4",
- "@types/jsdom": "^21.1.6",
- "@types/jsonwebtoken": "^9.0.6",
+ "@types/jsdom": "^21.1.7",
+ "@types/jsonwebtoken": "^9.0.7",
"@types/lodash-es": "^4.17.12",
"@types/node": "^20.12.7",
"@types/parse-torrent": "^5.8.7",
@@ -100,15 +100,15 @@
"@types/user-agents": "^1.0.4",
"@vanilla-extract/vite-plugin": "^4.0.7",
"@vitejs/plugin-react": "^4.2.1",
- "electron": "^30.3.0",
+ "electron": "^31.7.6",
"electron-builder": "^25.1.8",
"electron-vite": "^2.0.0",
"eslint": "^8.56.0",
- "eslint-plugin-jsx-a11y": "^6.8.0",
- "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-jsx-a11y": "^6.10.2",
+ "eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-hooks": "^4.6.0",
- "husky": "^9.0.11",
- "prettier": "^3.2.4",
+ "husky": "^9.1.7",
+ "prettier": "^3.4.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass-embedded": "^1.80.6",
diff --git a/postinstall.cjs b/scripts/postinstall.cjs
similarity index 100%
rename from postinstall.cjs
rename to scripts/postinstall.cjs
diff --git a/scripts/upload-build.cjs b/scripts/upload-build.cjs
new file mode 100644
index 00000000..9f19ca89
--- /dev/null
+++ b/scripts/upload-build.cjs
@@ -0,0 +1,64 @@
+const fs = require("node:fs");
+const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");
+const path = require("node:path");
+const packageJson = require("../package.json");
+
+if (!process.env.BUILD_WEBHOOK_URL) {
+ console.log("No BUILD_WEBHOOK_URL provided, skipping upload");
+ process.exit(0);
+}
+
+const s3 = new S3Client({
+ region: "auto",
+ endpoint: process.env.S3_ENDPOINT,
+ forcePathStyle: true,
+ credentials: {
+ accessKeyId: process.env.S3_ACCESS_KEY_ID,
+ secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
+ },
+});
+
+const dist = path.resolve(__dirname, "..", "dist");
+
+const extensionsToUpload = [".deb", ".exe"];
+
+fs.readdir(dist, async (err, files) => {
+ if (err) throw err;
+
+ const uploads = await Promise.all(
+ files
+ .filter((file) => extensionsToUpload.includes(path.extname(file)))
+ .map(async (file) => {
+ console.log(`⌛️ Uploading ${file}...`);
+ const fileName = `${new Date().getTime()}-${file}`;
+
+ const command = new PutObjectCommand({
+ Bucket: process.env.S3_BUILDS_BUCKET_NAME,
+ Key: fileName,
+ Body: fs.createReadStream(path.resolve(dist, file)),
+ });
+
+ await s3.send(command);
+
+ return {
+ url: `${process.env.BUILDS_URL}/${fileName}`,
+ name: fileName,
+ };
+ })
+ );
+
+ if (uploads.length > 0) {
+ await fetch(process.env.BUILD_WEBHOOK_URL, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ uploads,
+ branchName: process.env.BRANCH_NAME,
+ version: packageJson.version,
+ githubActor: process.env.GITHUB_ACTOR,
+ }),
+ });
+ }
+});
diff --git a/src/locales/ar/translation.json b/src/locales/ar/translation.json
index 67628f95..156c3da4 100644
--- a/src/locales/ar/translation.json
+++ b/src/locales/ar/translation.json
@@ -1,33 +1,49 @@
{
"language_name": "اَلْعَرَبِيَّةُ",
+ "app": {
+ "successfully_signed_in": "تم تسجيل الدخول بنجاح"
+ },
"home": {
"featured": "مميّز",
"surprise_me": "فاجئني",
- "no_results": "لم يتم العثور على نتائج"
+ "no_results": "لم يتم العثور على نتائج",
+ "start_typing": "بدء الكتابة للبحث...",
+ "hot": "الأكثر رواجا الآن",
+ "weekly": "📅 أفضل ألعاب الأسبوع",
+ "achievements": "🏆 ألعاب للتغلب عليها"
},
"sidebar": {
"catalogue": "قائمة الألعاب",
- "downloads": "التحميلات",
+ "downloads": "التنزيلات",
"settings": "إعدادات",
"my_library": "مكتبتي",
"downloading_metadata": "{{title}} (جارٍ تنزيل البيانات الوصفية...)",
- "paused": "{{title}} (متوقف)",
- "downloading": "{{title}} ({{percentage}} - جارٍ التنزيل...)",
+ "paused": "{{title}} (متوقف مؤقتًا)",
+ "downloading": "{{title}} ({{percentage}} - جاري التنزيل...)",
"filter": "بحث في المكتبة",
- "home": "الرئيسية"
+ "home": "الرئيسية",
+ "queued": "{{title}} (في قائمة الانتظار)",
+ "game_has_no_executable": "لم يتم تحديد اللعبة القابلة للتنفيذ",
+ "sign_in": "تسجيل الدخول",
+ "friends": "أصدقاء",
+ "need_help": "بحاجة الى مساعدة؟"
},
"header": {
"search": "ابحث عن الألعاب",
"home": "الرئيسية",
"catalogue": "قائمة الألعاب",
- "downloads": "التحميلات",
+ "downloads": "التنزيلات",
"search_results": "نتائج البحث",
- "settings": "إعدادات"
+ "settings": "إعدادات",
+ "version_available_install": "إصدار {{version}} متاح. ",
+ "version_available_download": "إصدار {{version}} متاح. "
},
"bottom_panel": {
- "no_downloads_in_progress": "لا يوجد تنزيلات جارية",
- "downloading_metadata": "جارٍ تنزيل بيانات وصف {{title}}",
- "downloading": "جارٍ تنزيل {{title}}… ({{percentage}} مكتملة) - الانتهاء {{eta}} - {{speed}}"
+ "no_downloads_in_progress": "لا توجد تنزيلات قيد التقدم",
+ "downloading_metadata": "جارٍ التنزيل {{title}} البيانات الوصفية...",
+ "downloading": "جارٍ التنزيل {{title}}… ({{percentage}} مكتملة) - الانتهاء {{eta}} - {{speed}}",
+ "calculating_eta": "جارٍ التنزيل {{title}}… ({{percentage}} مكتمل) - حساب الوقت المتبقي...",
+ "checking_files": "التحقق {{title}} ملفات…({{percentage}} مكتمل)"
},
"catalogue": {
"next_page": "الصفحة التالية",
@@ -35,101 +51,242 @@
},
"game_details": {
"open_download_options": "افتح خيارات التنزيل",
- "download_options_zero": "لا يوجد خيار تنزيل",
- "download_options_one": "{{count}} خيار تنزيل",
- "download_options_other": "{{count}} خيار تنزيل",
+ "download_options_zero": "{{count}} خيارات التنزيل",
"updated_at": "تم التحديث {{updated_at}}",
- "install": "تثبيت",
+ "install": "ثَبَّتَ",
"resume": "استئناف",
"pause": "إيقاف",
"cancel": "إلغاء",
"remove": "إزالة",
"space_left_on_disk": "{{space}} متبقية على القرص",
"eta": "الوقت المتبقي {{eta}}",
- "downloading_metadata": "جاري تنزيل البيانات الوصفية...",
- "filter": "تصفية حزم إعادة التجميع",
+ "calculating_eta": "جارٍ حساب الوقت المتبقي…",
+ "downloading_metadata": "جارٍ تنزيل البيانات الوصفية…",
+ "filter": "إعادة حزم التصفية",
"requirements": "متطلبات النظام",
"minimum": "الحد الأدنى",
- "recommended": "موصى به",
- "release_date": "تم الإصدار في {{date}}",
- "publisher": "نشر بواسطة {{publisher}}",
+ "recommended": "مُستَحسَن",
+ "paused": "متوقف مؤقتًا",
+ "release_date": "صدر بتاريخ {{date}}",
+ "publisher": "نشرت من قبل {{publisher}}",
"hours": "ساعات",
"minutes": "دقائق",
"amount_hours": "{{amount}} ساعات",
"amount_minutes": "{{amount}} دقائق",
- "accuracy": "دقة {{accuracy}}%",
- "add_to_library": "إضافة إلى المكتبة",
+ "accuracy": "{{accuracy}}٪ دقة",
+ "add_to_library": "أضف إلى المكتبة",
"remove_from_library": "إزالة من المكتبة",
- "no_downloads": "لا توجد تنزيلات متاحة",
+ "no_downloads": "لا التنزيلات المتاحة",
"play_time": "تم اللعب لمدة {{amount}}",
- "last_time_played": "آخر مرة لعبت {{period}}",
- "not_played_yet": "لم تلعب {{title}} بعد",
+ "last_time_played": "لعبت آخر مرة {{period}}",
+ "not_played_yet": "أنت لم تلعب {{title}} حتى الآن",
"next_suggestion": "الاقتراح التالي",
"play": "لعب",
- "deleting": "جاري حذف المثبت...",
+ "deleting": "جارٍ حذف المثبت…",
"close": "إغلاق",
- "playing_now": "قيد التشغيل الآن",
+ "playing_now": "قيداللعب الآن",
"change": "تغيير",
"repacks_modal_description": "اختر الحزمة التي تريد تنزيلها",
- "select_folder_hint": "لتغيير المجلد الافتراضي، انتقل إلى الإعدادات",
- "download_now": "تنزيل الآن",
- "no_shop_details": "لم يتم استرداد تفاصيل المتجر.",
+ "select_folder_hint": "لتغيير المجلد الافتراضي، انتقل إلى <0>إعدادات0>",
+ "download_now": "قم بالتنزيل الآن",
+ "no_shop_details": "لا يمكن استرداد تفاصيل المتجر.",
"download_options": "خيارات التنزيل",
- "download_path": "مسار التنزيل",
+ "download_path": "مسار التحميل",
"previous_screenshot": "لقطة الشاشة السابقة",
"next_screenshot": "لقطة الشاشة التالية",
- "screenshot": "لقطة شاشة {{number}}",
- "open_screenshot": "افتح لقطة الشاشة {{number}}"
+ "screenshot": "لقطة الشاشة {{number}}",
+ "open_screenshot": "فتح لقطة الشاشة {{number}}",
+ "download_settings": "تحميل الإعدادات",
+ "downloader": "أداة التنزيل",
+ "select_executable": "يختار",
+ "no_executable_selected": "لم يتم تحديد أي ملف قابل للتنفيذ",
+ "open_folder": "افتح المجلد",
+ "open_download_location": "انظر الملفات التي تم تنزيلها",
+ "create_shortcut": "إنشاء اختصار سطح المكتب",
+ "clear": "واضح",
+ "remove_files": "إزالة الملفات",
+ "remove_from_library_title": "هل أنت متأكد؟",
+ "remove_from_library_description": "سيتم إزالة هذا {{game}} من مكتبتك",
+ "options": "خيارات",
+ "executable_section_title": "قابل للتنفيذ",
+ "executable_section_description": "مسار الملف الذي سيتم تنفيذه عند النقر فوق \"تشغيل\".",
+ "downloads_secion_title": "التنزيلات",
+ "downloads_section_description": "تحقق من التحديثات أو الإصدارات الأخرى من هذه اللعبة",
+ "danger_zone_section_title": "منطقة الخطر",
+ "danger_zone_section_description": "قم بإزالة هذه اللعبة من مكتبتك أو الملفات التي تم تنزيلها بواسطة Hydra",
+ "download_in_progress": "التنزيل قيد التقدم",
+ "download_paused": "تم إيقاف التنزيل مؤقتًا",
+ "last_downloaded_option": "آخر خيار تم تنزيله",
+ "create_shortcut_success": "تم إنشاء الاختصار بنجاح",
+ "create_shortcut_error": "حدث خطأ أثناء إنشاء الاختصار",
+ "nsfw_content_title": "تحتوي هذه اللعبة على محتوى غير مناسب",
+ "nsfw_content_description": "{{title}} يحتوي على محتوى قد لا يكون مناسبًا لجميع الأعمار. ",
+ "allow_nsfw_content": "اسمح",
+ "refuse_nsfw_content": "عُد",
+ "stats": "احصائيات",
+ "download_count": "التنزيلات",
+ "player_count": "اللاعبين النشطين",
+ "download_error": "خيار التنزيل هذا غير متوفر",
+ "download": "تحميل",
+ "executable_path_in_use": "قابل للتنفيذ قيد الاستخدام بالفعل بواسطة \"{{game}}\"",
+ "warning": "تحذير:",
+ "hydra_needs_to_remain_open": "لإجراء هذا التنزيل، يجب أن يظل Hydra مفتوحًا حتى اكتماله. ",
+ "achievements": "الإنجازات",
+ "achievements_count": "الإنجازات {{unlockedCount}}/{{achievementsCount}}",
+ "cloud_save": "حفظ السحابة",
+ "cloud_save_description": "احفظ تقدمك في السحابة واستمر في اللعب على أي جهاز",
+ "backups": "النسخ الاحتياطية",
+ "install_backup": "ثَبَّتَ",
+ "delete_backup": "يمسح",
+ "create_backup": "نسخة احتياطية جديدة",
+ "last_backup_date": "آخر نسخة احتياطية قيد التشغيل {{date}}",
+ "no_backup_preview": "لم يتم العثور على ألعاب محفوظة لهذا العنوان",
+ "restoring_backup": "استعادة النسخة الاحتياطية ({{progress}} مكتمل)…",
+ "uploading_backup": "جارٍ تحميل النسخة الاحتياطية…",
+ "no_backups": "لم تقم بإنشاء أي نسخ احتياطية لهذه اللعبة حتى الآن",
+ "backup_uploaded": "تم تحميل النسخة الاحتياطية",
+ "backup_deleted": "تم حذف النسخة الاحتياطية",
+ "backup_restored": "تمت استعادة النسخة الاحتياطية",
+ "see_all_achievements": "شاهد جميع الإنجازات",
+ "sign_in_to_see_achievements": "قم بتسجيل الدخول لرؤية الإنجازات",
+ "mapping_method_automatic": "تلقائي",
+ "mapping_method_manual": "يدوي",
+ "mapping_method_label": "طريقة رسم الخرائط",
+ "files_automatically_mapped": "تم تعيين الملفات تلقائيًا",
+ "no_backups_created": "لم يتم إنشاء نسخ احتياطية لهذه اللعبة",
+ "manage_files": "إدارة الملفات",
+ "loading_save_preview": "جارٍ البحث عن حفظ الألعاب...",
+ "wine_prefix": "بادئة النبيذ",
+ "wine_prefix_description": "بادئة Wine المستخدمة لتشغيل هذه اللعبة",
+ "no_download_option_info": "لا توجد معلومات متاحة",
+ "backup_deletion_failed": "فشل في حذف النسخة الاحتياطية",
+ "max_number_of_artifacts_reached": "تم الوصول إلى الحد الأقصى لعدد النسخ الاحتياطية لهذه اللعبة",
+ "achievements_not_sync": "لا تتم مزامنة إنجازاتك",
+ "manage_files_description": "إدارة الملفات التي سيتم نسخها احتياطيًا واستعادتها",
+ "select_folder": "حدد المجلد",
+ "backup_from": "نسخة احتياطية من {{date}}",
+ "custom_backup_location_set": "تعيين موقع النسخ الاحتياطي المخصص",
+ "no_directory_selected": "لم يتم تحديد أي دليل",
+ "download_options_one": "{{count}} خيار التنزيل",
+ "download_options_two": "{{count}} خيارات التنزيل",
+ "download_options_few": "{{count}} خيارات التنزيل",
+ "download_options_many": "{{count}} خيارات التنزيل",
+ "download_options_other": "{{count}} خيارات التنزيل"
},
"activation": {
- "title": "تفعيل هايدرا",
+ "title": "تفعيل Hydra",
"installation_id": "معرف التثبيت:",
"enter_activation_code": "أدخل رمز التفعيل الخاص بك",
- "message": "إذا كنت لا تعرف أين تسأل عن هذا ، فلا يجب أن يكون لديك هذا.",
- "activate": "تفعيل",
- "loading": "جار التحميل…"
+ "message": "إذا كنت لا تعرف أين تطلب هذا، فلا ينبغي أن يكون لديك هذا.",
+ "activate": "فعل",
+ "loading": "تحميل…"
},
"downloads": {
"resume": "استئناف",
"pause": "إيقاف مؤقت",
"eta": "الوقت المتبقي {{eta}}",
- "paused": "متوقفة مؤقتًا",
- "verifying": "جار التحقق…",
- "completed": "اكتمل",
+ "paused": "متوقف مؤقتًا",
+ "verifying": "جارٍ التحقق…",
+ "completed": "مكتمل",
+ "removed": "لم يتم تحميلها",
"cancel": "إلغاء",
"filter": "تصفية الألعاب التي تم تنزيلها",
"remove": "إزالة",
- "downloading_metadata": "جار تنزيل البيانات الوصفية…",
- "deleting": "جار حذف المثبت…",
+ "downloading_metadata": "جارٍ تنزيل البيانات الوصفية…",
+ "deleting": "جارٍ حذف المثبت…",
"delete": "إزالة المثبت",
"delete_modal_title": "هل أنت متأكد؟",
- "delete_modal_description": "سيؤدي هذا إلى إزالة جميع ملفات التثبيت من جهاز الكمبيوتر الخاص بك",
- "install": "تثبيت"
+ "delete_modal_description": "سيؤدي هذا إلى إزالة كافة ملفات التثبيت من جهاز الكمبيوتر الخاص بك",
+ "install": "ثَبَّتَ",
+ "download_in_progress": "في تَقَدم",
+ "queued_downloads": "التنزيلات في قائمة الانتظار",
+ "downloads_completed": "مكتمل",
+ "queued": "في قائمة الانتظار",
+ "no_downloads_title": "هذا فارغ",
+ "no_downloads_description": "لم تقم بتنزيل أي شيء باستخدام Hydra بعد، ولكن لم يفت الأوان بعد للبدء.",
+ "checking_files": "جارٍ فحص الملفات…"
},
"settings": {
"downloads_path": "مسار التنزيلات",
"change": "تحديث",
- "notifications": "الإشعارات",
+ "notifications": "إشعارات",
"enable_download_notifications": "عند اكتمال التنزيل",
"enable_repack_list_notifications": "عند إضافة حزمة جديدة",
- "real_debrid_api_token_label": "رمز واجهة برمجة التطبيقات (API) لـReal-Debrid ",
- "quit_app_instead_hiding": "إنهاء هايدرا بدلاً من التصغير الى شريط الحالة",
- "launch_with_system": "تشغيل هايدرا عند بدء تشغيل النظام",
+ "real_debrid_api_token_label": "رمز Real-Debrid API",
+ "quit_app_instead_hiding": "لا تخفي Hydra عند الإغلاق",
+ "launch_with_system": "قم بتشغيل Hydra عند بدء تشغيل النظام",
"general": "عام",
- "behavior": "السلوك",
- "enable_real_debrid": "تفعيل Real-Debrid ",
- "real_debrid_api_token_hint": "يمكنك الحصول على مفتاح API الخاص بك هنا",
- "save_changes": "حفظ التغييرات"
+ "behavior": "سلوك",
+ "download_sources": "تحميل المصادر",
+ "language": "لغة",
+ "real_debrid_api_token": "رمز API",
+ "enable_real_debrid": "تمكين ريال ديبريد",
+ "real_debrid_description": "Real-Debrid هو برنامج تنزيل غير مقيد يسمح لك بتنزيل الملفات بسرعة، ولا يقتصر ذلك إلا على سرعة الإنترنت لديك.",
+ "real_debrid_invalid_token": "رمز API غير صالح",
+ "real_debrid_api_token_hint": "يمكنك الحصول على رمز API الخاص بك <0>هنا0>",
+ "real_debrid_free_account_error": "الحساب \"{{username}}\" هو حساب مجاني. يرجى الاشتراك في Real-Debrid",
+ "real_debrid_linked_message": "حساب \"{{username}}\"مرتبط",
+ "save_changes": "حفظ التغييرات",
+ "changes_saved": "تم حفظ التغييرات بنجاح",
+ "download_sources_description": "ستقوم Hydra بجلب روابط التنزيل من هذه المصادر. ",
+ "validate_download_source": "التحقق من صحة",
+ "remove_download_source": "إزالة",
+ "add_download_source": "أضف المصدر",
+ "download_count_zero": "{{countFormatted}} خيارات التنزيل",
+ "download_source_url": "تنزيل عنوان URL المصدر",
+ "add_download_source_description": "أدخل عنوان URL لملف .json",
+ "download_source_up_to_date": "محدث",
+ "download_source_errored": "خطأ",
+ "sync_download_sources": "مصادر المزامنة",
+ "removed_download_source": "تمت إزالة مصدر التنزيل",
+ "added_download_source": "تمت إضافة مصدر التنزيل",
+ "download_sources_synced": "تتم مزامنة جميع مصادر التنزيل",
+ "insert_valid_json_url": "أدخل عنوان URL صالحًا لـ JSON",
+ "found_download_option_zero": "وجد {{countFormatted}} خيارات التنزيل",
+ "import": "يستورد",
+ "public": "عام",
+ "private": "خاص",
+ "friends_only": "الأصدقاء فقط",
+ "privacy": "خصوصية",
+ "profile_visibility": "رؤية الملف الشخصي",
+ "profile_visibility_description": "اختر من يمكنه رؤية ملفك الشخصي ومكتبتك",
+ "required_field": "هذه الخانة مطلوبه",
+ "source_already_exists": "تمت إضافة هذا المصدر بالفعل",
+ "must_be_valid_url": "يجب أن يكون المصدر عنوان URL صالحًا",
+ "blocked_users": "المستخدمين المحظورين",
+ "user_unblocked": "تم إلغاء حظر المستخدم",
+ "enable_achievement_notifications": "عندما يتم فتح الإنجاز",
+ "launch_minimized": "تم تصغير إطلاق Hydra",
+ "disable_nsfw_alert": "تعطيل تنبيه NSFW",
+ "show_hidden_achievement_description": "إظهار وصف الإنجازات المخفية قبل فتحها",
+ "download_count_one": "{{countFormatted}} خيار التنزيل",
+ "download_count_two": "{{countFormatted}} خيارات التنزيل",
+ "download_count_few": "{{countFormatted}} خيارات التنزيل",
+ "download_count_many": "{{countFormatted}} خيارات التنزيل",
+ "download_count_other": "{{countFormatted}} خيارات التنزيل",
+ "found_download_option_one": "وجد {{countFormatted}} خيار التنزيل",
+ "found_download_option_two": "وجد {{countFormatted}} خيارات التنزيل",
+ "found_download_option_few": "وجد {{countFormatted}} خيارات التنزيل",
+ "found_download_option_many": "وجد {{countFormatted}} خيارات التنزيل",
+ "found_download_option_other": "وجد {{countFormatted}} خيارات التنزيل"
},
"notifications": {
- "download_complete": "تم التحميل",
- "game_ready_to_install": "{{title}} جاهزة للتثبيت",
- "repack_list_updated": "قائمة التجميعات المحدثة",
- "repack_count_one": "{{count}} حزمة مضافة",
- "repack_count_other": "{{count}} حزم مُضافة"
+ "download_complete": "اكتمل التنزيل",
+ "game_ready_to_install": "{{title}} جاهز للتثبيت",
+ "repack_list_updated": "تم تحديث قائمة إعادة التعبئة",
+ "new_update_available": "إصدار {{version}} متاح",
+ "restart_to_install_update": "أعد تشغيل Hydra لتثبيت التحديث",
+ "notification_achievement_unlocked_title": "تم فتح الإنجاز لـ {{game}}",
+ "notification_achievement_unlocked_body": "{{achievement}} وغيرها {{count}} تم فتحها",
+ "repack_count_zero": "{{count}} تمت إضافة العبوات",
+ "repack_count_one": "{{count}} تمت إضافة أعد حزم",
+ "repack_count_two": "{{count}} تمت إضافة العبوات",
+ "repack_count_few": "{{count}} تمت إضافة العبوات",
+ "repack_count_many": "{{count}} تمت إضافة العبوات",
+ "repack_count_other": "{{count}} تمت إضافة العبوات"
},
"system_tray": {
- "open": "فتح هايدرا",
+ "open": "افتح Hydra",
"quit": "خروج"
},
"game_card": {
@@ -137,10 +294,109 @@
},
"binary_not_found_modal": {
"title": "البرامج غير مثبتة",
- "description": "لم يتم العثور على ملفات Wine أو Lutris التنفيذية على نظامك",
- "instructions": "تحقق من الطريقة الصحيحة لتثبيت أي منها على توزيعة Linux الخاصة بك حتى تعمل اللعبة بشكل طبيعي"
+ "description": "لم يتم العثور على الملفات التنفيذية الخاصة بـ Wine أو Lutris على نظامك",
+ "instructions": "تحقق من الطريقة الصحيحة لتثبيت أي منها على توزيعة Linux لديك حتى تعمل اللعبة بشكل طبيعي"
},
"modal": {
- "close": "زر إغلاق"
+ "close": "زر الإغلاق"
+ },
+ "forms": {
+ "toggle_password_visibility": "تبديل رؤية كلمة المرور"
+ },
+ "user_profile": {
+ "amount_hours": "{{amount}} ساعات",
+ "amount_minutes": "{{amount}} دقائق",
+ "last_time_played": "لعبت آخر مرة {{period}}",
+ "activity": "النشاط الأخير",
+ "library": "مكتبة",
+ "total_play_time": "إجمالي وقت اللعب: {{amount}}",
+ "no_recent_activity_title": "هممم... لا شيء هنا",
+ "no_recent_activity_description": "لم تلعب أي مباراة مؤخرًا. ",
+ "display_name": "اسم العرض",
+ "saving": "توفير",
+ "save": "يحفظ",
+ "edit_profile": "تحرير الملف الشخصي",
+ "saved_successfully": "تم الحفظ بنجاح",
+ "try_again": "من فضلك، حاول مرة أخرى",
+ "sign_out_modal_title": "هل أنت متأكد؟",
+ "cancel": "إلغاء",
+ "successfully_signed_out": "تم تسجيل الخروج بنجاح",
+ "sign_out": "تسجيل الخروج",
+ "playing_for": "اللعب من أجل {{amount}}",
+ "sign_out_modal_text": "مكتبتك مرتبطة بحسابك الحالي. ",
+ "add_friends": "أضف أصدقاء",
+ "add": "يضيف",
+ "friend_code": "رمز الصديق",
+ "see_profile": "انظر الملف الشخصي",
+ "sending": "إرسال",
+ "friend_request_sent": "تم إرسال طلب الصداقة",
+ "friends": "أصدقاء",
+ "friends_list": "قائمة الأصدقاء",
+ "user_not_found": "لم يتم العثور على المستخدم",
+ "block_user": "حظر المستخدم",
+ "add_friend": "إضافة صديق",
+ "request_sent": "تم إرسال الطلب",
+ "request_received": "تم استلام الطلب",
+ "accept_request": "قبول الطلب",
+ "ignore_request": "تجاهل الطلب",
+ "cancel_request": "إلغاء الطلب",
+ "undo_friendship": "التراجع عن الصداقة",
+ "request_accepted": "تم قبول الطلب",
+ "user_blocked_successfully": "تم حظر المستخدم بنجاح",
+ "user_block_modal_text": "هذا سوف يمنع {{displayName}}",
+ "blocked_users": "المستخدمين المحظورين",
+ "unblock": "إلغاء الحظر",
+ "no_friends_added": "ليس لديك أي أصدقاء مضافين",
+ "pending": "قيد الانتظار",
+ "no_pending_invites": "ليس لديك أي دعوات معلقة",
+ "no_blocked_users": "ليس لديك أي مستخدمين محظورين",
+ "friend_code_copied": "تم نسخ رمز الصديق",
+ "undo_friendship_modal_text": "سيؤدي هذا إلى التراجع عن صداقتك معه {{displayName}}",
+ "privacy_hint": "لضبط من يمكنه رؤية هذا، انتقل إلى <0>إعدادات0>",
+ "locked_profile": "هذا الملف الشخصي خاص",
+ "image_process_failure": "فشل أثناء معالجة الصورة",
+ "required_field": "هذه الخانة مطلوبه",
+ "displayname_min_length": "يجب أن يتكون اسم العرض من 3 أحرف على الأقل",
+ "displayname_max_length": "يجب ألا يزيد طول اسم العرض عن 50 حرفًا",
+ "report_profile": "الإبلاغ عن هذا الملف الشخصي",
+ "report_reason": "لماذا تقوم بالإبلاغ عن هذا الملف الشخصي؟",
+ "report_description": "معلومات إضافية",
+ "report_description_placeholder": "معلومات إضافية",
+ "report": "تقرير",
+ "report_reason_hate": "خطاب الكراهية",
+ "report_reason_sexual_content": "المحتوى الجنسي",
+ "report_reason_violence": "عنف",
+ "report_reason_spam": "رسائل إلكترونية مزعجة",
+ "profile_reported": "تم الإبلاغ عن الملف الشخصي",
+ "your_friend_code": "رمز صديقك:",
+ "upload_banner": "تحميل لافتة",
+ "uploading_banner": "جارٍ تحميل البانر…",
+ "background_image_updated": "تم تحديث صورة الخلفية",
+ "report_reason_zero": "آخر",
+ "report_reason_one": "لماذا تقوم بالإبلاغ عن هذا الملف الشخصي؟",
+ "report_reason_two": "آخر",
+ "report_reason_few": "آخر",
+ "report_reason_many": "آخر",
+ "report_reason_other": "آخر"
+ },
+ "achievement": {
+ "achievement_unlocked": "تم فتح الإنجاز",
+ "user_achievements": "{{displayName}}إنجازات",
+ "your_achievements": "إنجازاتك",
+ "unlocked_at": "مقفلة في:",
+ "subscription_needed": "مطلوب اشتراك Hydra Cloud لرؤية هذا المحتوى",
+ "new_achievements_unlocked": "مفتوح {{achievementCount}} انجازات جديدة من {{gameCount}} ألعاب",
+ "achievement_progress": "{{unlockedCount}}/{{totalCount}} الإنجازات",
+ "achievements_unlocked_for_game": "مفتوح {{achievementCount}} انجازات جديدة ل {{gameTitle}}"
+ },
+ "tour": {
+ "subscription_tour_title": "اشتراك Hydra كلاود",
+ "subscribe_now": "اشترك الآن",
+ "cloud_saving": "الحفظ السحابي",
+ "cloud_achievements": "احفظ إنجازاتك على السحابة",
+ "animated_profile_picture": "صور شخصية متحركة",
+ "premium_support": "دعم متميز",
+ "show_and_compare_achievements": "عرض ومقارنة إنجازاتك مع المستخدمين الآخرين",
+ "animated_profile_banner": "لافتة الملف الشخصي المتحركة"
}
}
diff --git a/src/locales/bg/translation.json b/src/locales/bg/translation.json
index f9999582..a1a5306f 100644
--- a/src/locales/bg/translation.json
+++ b/src/locales/bg/translation.json
@@ -29,7 +29,7 @@
"need_help": "Имате нужда от помощ??"
},
"header": {
- "search": "Търси игри",
+ "search": "Търсене",
"home": "Начало",
"catalogue": "Каталог",
"downloads": "Изтегляния",
@@ -65,7 +65,7 @@
"calculating_eta": "Калкулиране на оставащо време…",
"downloading_metadata": "Изтегляне на метадата…",
"filter": "Филтрирай repacks",
- "requirements": "Състемни изисквания",
+ "requirements": "Системни изисквания",
"minimum": "Минимални",
"recommended": "Препоръчителни",
"paused": "Паузирано",
@@ -79,8 +79,8 @@
"add_to_library": "Добави в библиотеката",
"remove_from_library": "Премахни от библиотеката",
"no_downloads": "Няма налични изтегляния",
- "play_time": "Играно {{amount}}",
- "last_time_played": "Последно играно {{period}}",
+ "play_time": "Игрално време {{amount}}",
+ "last_time_played": "Последно пускане {{period}}",
"not_played_yet": "Не сте играли {{title}} все още",
"next_suggestion": "Следващо предложение",
"play": "Пускане",
@@ -110,7 +110,7 @@
"remove_from_library_description": "Това ще премахне {{game}} от Библиотеката",
"options": "Опции",
"executable_section_title": "Стартиращ файл",
- "executable_section_description": "Пътят на файла, който ще се изпълни, когато се щракне върху \"Играй\"",
+ "executable_section_description": "Пътят на файла, който ще се изпълни, когато се щракне върху \"Пускане\"",
"downloads_secion_title": "Свалени",
"downloads_section_description": "Вижте актуализации или други версии на тази игра",
"danger_zone_section_title": "Опасна зона",
@@ -162,7 +162,7 @@
"no_download_option_info": "Няма налични данни",
"backup_deletion_failed": "Неуспешно изтриване на резервно копие",
"max_number_of_artifacts_reached": "Достигнат максимален брой резервни копия за тази игра",
- "achievements_not_sync": "Постиженията ви не са синхронизирани",
+ "achievements_not_sync": "Постиженията не са синхронизирани",
"manage_files_description": "Управлявайте кои файлове ще бъдат архивирани и възстановени",
"select_folder": "Избери папка",
"backup_from": "Резервно копие от {{date}}",
@@ -198,7 +198,7 @@
"downloads_completed": "Приключени",
"queued": "В опашка",
"no_downloads_title": "Толкова е празно",
- "no_downloads_description": "Все още не сте изтеглили нищо с Hydra, но никога не е късно да започнете..",
+ "no_downloads_description": "Все още не сте изтеглили нищо с Hydra, но никога не е късно да започнете...",
"checking_files": "Проверка на файлове…"
},
"settings": {
@@ -331,7 +331,7 @@
"blocked_users": "Блокирани потребители",
"unblock": "Отблокирай",
"no_friends_added": "Не сте добавили приятели",
- "pending": "Чакащо",
+ "pending": "Чакащи",
"no_pending_invites": "Нямате чакащи покани",
"no_blocked_users": "Нямате блокирани потребители",
"friend_code_copied": "Приятелския код е копиран",
diff --git a/src/locales/cs/translation.json b/src/locales/cs/translation.json
index b5b602c5..d839fa46 100644
--- a/src/locales/cs/translation.json
+++ b/src/locales/cs/translation.json
@@ -6,7 +6,11 @@
"home": {
"featured": "Doporučené",
"surprise_me": "Překvap mě",
- "no_results": "Výsledek nenalezen"
+ "no_results": "Výsledek nenalezen",
+ "start_typing": "Začni psát pro vyhledávání...",
+ "hot": "Teď populární",
+ "weekly": "📅 Nejlepší hry týdne",
+ "achievements": "🏆 Hry k překonání"
},
"sidebar": {
"catalogue": "Katalog",
@@ -20,7 +24,9 @@
"home": "Domov",
"queued": "{{title}} (V řadě)",
"game_has_no_executable": "Hra nemá zvolen žádný spustitelný soubor",
- "sign_in": "Přihlásit se"
+ "sign_in": "Přihlásit se",
+ "friends": "Přátelé",
+ "need_help": "Potřebujete pomoc?"
},
"header": {
"search": "Vyhledat hry",
@@ -113,7 +119,54 @@
"download_paused": "Stahování pozastaveno",
"last_downloaded_option": "Poslední stažená možnost",
"create_shortcut_success": "Zástupce vytvořen úspěšně",
- "create_shortcut_error": "Chyba při pokusu vytvořit zástupce"
+ "create_shortcut_error": "Chyba při pokusu vytvořit zástupce",
+ "nsfw_content_title": "Tahle hra obsahuje nevhodný obsah",
+ "nsfw_content_description": "{{title}} obsahuje obsah, který by nemusel být vhodný pro všechny věkové skupiny. Jste si jisti, že chcete pokračovat?",
+ "allow_nsfw_content": "Pokračovat",
+ "refuse_nsfw_content": "Jít zpět",
+ "stats": "Statistiky",
+ "download_count": "Stažení",
+ "player_count": "Aktivní hráči",
+ "download_error": "Tahle možnost stažení není dostupná",
+ "download": "Stáhnout",
+ "executable_path_in_use": "Spustitelný soubor již používá \"{{game}}\"",
+ "warning": "Varování",
+ "hydra_needs_to_remain_open": "Pro tohle stažení, musí Hydra zůstat otevřená až do konce stahování. Pokud Hydru zavřete dříve, postup stahování bude ztracen.",
+ "achievements": "Achievementy",
+ "achievements_count": "Achievementy {{unlockedCount}}/{{achievementsCount}}",
+ "cloud_save": "Uložení v cloudu",
+ "cloud_save_description": "Uložte si svůj postup v cloud a pokračujte v hraní na jakémkoliv zářízení",
+ "backups": "Zálohy",
+ "install_backup": "Nainstalovat",
+ "delete_backup": "Smazat",
+ "create_backup": "Vytvořit zálohu",
+ "last_backup_date": "Poslední záloha vytvořena {{date}}",
+ "no_backup_preview": "Žádné zálohy nebyly nalezeny pro tuhle hru",
+ "restoring_backup": "Obnovuji zálohu ({{progress}} hotovo)...",
+ "uploading_backup": "Nahrávání zálohy...",
+ "no_backups": "Nemáte zatím vytvořeny žádné zálohy pro tuto hru",
+ "backup_uploaded": "Záloha nahrána",
+ "backup_deleted": "Záloha odstraněna",
+ "backup_restored": "Záloha obnovena",
+ "see_all_achievements": "Zobrazit všechny achievementy",
+ "sign_in_to_see_achievements": "Musíte se přihlásit pro zobrazení achievementů",
+ "mapping_method_automatic": "Automaticky",
+ "mapping_method_manual": "Manuálně",
+ "mapping_method_label": "Metoda mapování",
+ "files_automatically_mapped": "Soubory automaticky zmapovány",
+ "no_backups_created": "Žádné zálohy nebyly vytvořeny pro tuto hru",
+ "manage_files": "Spravovat soubory",
+ "loading_save_preview": "Hledání uložených her...",
+ "wine_prefix": "Wine Prefix",
+ "wine_prefix_description": "Wine Prefix použit pro spuštění této hry",
+ "no_download_option_info": "Žádné informace nejsou dostupny",
+ "backup_deletion_failed": "Nepovedlo se odstranit zálohu",
+ "max_number_of_artifacts_reached": "Dosáhli jste maximálního počtu záloh pro tuto hru",
+ "achievements_not_sync": "Vaše achievementy nejsou synchronizovány",
+ "manage_files_description": "Spravovat, které soubory budou zálohovány a obnoveny",
+ "select_folder": "Vybrat složku",
+ "backup_from": "Zálohy z {{date}}",
+ "custom_backup_location_set": "Vlastní umístění záloh nastaveno"
},
"activation": {
"title": "Aktivovat hydru",
@@ -189,7 +242,21 @@
"found_download_option_zero": "Nenalezena žádná možnost stahování",
"found_download_option_one": "Nalezena {{countFormatted}} možnost stahování",
"found_download_option_other": "Nalezeny {{countFormatted}} možnosti stahování",
- "import": "Importovat"
+ "import": "Importovat",
+ "public": "Veřejné",
+ "private": "Soukromé",
+ "friends_only": "Pouze přátelé",
+ "privacy": "Soukromí",
+ "profile_visibility": "Viditelnost profilu",
+ "profile_visibility_description": "Vyberte si, kdo může vidět váš profil a knihovnu",
+ "required_field": "Toto pole je povinné",
+ "source_already_exists": "Tento zdroj byl již přidán",
+ "must_be_valid_url": "Zdroj musí být platký odkaz URL",
+ "blocked_users": "Zablokovaní uživatelé",
+ "user_unblocked": "Uživatel byl odblokován",
+ "enable_achievement_notifications": "Když je odemknut achievement",
+ "launch_minimized": "Spustit v minimalizovaném režimu",
+ "disable_nsfw_alert": "Deaktivovat upozornění na nevhodný obsah"
},
"notifications": {
"download_complete": "Stahování dokončeno",
@@ -198,7 +265,9 @@
"repack_count_one": "{{count}} repack přidán",
"repack_count_other": "{{count}} repacky přidány",
"new_update_available": "Version {{version}} je dostupná",
- "restart_to_install_update": "Restartuj Hydru pro aktualizaci"
+ "restart_to_install_update": "Restartuj Hydru pro aktualizaci",
+ "notification_achievement_unlocked_title": "Achievement pro {{game}} byl odemknut",
+ "notification_achievement_unlocked_body": "{{achievement}} a dalších {{count}} byly odemknuty"
},
"system_tray": {
"open": "Otevřít Hydru",
@@ -266,6 +335,47 @@
"no_pending_invites": "Nemáte žádné příchozí žádosti",
"no_blocked_users": "Nemáte nikoho zablokovaného",
"friend_code_copied": "Kód přítele zkopírován",
- "undo_friendship_modal_text": "Tímto zrušíte své přátelství s {{displayName}}"
+ "undo_friendship_modal_text": "Tímto zrušíte své přátelství s {{displayName}}",
+ "privacy_hint": "Pro změnu toho, kdo tohle může vidět, jděte do <0>Nastavení0>",
+ "locked_profile": "Tento profil je soukromý",
+ "image_process_failure": "Nastala chyba při zpracování obrázku",
+ "required_field": "Toto pole je povinné",
+ "displayname_min_length": "Uživatelské jméno musí být minimálně 3 znaky dlouhé",
+ "displayname_max_length": "Uživatelské jméno musí být maximálně 50 znaků dlouhé",
+ "report_profile": "Nahlásit profil",
+ "report_reason": "Proč nahlašujete tento profil?",
+ "report_description": "Přídavné informace",
+ "report_description_placeholder": "Přídavné informace",
+ "report": "Nahlásit",
+ "report_reason_hate": "Nenávistné projevy",
+ "report_reason_sexual_content": "Sexuální obsah",
+ "report_reason_violence": "Násilí",
+ "report_reason_spam": "Spam",
+ "report_reason_other": "Ostatní",
+ "profile_reported": "Profil nahlášen",
+ "your_friend_code": "Tvůj kód přítele:",
+ "upload_banner": "Nahrát banner profilu",
+ "uploading_banner": "Nahrávání banneru",
+ "background_image_updated": "Obrázek pozadí byl změněn"
+ },
+ "achievement": {
+ "achievement_unlocked": "Achievement odemčen",
+ "user_achievements": "Achievementy uživatele {{displayName}}",
+ "your_achievements": "Vaše achievementy",
+ "unlocked_at": "Odemčeno:",
+ "subscription_needed": "Je vyžadováno předplatné Hydra Cloud pro zobrazení tohoto obsahu",
+ "new_achievements_unlocked": "Odemčeno {{achievementCount}} nových achievementů z {{gameCount}} her",
+ "achievement_progress": "{{unlockedCount}}/{{totalCount}} achievementů",
+ "achievements_unlocked_for_game": "Odemčeno {{achievementCount}} nových achievementů pro {{gameTitle}}"
+ },
+ "tour": {
+ "subscription_tour_title": "Předplatné Hydra Cloud",
+ "subscribe_now": "Připojit se",
+ "cloud_saving": "Ukládání v cloudu",
+ "cloud_achievements": "Ukládejte vaše achievementy do cloudu",
+ "animated_profile_picture": "Animované profilové obrázky",
+ "premium_support": "Prémiová podpora",
+ "show_and_compare_achievements": "Zobraz a porovnej achievementy s ostatními uživateli",
+ "animated_profile_banner": "Animovaný banner na profilu"
}
}
diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json
index 1b9cd254..f74cd8e3 100644
--- a/src/locales/en/translation.json
+++ b/src/locales/en/translation.json
@@ -105,6 +105,7 @@
"open_folder": "Open folder",
"open_download_location": "See downloaded files",
"create_shortcut": "Create desktop shortcut",
+ "clear": "Clear",
"remove_files": "Remove files",
"remove_from_library_title": "Are you sure?",
"remove_from_library_description": "This will remove {{game}} from your library",
@@ -166,7 +167,8 @@
"manage_files_description": "Manage which files will be backed up and restored",
"select_folder": "Select folder",
"backup_from": "Backup from {{date}}",
- "custom_backup_location_set": "Custom backup location set"
+ "custom_backup_location_set": "Custom backup location set",
+ "no_directory_selected": "No directory selected"
},
"activation": {
"title": "Activate Hydra",
@@ -261,7 +263,8 @@
"enable_achievement_notifications": "When an achievement is unlocked",
"launch_minimized": "Launch Hydra minimized",
"disable_nsfw_alert": "Disable NSFW alert",
- "seed_after_download_complete": "Seed after download complete"
+ "seed_after_download_complete": "Seed after download complete",
+ "show_hidden_achievement_description": "Show hidden achievements description before unlocking them"
},
"notifications": {
"download_complete": "Download complete",
diff --git a/src/locales/es/translation.json b/src/locales/es/translation.json
index 2830eb0c..a766be1c 100644
--- a/src/locales/es/translation.json
+++ b/src/locales/es/translation.json
@@ -79,7 +79,7 @@
"add_to_library": "Agregar a la biblioteca",
"remove_from_library": "Eliminar de la biblioteca",
"no_downloads": "No hay descargas disponibles",
- "play_time": "Jugado por {{amount}}",
+ "play_time": "Has jugado {{amount}}",
"last_time_played": "Jugado por última vez: {{period}}",
"not_played_yet": "Aún no has jugado a {{title}}",
"next_suggestion": "Siguiente sugerencia",
@@ -100,7 +100,7 @@
"open_screenshot": "Abrir captura {{number}}",
"download_settings": "Ajustes de descarga",
"downloader": "Método de descarga",
- "select_executable": "Seleccionar ejecutable",
+ "select_executable": "Seleccionar",
"no_executable_selected": "No se seleccionó un ejecutable",
"open_folder": "Abrir carpeta",
"open_download_location": "Ver archivos descargados",
@@ -166,7 +166,9 @@
"manage_files_description": "Gestiona los archivos que serán respaldados y restaurados",
"select_folder": "Seleccionar carpeta",
"backup_from": "Copia de seguridad de {{date}}",
- "custom_backup_location_set": "Se configuró la carpeta de copia de seguridad"
+ "custom_backup_location_set": "Se configuró la carpeta de copia de seguridad",
+ "clear": "Limpiar",
+ "no_directory_selected": "No se seleccionó un directório"
},
"activation": {
"title": "Activar Hydra",
@@ -254,7 +256,9 @@
"must_be_valid_url": "La fuente debe ser una URL válida.",
"blocked_users": "Usuarios bloqueados",
"user_unblocked": "El usuario ha sido desbloqueado",
- "enable_achievement_notifications": "Cuando un logro se desbloquea"
+ "enable_achievement_notifications": "Cuando un logro se desbloquea",
+ "launch_minimized": "Iniciar Hydra minimizado",
+ "disable_nsfw_alert": "Desactivar alerta NSFW"
},
"notifications": {
"download_complete": "Descarga completada",
@@ -304,7 +308,7 @@
"cancel": "Cancelar",
"successfully_signed_out": "Sesión cerrada exitosamente",
"sign_out": "Cerrar sesión",
- "playing_for": "Jugando por {{amount}}",
+ "playing_for": "Llevas jugando {{amount}}",
"sign_out_modal_text": "Tu biblioteca se ha vinculado con tu cuenta. Cuando cierres sesión, tú biblioteca ya no será visible y cualquier progreso no se guardará. ¿Continuar con el cierre de sesión?",
"add_friends": "Añadir amigos",
"add": "Añadir",
@@ -361,8 +365,10 @@
"user_achievements": "Logros de {{displayName}}",
"your_achievements": "Tus Logros",
"unlocked_at": "Desbloqueado el:",
- "subscription_needed": "Se necesita una suscripción a Hydra Cloud se necesita para ver este contenido",
- "new_achievements_unlocked": "Desbloqueados {{achievementCount}} nuevos logros de {{gameCount}} juegos"
+ "subscription_needed": "Se necesita una suscripción a Hydra Cloud necesita para ver este contenido",
+ "new_achievements_unlocked": "Desbloqueados {{achievementCount}} nuevos logros de {{gameCount}} juegos",
+ "achievement_progress": "{{unlockedCount}}/{{totalCount}} logros",
+ "achievements_unlocked_for_game": "Se han desbloqueado {{achievementCount}} nuevos logros de {{gameTitle}}"
},
"tour": {
"subscription_tour_title": "Suscripción Hydra Cloud",
diff --git a/src/locales/pt-BR/translation.json b/src/locales/pt-BR/translation.json
index 865083ef..92fe94ea 100644
--- a/src/locales/pt-BR/translation.json
+++ b/src/locales/pt-BR/translation.json
@@ -162,7 +162,9 @@
"backup_from": "Backup de {{date}}",
"custom_backup_location_set": "Localização customizada selecionada",
"select_folder": "Selecione a pasta",
- "manage_files_description": "Gerencie quais arquivos serão feitos backup"
+ "manage_files_description": "Gerencie quais arquivos serão feitos backup",
+ "clear": "Limpar",
+ "no_directory_selected": "Nenhum diretório selecionado"
},
"activation": {
"title": "Ativação",
@@ -257,7 +259,8 @@
"enable_achievement_notifications": "Quando uma conquista é desbloqueada",
"launch_minimized": "Iniciar o Hydra minimizado",
"disable_nsfw_alert": "Desativar alerta de conteúdo inapropriado",
- "seed_after_download_complete": "Semear após a conclusão do download"
+ "seed_after_download_complete": "Semear após a conclusão do download",
+ "show_hidden_achievement_description": "Mostrar descrição de conquistas ocultas antes de debloqueá-las"
},
"notifications": {
"download_complete": "Download concluído",
diff --git a/src/locales/ru/translation.json b/src/locales/ru/translation.json
index d1282951..8bf97eb7 100644
--- a/src/locales/ru/translation.json
+++ b/src/locales/ru/translation.json
@@ -4,12 +4,13 @@
"successfully_signed_in": "Успешный вход"
},
"home": {
- "featured": "Рекомендованное",
+ "featured": "Рекомендации",
"surprise_me": "Удиви меня",
"no_results": "Ничего не найдено",
"hot": "Сейчас в топе",
"start_typing": "Начинаю вводить текст для поиска...",
- "weekly": "📅 Лучшие игры недели"
+ "weekly": "📅 Лучшие игры недели",
+ "achievements": "🏆 Игры, в которых нужно победить"
},
"sidebar": {
"catalogue": "Каталог",
@@ -19,7 +20,7 @@
"downloading_metadata": "{{title}} (Загрузка метаданных…)",
"paused": "{{title}} (Приостановлено)",
"downloading": "{{title}} ({{percentage}} - Загрузка…)",
- "filter": "Фильтр библиотеки",
+ "filter": "Поиск",
"home": "Главная",
"queued": "{{title}} (В очереди)",
"game_has_no_executable": "Файл запуска игры не выбран",
@@ -49,10 +50,10 @@
"previous_page": "Предыдущая страница"
},
"game_details": {
- "open_download_options": "Открыть варианты загрузки",
- "download_options_zero": "Нет вариантов загрузки",
- "download_options_one": "{{count}} вариант загрузки",
- "download_options_other": "{{count}} вариантов загрузки",
+ "open_download_options": "Открыть источники",
+ "download_options_zero": "Нет источников",
+ "download_options_one": "{{count}} источник",
+ "download_options_other": "{{count}} источников",
"updated_at": "Обновлено {{updated_at}}",
"install": "Установить",
"resume": "Возобновить",
@@ -63,7 +64,7 @@
"eta": "Окончание {{eta}}",
"calculating_eta": "Подсчёт оставшегося времени…",
"downloading_metadata": "Загрузка метаданных…",
- "filter": "Фильтр репаков",
+ "filter": "Поиск репаков",
"requirements": "Системные требования",
"minimum": "Минимальные",
"recommended": "Рекомендуемые",
@@ -77,7 +78,7 @@
"accuracy": "точность {{accuracy}}%",
"add_to_library": "Добавить в библиотеку",
"remove_from_library": "Удалить из библиотеки",
- "no_downloads": "Нет доступных загрузок",
+ "no_downloads": "Нет доступных источников",
"play_time": "Сыграно {{amount}}",
"last_time_played": "Последний запуск {{period}}",
"not_played_yet": "Вы ещё не играли в {{title}}",
@@ -91,7 +92,7 @@
"select_folder_hint": "Чтобы изменить папку загрузок по умолчанию, откройте <0>Настройки0>",
"download_now": "Загрузить сейчас",
"no_shop_details": "Не удалось получить описание",
- "download_options": "Вариантов загрузки",
+ "download_options": "Источники",
"download_path": "Путь для загрузок",
"previous_screenshot": "Предыдущий скриншот",
"next_screenshot": "Следующий скриншот",
@@ -119,16 +120,53 @@
"last_downloaded_option": "Последний вариант загрузки",
"create_shortcut_success": "Ярлык создан",
"create_shortcut_error": "Не удалось создать ярлык",
- "allow_nsfw_content": "Продолжать",
+ "allow_nsfw_content": "Продолжить",
"download": "Скачать",
"download_count": "Загрузки",
"download_error": "Этот вариант загрузки недоступен",
"executable_path_in_use": "Исполняемый файл уже используется \"{{game}}\"",
"nsfw_content_description": "{{title}} содержит контент, который может не подходить для всех возрастов. \nВы уверены, что хотите продолжить?",
"nsfw_content_title": "Эта игра содержит неприемлемый контент",
+ "refuse_nsfw_content": "Назад",
+ "stats": "Статистика",
"player_count": "Активные игроки",
- "refuse_nsfw_content": "Возвращаться",
- "stats": "Статистика"
+ "warning": "Внимание:",
+ "hydra_needs_to_remain_open": "Для этой загрузки Hydra должна оставаться открытой до завершения. Если Hydra закроется до завершения, вы потеряете прогресс.",
+ "achievements": "Достижения",
+ "achievements_count": "Достижения {{unlockedCount}}/{{achievementsCount}}",
+ "cloud_save": "Облачное сохранение",
+ "cloud_save_description": "Сохраняйте ваш прогресс в облаке и продолжайте играть на любом устройстве",
+ "backups": "Резервные копии",
+ "install_backup": "Установить",
+ "delete_backup": "Удалить",
+ "create_backup": "Создать новую резервную копию",
+ "last_backup_date": "Последняя резервная копия от {{date}}",
+ "no_backup_preview": "Сохранения для этого заголовка не найдены",
+ "restoring_backup": "Восстановление резервной копии ({{progress}} завершено)…",
+ "uploading_backup": "Загрузка резервной копии…",
+ "no_backups": "Вы еще не создали резервных копий для этой игры",
+ "backup_uploaded": "Резервная копия загружена",
+ "backup_deleted": "Резервная копия удалена",
+ "backup_restored": "Резервная копия восстановлена",
+ "see_all_achievements": "Просмотреть все достижения",
+ "sign_in_to_see_achievements": "Войдите, чтобы увидеть достижения",
+ "mapping_method_automatic": "Автоматическая",
+ "mapping_method_manual": "Ручная",
+ "mapping_method_label": "Метод сопоставления",
+ "files_automatically_mapped": "Файлы автоматически сопоставлены",
+ "no_backups_created": "Для этой игры не создано резервных копий",
+ "manage_files": "Управление файлами",
+ "loading_save_preview": "Поиск сохранений…",
+ "wine_prefix": "Префикс Wine",
+ "wine_prefix_description": "Префикс Wine, используемый для запуска этой игры",
+ "no_download_option_info": "Информация недоступна",
+ "backup_deletion_failed": "Не удалось удалить резервную копию",
+ "max_number_of_artifacts_reached": "Достигнуто максимальное количество резервных копий для этой игры",
+ "achievements_not_sync": "Ваши достижения не синхронизированы",
+ "manage_files_description": "Управляйте файлами, которые будут сохраняться и восстанавливаться",
+ "select_folder": "Выбрать папку",
+ "backup_from": "Резервная копия от {{date}}",
+ "custom_backup_location_set": "Установлено настраиваемое местоположение резервной копии"
},
"activation": {
"title": "Активировать Hydra",
@@ -147,7 +185,7 @@
"completed": "Завершено",
"removed": "Не скачано",
"cancel": "Отмена",
- "filter": "Фильтр загруженных игр",
+ "filter": "Поиск загруженных игр",
"remove": "Удалить",
"downloading_metadata": "Загрузка метаданных…",
"deleting": "Удаление установщика…",
@@ -168,10 +206,13 @@
"change": "Изменить",
"notifications": "Уведомления",
"enable_download_notifications": "По завершении загрузки",
+ "enable_achievement_notifications": "Когда достижение разблокировано",
"enable_repack_list_notifications": "При добавлении нового репака",
"real_debrid_api_token_label": "Real-Debrid API-токен",
"quit_app_instead_hiding": "Закрывать приложение вместо сворачивания в трей",
"launch_with_system": "Запускать Hydra вместе с системой",
+ "launch_minimized": "Запустить Hydra в свернутом виде",
+ "disable_nsfw_alert": "Отключить предупреждение о непристойном контенте",
"general": "Основные",
"behavior": "Поведение",
"download_sources": "Источники загрузки",
@@ -196,7 +237,7 @@
"add_download_source_description": "Вставьте ссылку на .json-файл",
"download_source_up_to_date": "Обновлён",
"download_source_errored": "Ошибка",
- "sync_download_sources": "Синхронизировать источники",
+ "sync_download_sources": "Обновить источники",
"removed_download_source": "Источник загрузок удален",
"added_download_source": "Источник загрузок добавлен",
"download_sources_synced": "Все источники загрузок синхронизированы",
@@ -206,16 +247,17 @@
"found_download_option_other": "Найдено {{countFormatted}} вариантов загрузки",
"import": "Импортировать",
"blocked_users": "Заблокированные пользователи",
- "friends_only": "Только друзья",
+ "friends_only": "Только для друзей",
"must_be_valid_url": "Источник должен быть действительным URL-адресом.",
"privacy": "Конфиденциальность",
"private": "Частный",
"profile_visibility": "Видимость профиля",
"profile_visibility_description": "Выберите, кто может видеть ваш профиль и библиотеку",
- "public": "Общественный",
+ "public": "Публичный",
"required_field": "Это поле обязательно к заполнению",
"source_already_exists": "Этот источник уже добавлен",
- "user_unblocked": "Пользователь разблокирован"
+ "user_unblocked": "Пользователь разблокирован",
+ "show_hidden_achievement_description": "Показывать описание скрытых достижений перед их получением"
},
"notifications": {
"download_complete": "Загрузка завершена",
@@ -223,15 +265,17 @@
"repack_list_updated": "Список репаков обновлен",
"repack_count_one": "{{count}} репак добавлен",
"repack_count_other": "{{count}} репаков добавлено",
- "new_update_available": "Доступна версия {{version}}",
- "restart_to_install_update": "Перезапустите Hydra для установки обновления"
+ "new_update_available": "Доступна новая версия {{version}}",
+ "restart_to_install_update": "Перезапустите Hydra для установки обновления",
+ "notification_achievement_unlocked_title": "Достижение разблокировано для {{game}}",
+ "notification_achievement_unlocked_body": "были разблокированы {{achievement}} и другие {{count}}"
},
"system_tray": {
"open": "Открыть Hydra",
"quit": "Выйти"
},
"game_card": {
- "no_downloads": "Нет доступных загрузок"
+ "no_downloads": "Нет доступных источников"
},
"binary_not_found_modal": {
"title": "Программы не установлены",
@@ -310,5 +354,25 @@
"report_reason_violence": "Насилие",
"required_field": "Это поле обязательно к заполнению",
"undo_friendship_modal_text": "Это отменит вашу дружбу с {{displayName}}."
+ },
+ "achievement": {
+ "achievement_unlocked": "Достижение разблокировано",
+ "user_achievements": "Достижения {{displayName}}",
+ "your_achievements": "Ваши достижения",
+ "unlocked_at": "Разблокировано:",
+ "subscription_needed": "Для просмотра этого содержимого необходима подписка на Hydra Cloud",
+ "new_achievements_unlocked": "Разблокировано {{achievementCount}} новых достижений из {{gameCount}} игр",
+ "achievement_progress": "{{unlockedCount}}/{{totalCount}} достижений",
+ "achievements_unlocked_for_game": "Разблокировано {{achievementCount}} новых достижений для {{gameTitle}}"
+ },
+ "tour": {
+ "subscription_tour_title": "Подписка Hydra Cloud",
+ "subscribe_now": "Подпишитесь прямо сейчас",
+ "cloud_saving": "Сохранение в облаке",
+ "cloud_achievements": "Сохраняйте свои достижения в облаке",
+ "animated_profile_picture": "Анимированные фотографии профиля",
+ "premium_support": "Премиальная поддержка",
+ "show_and_compare_achievements": "Показывайте и сравнивайте свои достижения с достижениями других пользователей",
+ "animated_profile_banner": "Анимированный баннер профиля"
}
}
diff --git a/src/main/entity/user-preferences.entity.ts b/src/main/entity/user-preferences.entity.ts
index 24cfcc8f..a850b42f 100644
--- a/src/main/entity/user-preferences.entity.ts
+++ b/src/main/entity/user-preferences.entity.ts
@@ -44,6 +44,9 @@ export class UserPreferences {
@Column("boolean", { default: true })
seedAfterDownloadComplete: boolean;
+ @Column("boolean", { default: false })
+ showHiddenAchievementsDescription: boolean;
+
@CreateDateColumn()
createdAt: Date;
diff --git a/src/main/events/catalogue/get-how-long-to-beat.ts b/src/main/events/catalogue/get-how-long-to-beat.ts
index 08b8fbf2..2a1492ef 100644
--- a/src/main/events/catalogue/get-how-long-to-beat.ts
+++ b/src/main/events/catalogue/get-how-long-to-beat.ts
@@ -1,16 +1,16 @@
import type { GameShop, HowLongToBeatCategory } from "@types";
-import { HydraApi } from "@main/services";
import { registerEvent } from "../register-event";
+import { HydraApi } from "@main/services";
const getHowLongToBeat = async (
_event: Electron.IpcMainInvokeEvent,
- shop: GameShop,
- objectId: string
+ objectId: string,
+ shop: GameShop
): Promise
=> {
const params = new URLSearchParams({
+ objectId,
shop,
- objectId: objectId.toString(),
});
return HydraApi.get(`/games/how-long-to-beat?${params.toString()}`, null, {
diff --git a/src/main/events/index.ts b/src/main/events/index.ts
index 4a5175e3..fd89ba30 100644
--- a/src/main/events/index.ts
+++ b/src/main/events/index.ts
@@ -1,4 +1,4 @@
-import { appVersion, defaultDownloadsPath } from "@main/constants";
+import { appVersion, defaultDownloadsPath, isStaging } from "@main/constants";
import { ipcMain } from "electron";
import "./catalogue/get-catalogue";
@@ -74,5 +74,6 @@ import "./misc/show-item-in-folder";
ipcMain.handle("ping", () => "pong");
ipcMain.handle("getVersion", () => appVersion);
+ipcMain.handle("isStaging", () => isStaging);
ipcMain.handle("isPortableVersion", () => isPortableVersion());
ipcMain.handle("getDefaultDownloadsPath", () => defaultDownloadsPath);
diff --git a/src/main/events/library/close-game.ts b/src/main/events/library/close-game.ts
index 62f932cd..a7546e01 100644
--- a/src/main/events/library/close-game.ts
+++ b/src/main/events/library/close-game.ts
@@ -25,7 +25,11 @@ const closeGame = async (
if (!game) return;
const gameProcess = processes.find((runningProcess) => {
- return runningProcess.exe === game.executablePath;
+ if (process.platform === "linux") {
+ return runningProcess.name === game.executablePath?.split("/").at(-1);
+ } else {
+ return runningProcess.exe === game.executablePath;
+ }
});
if (gameProcess) {
diff --git a/src/main/events/library/select-game-wine-prefix.ts b/src/main/events/library/select-game-wine-prefix.ts
index a75a3cb0..d9f01c08 100644
--- a/src/main/events/library/select-game-wine-prefix.ts
+++ b/src/main/events/library/select-game-wine-prefix.ts
@@ -5,9 +5,9 @@ import { registerEvent } from "../register-event";
const selectGameWinePrefix = async (
_event: Electron.IpcMainInvokeEvent,
id: number,
- winePrefixPath: string
+ winePrefixPath: string | null
) => {
- return gameRepository.update({ id }, { winePrefixPath });
+ return gameRepository.update({ id }, { winePrefixPath: winePrefixPath });
};
registerEvent("selectGameWinePrefix", selectGameWinePrefix);
diff --git a/src/main/events/library/update-executable-path.ts b/src/main/events/library/update-executable-path.ts
index 9be36ab1..aee80771 100644
--- a/src/main/events/library/update-executable-path.ts
+++ b/src/main/events/library/update-executable-path.ts
@@ -6,14 +6,18 @@ import { parseExecutablePath } from "../helpers/parse-executable-path";
const updateExecutablePath = async (
_event: Electron.IpcMainInvokeEvent,
id: number,
- executablePath: string
+ executablePath: string | null
) => {
+ const parsedPath = executablePath
+ ? parseExecutablePath(executablePath)
+ : null;
+
return gameRepository.update(
{
id,
},
{
- executablePath: parseExecutablePath(executablePath),
+ executablePath: parsedPath,
}
);
};
diff --git a/src/main/events/torrenting/start-game-download.ts b/src/main/events/torrenting/start-game-download.ts
index ce16e97b..de10b07d 100644
--- a/src/main/events/torrenting/start-game-download.ts
+++ b/src/main/events/torrenting/start-game-download.ts
@@ -1,6 +1,6 @@
import { registerEvent } from "../register-event";
import type { StartGameDownloadPayload } from "@types";
-import { DownloadManager, HydraApi, logger } from "@main/services";
+import { DownloadManager, HydraApi } from "@main/services";
import { Not } from "typeorm";
import { steamGamesWorker } from "@main/workers";
@@ -76,24 +76,23 @@ const startGameDownload = async (
},
});
- createGame(updatedGame!).catch(() => {});
-
- HydraApi.post(
- "/games/download",
- {
- objectId: updatedGame!.objectID,
- shop: updatedGame!.shop,
- },
- { needsAuth: false }
- ).catch((err) => {
- logger.error("Failed to create game download", err);
- });
-
await DownloadManager.cancelDownload(updatedGame!.id);
await DownloadManager.startDownload(updatedGame!);
await downloadQueueRepository.delete({ game: { id: updatedGame!.id } });
await downloadQueueRepository.insert({ game: { id: updatedGame!.id } });
+
+ await Promise.all([
+ createGame(updatedGame!).catch(() => {}),
+ HydraApi.post(
+ "/games/download",
+ {
+ objectId: updatedGame!.objectID,
+ shop: updatedGame!.shop,
+ },
+ { needsAuth: false }
+ ).catch(() => {}),
+ ]);
});
};
diff --git a/src/main/events/user/get-unlocked-achievements.ts b/src/main/events/user/get-unlocked-achievements.ts
index a831bc50..ffa25399 100644
--- a/src/main/events/user/get-unlocked-achievements.ts
+++ b/src/main/events/user/get-unlocked-achievements.ts
@@ -1,6 +1,9 @@
import type { GameShop, UnlockedAchievement, UserAchievement } from "@types";
import { registerEvent } from "../register-event";
-import { gameAchievementRepository } from "@main/repository";
+import {
+ gameAchievementRepository,
+ userPreferencesRepository,
+} from "@main/repository";
import { getGameAchievementData } from "@main/services/achievements/get-game-achievement-data";
export const getUnlockedAchievements = async (
@@ -12,10 +15,17 @@ export const getUnlockedAchievements = async (
where: { objectId, shop },
});
+ const userPreferences = await userPreferencesRepository.findOne({
+ where: { id: 1 },
+ });
+
+ const showHiddenAchievementsDescription =
+ userPreferences?.showHiddenAchievementsDescription || false;
+
const achievementsData = await getGameAchievementData(
objectId,
shop,
- useCachedData
+ useCachedData ? cachedAchievements : null
);
const unlockedAchievements = JSON.parse(
@@ -50,6 +60,10 @@ export const getUnlockedAchievements = async (
unlocked: false,
unlockTime: null,
icongray: icongray,
+ description:
+ !achievementData.hidden || showHiddenAchievementsDescription
+ ? achievementData.description
+ : undefined,
} as UserAchievement;
})
.sort((a, b) => {
diff --git a/src/main/knex-client.ts b/src/main/knex-client.ts
index 188fa2a5..2c09a7b0 100644
--- a/src/main/knex-client.ts
+++ b/src/main/knex-client.ts
@@ -15,6 +15,8 @@ import { AddStartMinimizedColumn } from "./migrations/20241030171454_add_start_m
import { AddDisableNsfwAlertColumn } from "./migrations/20241106053733_add_disable_nsfw_alert_column";
import { AddShouldSeedColumn } from "./migrations/20241108200154_add_should_seed_colum";
import { AddSeedAfterDownloadColumn } from "./migrations/20241108201806_add_seed_after_download";
+import { AddHiddenAchievementDescriptionColumn } from "./migrations/20241216140633_add_hidden_achievement_description_column ";
+
export type HydraMigration = Knex.Migration & { name: string };
class MigrationSource implements Knex.MigrationSource {
@@ -34,6 +36,7 @@ class MigrationSource implements Knex.MigrationSource {
AddDisableNsfwAlertColumn,
AddShouldSeedColumn,
AddSeedAfterDownloadColumn,
+ AddHiddenAchievementDescriptionColumn,
]);
}
getMigrationName(migration: HydraMigration): string {
diff --git a/src/main/migrations/20241216140633_add_hidden_achievement_description_column .ts b/src/main/migrations/20241216140633_add_hidden_achievement_description_column .ts
new file mode 100644
index 00000000..36771c43
--- /dev/null
+++ b/src/main/migrations/20241216140633_add_hidden_achievement_description_column .ts
@@ -0,0 +1,20 @@
+import type { HydraMigration } from "@main/knex-client";
+import type { Knex } from "knex";
+
+export const AddHiddenAchievementDescriptionColumn: HydraMigration = {
+ name: "AddHiddenAchievementDescriptionColumn",
+ up: (knex: Knex) => {
+ return knex.schema.alterTable("user_preferences", (table) => {
+ return table
+ .boolean("showHiddenAchievementsDescription")
+ .notNullable()
+ .defaultTo(0);
+ });
+ },
+
+ down: async (knex: Knex) => {
+ return knex.schema.alterTable("user_preferences", (table) => {
+ return table.dropColumn("showHiddenAchievementsDescription");
+ });
+ },
+};
diff --git a/src/main/scripts/get-games-icon-hash.ts b/src/main/scripts/get-games-icon-hash.ts
deleted file mode 100644
index 36ecd35e..00000000
--- a/src/main/scripts/get-games-icon-hash.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import path from "node:path";
-import fs from "node:fs";
-
-import { getSteamGameClientIcon, logger } from "@main/services";
-import { chunk } from "lodash-es";
-import { seedsPath } from "@main/constants";
-
-import type { SteamGame } from "@types";
-
-const steamGamesPath = path.join(seedsPath, "steam-games.json");
-
-const steamGames = JSON.parse(
- fs.readFileSync(steamGamesPath, "utf-8")
-) as SteamGame[];
-
-const chunks = chunk(steamGames, 1500);
-
-for (const chunk of chunks) {
- await Promise.all(
- chunk.map(async (steamGame) => {
- if (steamGame.clientIcon) return;
-
- const index = steamGames.findIndex((game) => game.id === steamGame.id);
-
- try {
- const clientIcon = await getSteamGameClientIcon(String(steamGame.id));
-
- steamGames[index].clientIcon = clientIcon;
-
- logger.log("info", `Set ${steamGame.name} client icon`);
- } catch (err) {
- steamGames[index].clientIcon = null;
- logger.log("info", `Could not set icon for ${steamGame.name}`);
- }
- })
- );
-
- fs.writeFileSync(steamGamesPath, JSON.stringify(steamGames));
- logger.log("info", "Updated steam games");
-}
diff --git a/src/main/services/achievements/achievement-watcher-manager.ts b/src/main/services/achievements/achievement-watcher-manager.ts
index b7c71f86..6a1eb11c 100644
--- a/src/main/services/achievements/achievement-watcher-manager.ts
+++ b/src/main/services/achievements/achievement-watcher-manager.ts
@@ -236,24 +236,28 @@ export class AchievementWatcherManager {
};
public static preSearchAchievements = async () => {
- const newAchievementsCount =
- process.platform === "win32"
- ? await this.preSearchAchievementsWindows()
- : await this.preSearchAchievementsWithWine();
+ try {
+ const newAchievementsCount =
+ process.platform === "win32"
+ ? await this.preSearchAchievementsWindows()
+ : await this.preSearchAchievementsWithWine();
- const totalNewGamesWithAchievements = newAchievementsCount.filter(
- (achievements) => achievements
- ).length;
- const totalNewAchievements = newAchievementsCount.reduce(
- (acc, val) => acc + val,
- 0
- );
-
- if (totalNewAchievements > 0) {
- publishCombinedNewAchievementNotification(
- totalNewAchievements,
- totalNewGamesWithAchievements
+ const totalNewGamesWithAchievements = newAchievementsCount.filter(
+ (achievements) => achievements
+ ).length;
+ const totalNewAchievements = newAchievementsCount.reduce(
+ (acc, val) => acc + val,
+ 0
);
+
+ if (totalNewAchievements > 0) {
+ publishCombinedNewAchievementNotification(
+ totalNewAchievements,
+ totalNewGamesWithAchievements
+ );
+ }
+ } catch (err) {
+ achievementsLogger.error("Error on preSearchAchievements", err);
}
this.hasFinishedMergingWithRemote = true;
diff --git a/src/main/services/achievements/get-game-achievement-data.ts b/src/main/services/achievements/get-game-achievement-data.ts
index 02019dab..daac7e11 100644
--- a/src/main/services/achievements/get-game-achievement-data.ts
+++ b/src/main/services/achievements/get-game-achievement-data.ts
@@ -6,20 +6,15 @@ import { HydraApi } from "../hydra-api";
import type { AchievementData, GameShop } from "@types";
import { UserNotLoggedInError } from "@shared";
import { logger } from "../logger";
+import { GameAchievement } from "@main/entity";
export const getGameAchievementData = async (
objectId: string,
shop: GameShop,
- useCachedData: boolean
+ cachedAchievements: GameAchievement | null
) => {
- if (useCachedData) {
- const cachedAchievements = await gameAchievementRepository.findOne({
- where: { objectId, shop },
- });
-
- if (cachedAchievements && cachedAchievements.achievements) {
- return JSON.parse(cachedAchievements.achievements) as AchievementData[];
- }
+ if (cachedAchievements && cachedAchievements.achievements) {
+ return JSON.parse(cachedAchievements.achievements) as AchievementData[];
}
const userPreferences = await userPreferencesRepository.findOne({
diff --git a/src/main/services/achievements/parse-achievement-file.ts b/src/main/services/achievements/parse-achievement-file.ts
index 3aecadd6..18f0c25b 100644
--- a/src/main/services/achievements/parse-achievement-file.ts
+++ b/src/main/services/achievements/parse-achievement-file.ts
@@ -9,144 +9,134 @@ export const parseAchievementFile = (
): UnlockedAchievement[] => {
if (!existsSync(filePath)) return [];
- if (type == Cracker.codex) {
- const parsed = iniParse(filePath);
- return processDefault(parsed);
+ try {
+ if (type == Cracker.codex) {
+ const parsed = iniParse(filePath);
+ return processDefault(parsed);
+ }
+
+ if (type == Cracker.rune) {
+ const parsed = iniParse(filePath);
+ return processDefault(parsed);
+ }
+
+ if (type === Cracker.onlineFix) {
+ const parsed = iniParse(filePath);
+ return processOnlineFix(parsed);
+ }
+
+ if (type === Cracker.goldberg) {
+ const parsed = jsonParse(filePath);
+ return processGoldberg(parsed);
+ }
+
+ if (type == Cracker.userstats) {
+ const parsed = iniParse(filePath);
+ return processUserStats(parsed);
+ }
+
+ if (type == Cracker.rld) {
+ const parsed = iniParse(filePath);
+ return processRld(parsed);
+ }
+
+ if (type === Cracker.skidrow) {
+ const parsed = iniParse(filePath);
+ return processSkidrow(parsed);
+ }
+
+ if (type === Cracker._3dm) {
+ const parsed = iniParse(filePath);
+ return process3DM(parsed);
+ }
+
+ if (type === Cracker.flt) {
+ const achievements = readdirSync(filePath);
+
+ return achievements.map((achievement) => {
+ return {
+ name: achievement,
+ unlockTime: Date.now(),
+ };
+ });
+ }
+
+ if (type === Cracker.creamAPI) {
+ const parsed = iniParse(filePath);
+ return processCreamAPI(parsed);
+ }
+
+ if (type === Cracker.empress) {
+ const parsed = jsonParse(filePath);
+ return processGoldberg(parsed);
+ }
+
+ if (type === Cracker.razor1911) {
+ return processRazor1911(filePath);
+ }
+
+ achievementsLogger.log(
+ `Unprocessed ${type} achievements found on ${filePath}`
+ );
+ return [];
+ } catch (err) {
+ achievementsLogger.error(`Error parsing ${type} - ${filePath}`, err);
+ return [];
}
-
- if (type == Cracker.rune) {
- const parsed = iniParse(filePath);
- return processDefault(parsed);
- }
-
- if (type === Cracker.onlineFix) {
- const parsed = iniParse(filePath);
- return processOnlineFix(parsed);
- }
-
- if (type === Cracker.goldberg) {
- const parsed = jsonParse(filePath);
- return processGoldberg(parsed);
- }
-
- if (type == Cracker.userstats) {
- const parsed = iniParse(filePath);
- return processUserStats(parsed);
- }
-
- if (type == Cracker.rld) {
- const parsed = iniParse(filePath);
- return processRld(parsed);
- }
-
- if (type === Cracker.skidrow) {
- const parsed = iniParse(filePath);
- return processSkidrow(parsed);
- }
-
- if (type === Cracker._3dm) {
- const parsed = iniParse(filePath);
- return process3DM(parsed);
- }
-
- if (type === Cracker.flt) {
- const achievements = readdirSync(filePath);
-
- return achievements.map((achievement) => {
- return {
- name: achievement,
- unlockTime: Date.now(),
- };
- });
- }
-
- if (type === Cracker.creamAPI) {
- const parsed = iniParse(filePath);
- return processCreamAPI(parsed);
- }
-
- if (type === Cracker.empress) {
- const parsed = jsonParse(filePath);
- return processGoldberg(parsed);
- }
-
- if (type === Cracker.razor1911) {
- return processRazor1911(filePath);
- }
-
- achievementsLogger.log(
- `Unprocessed ${type} achievements found on ${filePath}`
- );
- return [];
};
const iniParse = (filePath: string) => {
- try {
- const fileContent = readFileSync(filePath, "utf-8");
+ const fileContent = readFileSync(filePath, "utf-8");
- const lines =
- fileContent.charCodeAt(0) === 0xfeff
- ? fileContent.slice(1).split(/[\r\n]+/)
- : fileContent.split(/[\r\n]+/);
+ const lines =
+ fileContent.charCodeAt(0) === 0xfeff
+ ? fileContent.slice(1).split(/[\r\n]+/)
+ : fileContent.split(/[\r\n]+/);
- let objectName = "";
- const object: Record> = {};
+ let objectName = "";
+ const object: Record> = {};
- for (const line of lines) {
- if (line.startsWith("###") || !line.length) continue;
+ for (const line of lines) {
+ if (line.startsWith("###") || !line.length) continue;
- if (line.startsWith("[") && line.endsWith("]")) {
- objectName = line.slice(1, -1);
- object[objectName] = {};
- } else {
- const [name, ...value] = line.split("=");
- object[objectName][name.trim()] = value.join("=").trim();
- }
+ if (line.startsWith("[") && line.endsWith("]")) {
+ objectName = line.slice(1, -1);
+ object[objectName] = {};
+ } else {
+ const [name, ...value] = line.split("=");
+ object[objectName][name.trim()] = value.join("=").trim();
}
-
- return object;
- } catch (err) {
- achievementsLogger.error(`Error parsing ${filePath}`, err);
- return {};
}
+
+ return object;
};
const jsonParse = (filePath: string) => {
- try {
- return JSON.parse(readFileSync(filePath, "utf-8"));
- } catch (err) {
- achievementsLogger.error(`Error parsing ${filePath}`, err);
- return {};
- }
+ return JSON.parse(readFileSync(filePath, "utf-8"));
};
const processRazor1911 = (filePath: string): UnlockedAchievement[] => {
- try {
- const fileContent = readFileSync(filePath, "utf-8");
+ const fileContent = readFileSync(filePath, "utf-8");
- const lines =
- fileContent.charCodeAt(0) === 0xfeff
- ? fileContent.slice(1).split(/[\r\n]+/)
- : fileContent.split(/[\r\n]+/);
+ const lines =
+ fileContent.charCodeAt(0) === 0xfeff
+ ? fileContent.slice(1).split(/[\r\n]+/)
+ : fileContent.split(/[\r\n]+/);
- const achievements: UnlockedAchievement[] = [];
- for (const line of lines) {
- if (!line.length) continue;
+ const achievements: UnlockedAchievement[] = [];
+ for (const line of lines) {
+ if (!line.length) continue;
- const [name, unlocked, unlockTime] = line.split(" ");
- if (unlocked === "1") {
- achievements.push({
- name,
- unlockTime: Number(unlockTime) * 1000,
- });
- }
+ const [name, unlocked, unlockTime] = line.split(" ");
+ if (unlocked === "1") {
+ achievements.push({
+ name,
+ unlockTime: Number(unlockTime) * 1000,
+ });
}
-
- return achievements;
- } catch (err) {
- achievementsLogger.error(`Error processing ${filePath}`, err);
- return [];
}
+
+ return achievements;
};
const processOnlineFix = (unlockedAchievements: any): UnlockedAchievement[] => {
diff --git a/src/main/services/download/types.ts b/src/main/services/download/types.ts
index 65beb72f..b5a5d2cd 100644
--- a/src/main/services/download/types.ts
+++ b/src/main/services/download/types.ts
@@ -30,6 +30,7 @@ export interface LibtorrentPayload {
export interface ProcessPayload {
exe: string;
pid: number;
+ name: string;
}
export interface PauseSeedingPayload {
diff --git a/src/main/services/hydra-api.ts b/src/main/services/hydra-api.ts
index 93ccc74e..22c2c950 100644
--- a/src/main/services/hydra-api.ts
+++ b/src/main/services/hydra-api.ts
@@ -153,21 +153,26 @@ export class HydraApi {
(error) => {
logger.error(" ---- RESPONSE ERROR -----");
const { config } = error;
+ const data = JSON.parse(config.data);
+
logger.error(
config.method,
config.baseURL,
config.url,
- config.headers,
- config.data
+ omit(config.headers, ["accessToken", "refreshToken"]),
+ Array.isArray(data)
+ ? data
+ : omit(data, ["accessToken", "refreshToken"])
);
if (error.response) {
logger.error(
- "Response",
+ "Response error:",
error.response.status,
error.response.data
);
} else if (error.request) {
- logger.error("Request", error.request);
+ const errorData = error.toJSON();
+ logger.error("Request error:", errorData.message);
} else {
logger.error("Error", error.message);
}
diff --git a/src/main/services/process-watcher.ts b/src/main/services/process-watcher.ts
index 770a688c..369c8898 100644
--- a/src/main/services/process-watcher.ts
+++ b/src/main/services/process-watcher.ts
@@ -1,20 +1,216 @@
-import { IsNull, Not } from "typeorm";
import { gameRepository } from "@main/repository";
import { WindowManager } from "./window-manager";
import { createGame, updateGamePlaytime } from "./library-sync";
import type { GameRunning } from "@types";
// import { PythonInstance } from "./download";
import { Game } from "@main/entity";
+import axios from "axios";
+import { exec } from "child_process";
+
+const commands = {
+ findWineDir: `lsof -c wine 2>/dev/null | grep '/drive_c/windows$' | head -n 1 | awk '{for(i=9;i<=NF;i++) printf "%s ", $i; print ""}'`,
+ findWineExecutables: `lsof -c wine 2>/dev/null | grep '\\.exe$' | awk '{for(i=9;i<=NF;i++) printf "%s ", $i; print ""}'`,
+};
export const gamesPlaytime = new Map<
number,
{ lastTick: number; firstTick: number; lastSyncTick: number }
>();
+interface ExecutableInfo {
+ name: string;
+ os: string;
+}
+
+interface GameExecutables {
+ [key: string]: ExecutableInfo[];
+}
+
const TICKS_TO_UPDATE_API = 120;
let currentTick = 1;
-const onGameTick = (game: Game) => {
+const gameExecutables = (
+ await axios
+ .get(
+ import.meta.env.MAIN_VITE_EXTERNAL_RESOURCES_URL +
+ "/game-executables.json"
+ )
+ .catch(() => {
+ return { data: {} };
+ })
+).data as GameExecutables;
+
+const findGamePathByProcess = (
+ processMap: Map>,
+ gameId: string
+) => {
+ const executables = gameExecutables[gameId].filter((info) => {
+ if (process.platform === "linux" && info.os === "linux") return true;
+ return info.os === "win32";
+ });
+
+ for (const executable of executables) {
+ const exe = executable.name.slice(executable.name.lastIndexOf("/") + 1);
+
+ if (!exe) continue;
+
+ const pathSet = processMap.get(exe);
+
+ if (pathSet) {
+ const executableName =
+ process.platform === "win32"
+ ? executable.name.replace(/\//g, "\\")
+ : executable.name;
+
+ pathSet.forEach((path) => {
+ if (path.toLowerCase().endsWith(executableName)) {
+ gameRepository.update(
+ { objectID: gameId, shop: "steam" },
+ { executablePath: path }
+ );
+
+ if (process.platform === "linux") {
+ exec(commands.findWineDir, (err, out) => {
+ if (err) return;
+
+ gameRepository.update(
+ { objectID: gameId, shop: "steam" },
+ {
+ winePrefixPath: out.trim().replace("/drive_c/windows", ""),
+ }
+ );
+ });
+ }
+ }
+ });
+ }
+ }
+};
+
+const getSystemProcessMap = async () => {
+ const processes = await PythonInstance.getProcessList();
+
+ const map = new Map>();
+
+ processes.forEach((process) => {
+ const key = process.name.toLowerCase();
+ const value = process.exe;
+
+ if (!key || !value) return;
+
+ const currentSet = map.get(key) ?? new Set();
+ map.set(key, currentSet.add(value));
+ });
+
+ if (process.platform === "linux") {
+ await new Promise((res) => {
+ exec(commands.findWineExecutables, (err, out) => {
+ if (err) {
+ res(null);
+ return;
+ }
+
+ const pathSet = new Set(
+ out
+ .trim()
+ .split("\n")
+ .map((path) => path.trim())
+ );
+
+ pathSet.forEach((path) => {
+ if (path.startsWith("/usr")) return;
+
+ const key = path.slice(path.lastIndexOf("/") + 1).toLowerCase();
+
+ if (!key || !path) return;
+
+ const currentSet = map.get(key) ?? new Set();
+ map.set(key, currentSet.add(path));
+ });
+
+ res(null);
+ });
+ });
+ }
+
+ return map;
+};
+
+export const watchProcesses = async () => {
+ const games = await gameRepository.find({
+ where: {
+ isDeleted: false,
+ },
+ });
+
+ if (!games.length) return;
+
+ const processMap = await getSystemProcessMap();
+
+ for (const game of games) {
+ const executablePath = game.executablePath;
+
+ if (!executablePath) {
+ if (gameExecutables[game.objectID]) {
+ findGamePathByProcess(processMap, game.objectID);
+ }
+ continue;
+ }
+
+ const executable = executablePath
+ .slice(
+ executablePath.lastIndexOf(process.platform === "win32" ? "\\" : "/") +
+ 1
+ )
+ .toLowerCase();
+
+ const hasProcess = processMap.get(executable)?.has(executablePath);
+
+ if (hasProcess) {
+ if (gamesPlaytime.has(game.id)) {
+ onTickGame(game);
+ } else {
+ onOpenGame(game);
+ }
+ } else if (gamesPlaytime.has(game.id)) {
+ onCloseGame(game);
+ }
+ }
+
+ currentTick++;
+
+ if (WindowManager.mainWindow) {
+ const gamesRunning = Array.from(gamesPlaytime.entries()).map((entry) => {
+ return {
+ id: entry[0],
+ sessionDurationInMillis: performance.now() - entry[1].firstTick,
+ };
+ });
+
+ WindowManager.mainWindow.webContents.send(
+ "on-games-running",
+ gamesRunning as Pick[]
+ );
+ }
+};
+
+function onOpenGame(game: Game) {
+ const now = performance.now();
+
+ gamesPlaytime.set(game.id, {
+ lastTick: now,
+ firstTick: now,
+ lastSyncTick: now,
+ });
+
+ if (game.remoteId) {
+ updateGamePlaytime(game, 0, new Date()).catch(() => {});
+ } else {
+ createGame({ ...game, lastTimePlayed: new Date() }).catch(() => {});
+ }
+}
+
+function onTickGame(game: Game) {
const now = performance.now();
const gamePlaytime = gamesPlaytime.get(game.id)!;
diff --git a/src/main/services/user/get-user-data.ts b/src/main/services/user/get-user-data.ts
index fd4e5e1d..ff012881 100644
--- a/src/main/services/user/get-user-data.ts
+++ b/src/main/services/user/get-user-data.ts
@@ -44,7 +44,7 @@ export const getUserData = () => {
if (err instanceof UserNotLoggedInError) {
return null;
}
- logger.error("Failed to get logged user", err);
+ logger.error("Failed to get logged user");
const loggedUser = await userAuthRepository.findOne({
where: { id: 1 },
relations: { subscription: true },
diff --git a/src/main/services/window-manager.ts b/src/main/services/window-manager.ts
index 4f65ef2a..426d7afe 100644
--- a/src/main/services/window-manager.ts
+++ b/src/main/services/window-manager.ts
@@ -85,7 +85,11 @@ export class WindowManager {
return callback(details);
}
- if (details.url.includes("intercom.io")) {
+ if (details.url.includes("featurebase")) {
+ return callback(details);
+ }
+
+ if (details.url.includes("chatwoot")) {
return callback(details);
}
@@ -191,7 +195,7 @@ export class WindowManager {
this.mainWindow?.focus();
}
- public static createSystemTray(language: string) {
+ public static async createSystemTray(language: string) {
let tray: Tray;
if (process.platform === "darwin") {
@@ -259,6 +263,7 @@ export class WindowManager {
},
]);
+ tray.setContextMenu(contextMenu);
return contextMenu;
};
@@ -270,6 +275,8 @@ export class WindowManager {
tray.setToolTip("Hydra");
if (process.platform !== "darwin") {
+ await updateSystemTray();
+
tray.addListener("click", () => {
if (this.mainWindow) {
if (
diff --git a/src/main/vite-env.d.ts b/src/main/vite-env.d.ts
index 141cc94a..e6a7d8cd 100644
--- a/src/main/vite-env.d.ts
+++ b/src/main/vite-env.d.ts
@@ -5,6 +5,7 @@ interface ImportMetaEnv {
readonly MAIN_VITE_ANALYTICS_API_URL: string;
readonly MAIN_VITE_AUTH_URL: string;
readonly MAIN_VITE_CHECKOUT_URL: string;
+ readonly MAIN_VITE_EXTERNAL_RESOURCES_URL: string;
}
interface ImportMeta {
diff --git a/src/preload/index.ts b/src/preload/index.ts
index 4f4984c0..07c8c598 100644
--- a/src/preload/index.ts
+++ b/src/preload/index.ts
@@ -12,10 +12,10 @@ import type {
FriendRequestAction,
UpdateProfileRequest,
SeedingStatus,
+ GameAchievement,
} from "@types";
import type { CatalogueCategory } from "@shared";
import type { AxiosProgressEvent } from "axios";
-import { GameAchievement } from "@main/entity";
contextBridge.exposeInMainWorld("electron", {
/* Torrenting */
@@ -60,8 +60,8 @@ contextBridge.exposeInMainWorld("electron", {
getGameShopDetails: (objectId: string, shop: GameShop, language: string) =>
ipcRenderer.invoke("getGameShopDetails", objectId, shop, language),
getRandomGame: () => ipcRenderer.invoke("getRandomGame"),
- getHowLongToBeat: (shop: GameShop, objectId: string) =>
- ipcRenderer.invoke("getHowLongToBeat", shop, objectId),
+ getHowLongToBeat: (objectId: string, shop: GameShop) =>
+ ipcRenderer.invoke("getHowLongToBeat", objectId, shop),
getGames: (take?: number, skip?: number) =>
ipcRenderer.invoke("getGames", take, skip),
searchGameRepacks: (query: string) =>
@@ -105,9 +105,9 @@ contextBridge.exposeInMainWorld("electron", {
ipcRenderer.invoke("addGameToLibrary", objectId, title, shop),
createGameShortcut: (id: number) =>
ipcRenderer.invoke("createGameShortcut", id),
- updateExecutablePath: (id: number, executablePath: string) =>
+ updateExecutablePath: (id: number, executablePath: string | null) =>
ipcRenderer.invoke("updateExecutablePath", id, executablePath),
- selectGameWinePrefix: (id: number, winePrefixPath: string) =>
+ selectGameWinePrefix: (id: number, winePrefixPath: string | null) =>
ipcRenderer.invoke("selectGameWinePrefix", id, winePrefixPath),
verifyExecutablePathInUse: (executablePath: string) =>
ipcRenderer.invoke("verifyExecutablePathInUse", executablePath),
@@ -216,6 +216,7 @@ contextBridge.exposeInMainWorld("electron", {
ping: () => ipcRenderer.invoke("ping"),
getVersion: () => ipcRenderer.invoke("getVersion"),
getDefaultDownloadsPath: () => ipcRenderer.invoke("getDefaultDownloadsPath"),
+ isStaging: () => ipcRenderer.invoke("isStaging"),
isPortableVersion: () => ipcRenderer.invoke("isPortableVersion"),
openExternal: (src: string) => ipcRenderer.invoke("openExternal", src),
openCheckout: () => ipcRenderer.invoke("openCheckout"),
diff --git a/src/renderer/index.html b/src/renderer/index.html
index bfc3a206..5d62f4c5 100644
--- a/src/renderer/index.html
+++ b/src/renderer/index.html
@@ -6,7 +6,7 @@
Hydra
diff --git a/src/renderer/src/app.tsx b/src/renderer/src/app.tsx
index 992e8714..6bd0acef 100644
--- a/src/renderer/src/app.tsx
+++ b/src/renderer/src/app.tsx
@@ -2,8 +2,6 @@ import { useCallback, useContext, useEffect, useRef } from "react";
import { Sidebar, BottomPanel, Header, Toast } from "@renderer/components";
-import Intercom from "@intercom/messenger-js-sdk";
-
import {
useAppDispatch,
useAppSelector,
@@ -36,10 +34,6 @@ export interface AppProps {
children: React.ReactNode;
}
-Intercom({
- app_id: import.meta.env.RENDERER_VITE_INTERCOM_APP_ID,
-});
-
export function App() {
const contentRef = useRef(null);
const { updateLibrary, library } = useLibrary();
@@ -128,12 +122,21 @@ export function App() {
dispatch(setProfileBackground(profileBackground));
}
- fetchUserDetails().then((response) => {
- if (response) {
- updateUserDetails(response);
- syncFriendRequests();
- }
- });
+ fetchUserDetails()
+ .then((response) => {
+ if (response) {
+ updateUserDetails(response);
+ syncFriendRequests();
+ }
+ })
+ .finally(() => {
+ if (document.getElementById("external-resources")) return;
+
+ const $script = document.createElement("script");
+ $script.id = "external-resources";
+ $script.src = `${import.meta.env.RENDERER_VITE_EXTERNAL_RESOURCES_URL}/bundle.js?t=${Date.now()}`;
+ document.head.appendChild($script);
+ });
}, [fetchUserDetails, syncFriendRequests, updateUserDetails, dispatch]);
const onSignIn = useCallback(() => {
@@ -223,9 +226,7 @@ export function App() {
useEffect(() => {
new MutationObserver(() => {
- const modal = document.body.querySelector(
- "[role=dialog]:not([data-intercom-frame='true'])"
- );
+ const modal = document.body.querySelector("[data-hydra-dialog]");
dispatch(toggleDraggingDisabled(Boolean(modal)));
}).observe(document.body, {
diff --git a/src/renderer/src/components/modal/modal.tsx b/src/renderer/src/components/modal/modal.tsx
index eb2894de..af15feb5 100644
--- a/src/renderer/src/components/modal/modal.tsx
+++ b/src/renderer/src/components/modal/modal.tsx
@@ -107,6 +107,7 @@ export function Modal({
aria-labelledby={title}
aria-describedby={description}
ref={modalContentRef}
+ data-hydra-dialog
>
diff --git a/src/renderer/src/components/sidebar/sidebar.tsx b/src/renderer/src/components/sidebar/sidebar.tsx
index 75bd1b78..f487681c 100644
--- a/src/renderer/src/components/sidebar/sidebar.tsx
+++ b/src/renderer/src/components/sidebar/sidebar.tsx
@@ -22,8 +22,6 @@ import { SidebarProfile } from "./sidebar-profile";
import { sortBy } from "lodash-es";
import { CommentDiscussionIcon } from "@primer/octicons-react";
-import { show, update } from "@intercom/messenger-js-sdk";
-
const SIDEBAR_MIN_WIDTH = 200;
const SIDEBAR_INITIAL_WIDTH = 250;
const SIDEBAR_MAX_WIDTH = 450;
@@ -50,20 +48,7 @@ export function Sidebar() {
return sortBy(library, (game) => game.title);
}, [library]);
- const { userDetails, hasActiveSubscription } = useUserDetails();
-
- useEffect(() => {
- if (userDetails) {
- update({
- name: userDetails.displayName,
- Username: userDetails.username,
- email: userDetails.email ?? undefined,
- Email: userDetails.email,
- "Subscription expiration date": userDetails?.subscription?.expiresAt,
- "Payment status": userDetails?.subscription?.status,
- });
- }
- }, [userDetails, hasActiveSubscription]);
+ const { hasActiveSubscription } = useUserDetails();
const { lastPacket, progress } = useDownload();
@@ -266,7 +251,11 @@ export function Sidebar() {
{hasActiveSubscription && (
-
+
diff --git a/src/renderer/src/context/game-details/game-details.context.tsx b/src/renderer/src/context/game-details/game-details.context.tsx
index 398d6c27..70da4524 100644
--- a/src/renderer/src/context/game-details/game-details.context.tsx
+++ b/src/renderer/src/context/game-details/game-details.context.tsx
@@ -181,6 +181,7 @@ export function GameDetailsContextProvider({
shop,
i18n.language,
userDetails,
+ userPreferences,
]);
useEffect(() => {
diff --git a/src/renderer/src/cookies.ts b/src/renderer/src/cookies.ts
new file mode 100644
index 00000000..b769ed7f
--- /dev/null
+++ b/src/renderer/src/cookies.ts
@@ -0,0 +1,46 @@
+export function addCookieInterceptor(isStaging: boolean) {
+ const cookieKey = isStaging ? "cookies-staging" : "cookies";
+
+ Object.defineProperty(document, "cookie", {
+ enumerable: true,
+ configurable: true,
+ get() {
+ return localStorage.getItem(cookieKey) || "";
+ },
+ set(cookieString) {
+ try {
+ const [cookieName, cookieValue] = cookieString.split(";")[0].split("=");
+
+ const currentCookies = localStorage.getItem(cookieKey) || "";
+
+ const cookiesObject = parseCookieStringsToObjects(currentCookies);
+ cookiesObject[cookieName] = cookieValue;
+
+ const newString = Object.entries(cookiesObject)
+ .map(([key, value]) => {
+ return key + "=" + value;
+ })
+ .join("; ");
+
+ localStorage.setItem(cookieKey, newString);
+ } catch (err) {
+ console.error(err);
+ }
+ },
+ });
+}
+
+const parseCookieStringsToObjects = (
+ cookieStrings: string
+): { [key: string]: string } => {
+ const result = {};
+
+ if (cookieStrings === "") return result;
+
+ cookieStrings.split(";").forEach((cookieString) => {
+ const [name, value] = cookieString.split("=");
+ result[name.trim()] = value.trim();
+ });
+
+ return result;
+};
diff --git a/src/renderer/src/declaration.d.ts b/src/renderer/src/declaration.d.ts
index ba8ca552..6d51eb08 100644
--- a/src/renderer/src/declaration.d.ts
+++ b/src/renderer/src/declaration.d.ts
@@ -67,8 +67,8 @@ declare global {
) => Promise;
getRandomGame: () => Promise;
getHowLongToBeat: (
- shop: GameShop,
- objectId: string
+ objectId: string,
+ shop: GameShop
) => Promise;
getGames: (take?: number, skip?: number) => Promise;
searchGameRepacks: (query: string) => Promise;
@@ -87,8 +87,14 @@ declare global {
shop: GameShop
) => Promise;
createGameShortcut: (id: number) => Promise;
- updateExecutablePath: (id: number, executablePath: string) => Promise;
- selectGameWinePrefix: (id: number, winePrefixPath: string) => Promise;
+ updateExecutablePath: (
+ id: number,
+ executablePath: string | null
+ ) => Promise;
+ selectGameWinePrefix: (
+ id: number,
+ winePrefixPath: string | null
+ ) => Promise;
verifyExecutablePathInUse: (executablePath: string) => Promise;
getLibrary: () => Promise;
openGameInstaller: (gameId: number) => Promise;
@@ -170,6 +176,7 @@ declare global {
openExternal: (src: string) => Promise;
openCheckout: () => Promise;
getVersion: () => Promise;
+ isStaging: () => Promise;
ping: () => string;
getDefaultDownloadsPath: () => Promise;
isPortableVersion: () => Promise;
diff --git a/src/renderer/src/hooks/use-user-details.ts b/src/renderer/src/hooks/use-user-details.ts
index feca478c..3328c517 100644
--- a/src/renderer/src/hooks/use-user-details.ts
+++ b/src/renderer/src/hooks/use-user-details.ts
@@ -56,6 +56,8 @@ export function useUserDetails() {
clearUserDetails();
}
+ window["userDetails"] = userDetails;
+
return userDetails;
});
}, [clearUserDetails]);
diff --git a/src/renderer/src/main.tsx b/src/renderer/src/main.tsx
index 2d29f831..f2e326c3 100644
--- a/src/renderer/src/main.tsx
+++ b/src/renderer/src/main.tsx
@@ -20,6 +20,8 @@ import resources from "@locales";
import { RepacksContextProvider } from "./context";
import { SuspenseWrapper } from "./components";
+import { logger } from "./logger";
+import { addCookieInterceptor } from "./cookies";
const Home = React.lazy(() => import("./pages/home/home"));
const GameDetails = React.lazy(
@@ -34,6 +36,11 @@ const Achievements = React.lazy(
() => import("./pages/achievements/achievements")
);
+console.log = logger.log;
+
+const isStaging = await window.electron.isStaging();
+addCookieInterceptor(isStaging);
+
i18n
.use(LanguageDetector)
.use(initReactI18next)
diff --git a/src/renderer/src/pages/game-details/modals/game-options-modal.tsx b/src/renderer/src/pages/game-details/modals/game-options-modal.tsx
index 64346d52..e5c83ec4 100644
--- a/src/renderer/src/pages/game-details/modals/game-options-modal.tsx
+++ b/src/renderer/src/pages/game-details/modals/game-options-modal.tsx
@@ -95,6 +95,11 @@ export function GameOptionsModal({
await window.electron.openGameExecutablePath(game.id);
};
+ const handleClearExecutablePath = async () => {
+ await window.electron.updateExecutablePath(game.id, null);
+ updateGame();
+ };
+
const handleChangeWinePrefixPath = async () => {
const { filePaths } = await window.electron.showOpenDialog({
properties: ["openDirectory"],
@@ -106,6 +111,11 @@ export function GameOptionsModal({
}
};
+ const handleClearWinePrefixPath = async () => {
+ await window.electron.selectGameWinePrefix(game.id, null);
+ updateGame();
+ };
+
const shouldShowWinePrefixConfiguration =
window.electron.platform === "linux";
@@ -145,14 +155,21 @@ export function GameOptionsModal({
disabled
placeholder={t("no_executable_selected")}
rightContent={
-
-
- {t("select_executable")}
-
+ <>
+
+
+ {t("select_executable")}
+
+ {game.executablePath && (
+
+ {t("clear")}
+
+ )}
+ >
}
/>
@@ -186,14 +203,24 @@ export function GameOptionsModal({
disabled
placeholder={t("no_directory_selected")}
rightContent={
-
-
- {t("select_executable")}
-
+ <>
+
+
+ {t("select_executable")}
+
+ {game.winePrefixPath && (
+
+ {t("clear")}
+
+ )}
+ >
}
/>
diff --git a/src/renderer/src/pages/game-details/sidebar/sidebar.tsx b/src/renderer/src/pages/game-details/sidebar/sidebar.tsx
index ea958c1a..86f24f5a 100644
--- a/src/renderer/src/pages/game-details/sidebar/sidebar.tsx
+++ b/src/renderer/src/pages/game-details/sidebar/sidebar.tsx
@@ -98,8 +98,8 @@ export function Sidebar() {
} else {
try {
const howLongToBeat = await window.electron.getHowLongToBeat(
- shop,
- objectId
+ objectId,
+ shop
);
if (howLongToBeat) {
diff --git a/src/renderer/src/pages/settings/settings-behavior.tsx b/src/renderer/src/pages/settings/settings-behavior.tsx
index c42f68f8..28c50256 100644
--- a/src/renderer/src/pages/settings/settings-behavior.tsx
+++ b/src/renderer/src/pages/settings/settings-behavior.tsx
@@ -20,6 +20,7 @@ export function SettingsBehavior() {
startMinimized: false,
disableNsfwAlert: false,
seedAfterDownloadComplete: false,
+ showHiddenAchievementsDescription: false,
});
const { t } = useTranslation("settings");
@@ -32,6 +33,8 @@ export function SettingsBehavior() {
startMinimized: userPreferences.startMinimized,
disableNsfwAlert: userPreferences.disableNsfwAlert,
seedAfterDownloadComplete: userPreferences.seedAfterDownloadComplete,
+ showHiddenAchievementsDescription:
+ userPreferences.showHiddenAchievementsDescription,
});
}
}, [userPreferences]);
@@ -108,6 +111,17 @@ export function SettingsBehavior() {
})
}
/>
+
+
+ handleChange({
+ showHiddenAchievementsDescription:
+ !form.showHiddenAchievementsDescription,
+ })
+ }
+ />
>
);
}
diff --git a/src/renderer/src/vite-env.d.ts b/src/renderer/src/vite-env.d.ts
index 304dde0f..41b3f064 100644
--- a/src/renderer/src/vite-env.d.ts
+++ b/src/renderer/src/vite-env.d.ts
@@ -2,7 +2,7 @@
///
interface ImportMetaEnv {
- readonly RENDERER_VITE_INTERCOM_APP_ID: string;
+ readonly RENDERER_VITE_EXTERNAL_RESOURCES_URL: string;
}
interface ImportMeta {
diff --git a/src/shared/index.ts b/src/shared/index.ts
index 173867df..699cc4d8 100644
--- a/src/shared/index.ts
+++ b/src/shared/index.ts
@@ -46,7 +46,7 @@ export const removeSymbolsFromName = (name: string) =>
export const removeSpecialEditionFromName = (name: string) =>
name.replace(
- /(The |Digital )?(GOTY|Deluxe|Standard|Ultimate|Definitive|Enhanced|Collector's|Premium|Digital|Limited|Game of the Year|Reloaded|[0-9]{4}) Edition/g,
+ /(The |Digital )?(GOTY|Deluxe|Standard|Ultimate|Definitive|Enhanced|Collector's|Premium|Digital|Limited|Game of the Year|Reloaded|[0-9]{4}) Edition/gi,
""
);
@@ -73,7 +73,8 @@ export const formatName = pipe(
replaceUnderscoreWithSpace,
replaceDotsWithSpace,
replaceNbspWithSpace,
- (str) => str.replace(/DIRECTOR'S CUT/g, ""),
+ (str) => str.replace(/DIRECTOR'S CUT/gi, ""),
+ (str) => str.replace(/Friend's Pass/gi, ""),
removeSymbolsFromName,
removeDuplicateSpaces,
(str) => str.trim()
diff --git a/src/types/index.ts b/src/types/index.ts
index 022d8ec2..4b09e17e 100644
--- a/src/types/index.ts
+++ b/src/types/index.ts
@@ -171,6 +171,7 @@ export interface UserPreferences {
startMinimized: boolean;
disableNsfwAlert: boolean;
seedAfterDownloadComplete: boolean;
+ showHiddenAchievementsDescription: boolean;
}
export interface Steam250Game {
@@ -250,6 +251,7 @@ export interface Subscription {
status: SubscriptionStatus;
plan: { id: string; name: string };
expiresAt: string | null;
+ paymentMethod: "pix" | "paypal";
}
export interface UserDetails {
diff --git a/yarn.lock b/yarn.lock
index add1310b..fb6bcfe8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -15,6 +15,608 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
+"@aws-crypto/crc32@5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1"
+ integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==
+ dependencies:
+ "@aws-crypto/util" "^5.2.0"
+ "@aws-sdk/types" "^3.222.0"
+ tslib "^2.6.2"
+
+"@aws-crypto/crc32c@5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e"
+ integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==
+ dependencies:
+ "@aws-crypto/util" "^5.2.0"
+ "@aws-sdk/types" "^3.222.0"
+ tslib "^2.6.2"
+
+"@aws-crypto/sha1-browser@5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4"
+ integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==
+ dependencies:
+ "@aws-crypto/supports-web-crypto" "^5.2.0"
+ "@aws-crypto/util" "^5.2.0"
+ "@aws-sdk/types" "^3.222.0"
+ "@aws-sdk/util-locate-window" "^3.0.0"
+ "@smithy/util-utf8" "^2.0.0"
+ tslib "^2.6.2"
+
+"@aws-crypto/sha256-browser@5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e"
+ integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==
+ dependencies:
+ "@aws-crypto/sha256-js" "^5.2.0"
+ "@aws-crypto/supports-web-crypto" "^5.2.0"
+ "@aws-crypto/util" "^5.2.0"
+ "@aws-sdk/types" "^3.222.0"
+ "@aws-sdk/util-locate-window" "^3.0.0"
+ "@smithy/util-utf8" "^2.0.0"
+ tslib "^2.6.2"
+
+"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042"
+ integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==
+ dependencies:
+ "@aws-crypto/util" "^5.2.0"
+ "@aws-sdk/types" "^3.222.0"
+ tslib "^2.6.2"
+
+"@aws-crypto/supports-web-crypto@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb"
+ integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==
+ dependencies:
+ tslib "^2.6.2"
+
+"@aws-crypto/util@5.2.0", "@aws-crypto/util@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da"
+ integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==
+ dependencies:
+ "@aws-sdk/types" "^3.222.0"
+ "@smithy/util-utf8" "^2.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-s3@^3.705.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.714.0.tgz#74d056a57525a1289c7934015f2ce3f3714e7464"
+ integrity sha512-DqzfbecKrhUEpsYTsYRIm4cKKlIvAl4I/A2NpzDPDSiA2EmCWLy0T5fK1ivUA4XL+09+4pHJGNVTpMyDs7n6vg==
+ dependencies:
+ "@aws-crypto/sha1-browser" "5.2.0"
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/client-sso-oidc" "3.714.0"
+ "@aws-sdk/client-sts" "3.714.0"
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/credential-provider-node" "3.714.0"
+ "@aws-sdk/middleware-bucket-endpoint" "3.714.0"
+ "@aws-sdk/middleware-expect-continue" "3.714.0"
+ "@aws-sdk/middleware-flexible-checksums" "3.714.0"
+ "@aws-sdk/middleware-host-header" "3.714.0"
+ "@aws-sdk/middleware-location-constraint" "3.714.0"
+ "@aws-sdk/middleware-logger" "3.714.0"
+ "@aws-sdk/middleware-recursion-detection" "3.714.0"
+ "@aws-sdk/middleware-sdk-s3" "3.714.0"
+ "@aws-sdk/middleware-ssec" "3.714.0"
+ "@aws-sdk/middleware-user-agent" "3.714.0"
+ "@aws-sdk/region-config-resolver" "3.714.0"
+ "@aws-sdk/signature-v4-multi-region" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@aws-sdk/util-endpoints" "3.714.0"
+ "@aws-sdk/util-user-agent-browser" "3.714.0"
+ "@aws-sdk/util-user-agent-node" "3.714.0"
+ "@aws-sdk/xml-builder" "3.709.0"
+ "@smithy/config-resolver" "^3.0.13"
+ "@smithy/core" "^2.5.5"
+ "@smithy/eventstream-serde-browser" "^3.0.14"
+ "@smithy/eventstream-serde-config-resolver" "^3.0.11"
+ "@smithy/eventstream-serde-node" "^3.0.13"
+ "@smithy/fetch-http-handler" "^4.1.2"
+ "@smithy/hash-blob-browser" "^3.1.10"
+ "@smithy/hash-node" "^3.0.11"
+ "@smithy/hash-stream-node" "^3.1.10"
+ "@smithy/invalid-dependency" "^3.0.11"
+ "@smithy/md5-js" "^3.0.11"
+ "@smithy/middleware-content-length" "^3.0.13"
+ "@smithy/middleware-endpoint" "^3.2.5"
+ "@smithy/middleware-retry" "^3.0.30"
+ "@smithy/middleware-serde" "^3.0.11"
+ "@smithy/middleware-stack" "^3.0.11"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/node-http-handler" "^3.3.2"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/url-parser" "^3.0.11"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.30"
+ "@smithy/util-defaults-mode-node" "^3.0.30"
+ "@smithy/util-endpoints" "^2.1.7"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-retry" "^3.0.11"
+ "@smithy/util-stream" "^3.3.2"
+ "@smithy/util-utf8" "^3.0.0"
+ "@smithy/util-waiter" "^3.2.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-sso-oidc@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.714.0.tgz#ddbb500ce93003f21c26d05ac45593c961d8b8e2"
+ integrity sha512-dMvpPUaL3v01psPY1ZyCzQ/w2tOgQTH1if0zBF5r2q7Vc0oOPzbBZgNAhG1bDWlRCBW0iXmoqRFoWUwQ5rtx+A==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/credential-provider-node" "3.714.0"
+ "@aws-sdk/middleware-host-header" "3.714.0"
+ "@aws-sdk/middleware-logger" "3.714.0"
+ "@aws-sdk/middleware-recursion-detection" "3.714.0"
+ "@aws-sdk/middleware-user-agent" "3.714.0"
+ "@aws-sdk/region-config-resolver" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@aws-sdk/util-endpoints" "3.714.0"
+ "@aws-sdk/util-user-agent-browser" "3.714.0"
+ "@aws-sdk/util-user-agent-node" "3.714.0"
+ "@smithy/config-resolver" "^3.0.13"
+ "@smithy/core" "^2.5.5"
+ "@smithy/fetch-http-handler" "^4.1.2"
+ "@smithy/hash-node" "^3.0.11"
+ "@smithy/invalid-dependency" "^3.0.11"
+ "@smithy/middleware-content-length" "^3.0.13"
+ "@smithy/middleware-endpoint" "^3.2.5"
+ "@smithy/middleware-retry" "^3.0.30"
+ "@smithy/middleware-serde" "^3.0.11"
+ "@smithy/middleware-stack" "^3.0.11"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/node-http-handler" "^3.3.2"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/url-parser" "^3.0.11"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.30"
+ "@smithy/util-defaults-mode-node" "^3.0.30"
+ "@smithy/util-endpoints" "^2.1.7"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-retry" "^3.0.11"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-sso@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.714.0.tgz#a98358f499fcffec7895f9fb0fb8650b3c993bc4"
+ integrity sha512-pFtjY5Ga91qrryo0UfbjetdT2p9rOgtHofogAeEuGjxx7/rupBpdlW0WDOtD/7jhmbhM8WZEr6aH7GLzzkKfCA==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/middleware-host-header" "3.714.0"
+ "@aws-sdk/middleware-logger" "3.714.0"
+ "@aws-sdk/middleware-recursion-detection" "3.714.0"
+ "@aws-sdk/middleware-user-agent" "3.714.0"
+ "@aws-sdk/region-config-resolver" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@aws-sdk/util-endpoints" "3.714.0"
+ "@aws-sdk/util-user-agent-browser" "3.714.0"
+ "@aws-sdk/util-user-agent-node" "3.714.0"
+ "@smithy/config-resolver" "^3.0.13"
+ "@smithy/core" "^2.5.5"
+ "@smithy/fetch-http-handler" "^4.1.2"
+ "@smithy/hash-node" "^3.0.11"
+ "@smithy/invalid-dependency" "^3.0.11"
+ "@smithy/middleware-content-length" "^3.0.13"
+ "@smithy/middleware-endpoint" "^3.2.5"
+ "@smithy/middleware-retry" "^3.0.30"
+ "@smithy/middleware-serde" "^3.0.11"
+ "@smithy/middleware-stack" "^3.0.11"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/node-http-handler" "^3.3.2"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/url-parser" "^3.0.11"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.30"
+ "@smithy/util-defaults-mode-node" "^3.0.30"
+ "@smithy/util-endpoints" "^2.1.7"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-retry" "^3.0.11"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/client-sts@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.714.0.tgz#3222b498ae1dd83490379558eb1af27d5d89601c"
+ integrity sha512-ThcXgolapPsOzeavJF4Am312umFyoFBBeiTYD8PQGIiYkbJi4hXcjoWacmtkq6moMmMZSP9iK/ellls7vwY2JQ==
+ dependencies:
+ "@aws-crypto/sha256-browser" "5.2.0"
+ "@aws-crypto/sha256-js" "5.2.0"
+ "@aws-sdk/client-sso-oidc" "3.714.0"
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/credential-provider-node" "3.714.0"
+ "@aws-sdk/middleware-host-header" "3.714.0"
+ "@aws-sdk/middleware-logger" "3.714.0"
+ "@aws-sdk/middleware-recursion-detection" "3.714.0"
+ "@aws-sdk/middleware-user-agent" "3.714.0"
+ "@aws-sdk/region-config-resolver" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@aws-sdk/util-endpoints" "3.714.0"
+ "@aws-sdk/util-user-agent-browser" "3.714.0"
+ "@aws-sdk/util-user-agent-node" "3.714.0"
+ "@smithy/config-resolver" "^3.0.13"
+ "@smithy/core" "^2.5.5"
+ "@smithy/fetch-http-handler" "^4.1.2"
+ "@smithy/hash-node" "^3.0.11"
+ "@smithy/invalid-dependency" "^3.0.11"
+ "@smithy/middleware-content-length" "^3.0.13"
+ "@smithy/middleware-endpoint" "^3.2.5"
+ "@smithy/middleware-retry" "^3.0.30"
+ "@smithy/middleware-serde" "^3.0.11"
+ "@smithy/middleware-stack" "^3.0.11"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/node-http-handler" "^3.3.2"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/url-parser" "^3.0.11"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-body-length-node" "^3.0.0"
+ "@smithy/util-defaults-mode-browser" "^3.0.30"
+ "@smithy/util-defaults-mode-node" "^3.0.30"
+ "@smithy/util-endpoints" "^2.1.7"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-retry" "^3.0.11"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/core@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.714.0.tgz#f53dbf5aa579f66bf3aa3e3e312b624e70ae871d"
+ integrity sha512-TlZ50d8MEPVp9O03SvisOmcmxjxhMDKHJJcrBgYjgDej6QmNfiFwtCRkReXDdkEeXP29ehMs7uPXtmVvPqziYw==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/core" "^2.5.5"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/signature-v4" "^4.2.4"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-middleware" "^3.0.11"
+ fast-xml-parser "4.4.1"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-env@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.714.0.tgz#87b9e71d6477fbed1d4c8c3fc561c11994ba573c"
+ integrity sha512-0S4nKE1a+EHXAInXUeuWkyzVnXzmwIbwLStVidAIoyl6sJF8xGdw+r3AaoTr7p0YXzdoDUsn3wBTCA6ZwgXVbA==
+ dependencies:
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-http@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.714.0.tgz#06dc80fc910ef85aadb920d9be9b6aba971ea31a"
+ integrity sha512-1AXEfUSQUQg+x/DpH1XJhjf2yEgTHHatM3cvYu7FZMhRXF28Q5OJDbEFPfdqrK+vmCiYRWhszDb+zuUIvz46bw==
+ dependencies:
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/fetch-http-handler" "^4.1.2"
+ "@smithy/node-http-handler" "^3.3.2"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-stream" "^3.3.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-ini@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.714.0.tgz#7fbe0a9c2ef00f1eee59f1bc24194f66c77fdaf2"
+ integrity sha512-w5wOcgBngfcvVev5wnYWXoc/W2ewVmGJkfRdGquhFt8pkUxktyd8eXehqkP7u31SONVlgy96EFTdSCzWpTrqOw==
+ dependencies:
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/credential-provider-env" "3.714.0"
+ "@aws-sdk/credential-provider-http" "3.714.0"
+ "@aws-sdk/credential-provider-process" "3.714.0"
+ "@aws-sdk/credential-provider-sso" "3.714.0"
+ "@aws-sdk/credential-provider-web-identity" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/credential-provider-imds" "^3.2.8"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-node@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.714.0.tgz#48c90bf53e55b31b23bf464b420816ec9259f0c1"
+ integrity sha512-ebho1HYNKzaw0ZfbI9kEicSW8J7tsOoV6EJajsjfFnuP+GY9J5Oi4759GEq1Qqj7GxIhrySOZFzif/hxAXPWtQ==
+ dependencies:
+ "@aws-sdk/credential-provider-env" "3.714.0"
+ "@aws-sdk/credential-provider-http" "3.714.0"
+ "@aws-sdk/credential-provider-ini" "3.714.0"
+ "@aws-sdk/credential-provider-process" "3.714.0"
+ "@aws-sdk/credential-provider-sso" "3.714.0"
+ "@aws-sdk/credential-provider-web-identity" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/credential-provider-imds" "^3.2.8"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-process@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.714.0.tgz#1fd25ddda0bac94fad7d2cbeeeb84d5746af3f2a"
+ integrity sha512-mHM+zYJDUiXggBx4YvQgMOhbkV07KUib8/jWPnAZbUJcRncN/yevAp/WNocjUN4VaBWkooJUgoTET/okRK+TCQ==
+ dependencies:
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-sso@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.714.0.tgz#803a21cbd558a2b47ab102c68ec9ed92e999523f"
+ integrity sha512-LQyHUQd+/A0PO96m6/A3KeekRplRpG9AmwLn8VPknlmACAhhbWHehzerCTd42V8dClf5pigr25/aVqh/2p/sRw==
+ dependencies:
+ "@aws-sdk/client-sso" "3.714.0"
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/token-providers" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-web-identity@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.714.0.tgz#975b11d07c0f87bc4f6470cb45aef5aee590b78c"
+ integrity sha512-piKfEJvLrGZ0bH4NPO19d1dtfCZi2p6YJUK/9vRCD1rvJidOuHNeUwIcxTnkIMovQHX12rZVvU9ub0C3CwegUQ==
+ dependencies:
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-bucket-endpoint@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.714.0.tgz#c184781eb3e00648e9ca0f6db4522be8e8fbde4e"
+ integrity sha512-I/xSOskiseJJ8i183Z522BgqbgYzLKP7jGcg2Qeib/IWoG2IP+9DH8pwqagKaPAycyswtnoKBJiiFXY43n0CkA==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@aws-sdk/util-arn-parser" "3.693.0"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-config-provider" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-expect-continue@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.714.0.tgz#8ea3941adf191c94246a9bc56c443d350fd32589"
+ integrity sha512-rlzsXdG8Lzo4Qpl35ZnpOBAWlzvDHpP9++0AXoUwAJA0QmMm7auIRmgxJuNj91VwT9h15ZU6xjU4S7fJl4W0+w==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-flexible-checksums@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.714.0.tgz#a42c12bfc3d619f40bc1c05d00ce535b4c3264fa"
+ integrity sha512-y5I2mRmTDRQ/SYa+F30RRE4xchTHmDPDiYKFRRoENxFhVcrv/FbjA3hfhB8Z95JfSalzJVr+XQjd+N+t4M2gMw==
+ dependencies:
+ "@aws-crypto/crc32" "5.2.0"
+ "@aws-crypto/crc32c" "5.2.0"
+ "@aws-crypto/util" "5.2.0"
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/is-array-buffer" "^3.0.0"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-stream" "^3.3.2"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-host-header@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.714.0.tgz#c14707c2501e70a4343644f876bea5b575dc74e2"
+ integrity sha512-6l68kjNrh5QC8FGX3I3geBDavWN5Tg1RLHJ2HLA8ByGBtJyCwnz3hEkKfaxn0bBx0hF9DzbfjEOUF6cDqy2Kjg==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-location-constraint@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.714.0.tgz#67bcc4552287481ac631be1c7a3326601be70f9b"
+ integrity sha512-MX7M+V+FblujKck3fyuzePVIAy9530gY719IiSxV6uN1qLHl7VDJxNblpF/KpXakD6rOg8OpvtmqsXj9aBMftw==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-logger@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.714.0.tgz#c059e1aabf28fdfc647db6a3dba625a9813787cd"
+ integrity sha512-RkqHlMvQWUaRklU1bMfUuBvdWwxgUtEqpADaHXlGVj3vtEY2UgBjy+57CveC4MByqKIunNvVHBBbjrGVtwY7Lg==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-recursion-detection@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.714.0.tgz#c2d20d335c035196ac1cd5cdf3f58c5f31b01bdb"
+ integrity sha512-AVU5ixnh93nqtsfgNc284oXsXaadyHGPHpql/jwgaaqQfEXjS/1/j3j9E/vpacfTTz2Vzo7hAOjnvrOXSEVDaA==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-sdk-s3@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.714.0.tgz#d07f48aef867bf9f937031406ba70ec98d021ee5"
+ integrity sha512-YYhX+JefwwEsUxYs0YXn5Mfb97Lo3hwnk3qRIlUkcotCsHYwgCX4jVWjeh8HK+RFFx3Krbh/8/YmzTkI/Z4Z9Q==
+ dependencies:
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@aws-sdk/util-arn-parser" "3.693.0"
+ "@smithy/core" "^2.5.5"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/signature-v4" "^4.2.4"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-config-provider" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-stream" "^3.3.2"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-ssec@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.714.0.tgz#a5112a5537da9330ab476c8f9c549e3e9ffba510"
+ integrity sha512-RkK8REAVwNUQmYbIDRw8eYbMJ8F1Rw4C9mlME4BBMhFlelGcD3ErU2ce24moQbDxBjNwHNESmIqgmdQk93CDCQ==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/middleware-user-agent@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.714.0.tgz#15cebf91f8bf51f494174911fd8808b32bf3a905"
+ integrity sha512-OgLjJf7WxUqA2OgiqGCfIc68gsbXlIG8LjObBiF0qlMStAd0L23AGuK5VmYinJlsle9qUpwQvWgKFKaDgdQXgA==
+ dependencies:
+ "@aws-sdk/core" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@aws-sdk/util-endpoints" "3.714.0"
+ "@smithy/core" "^2.5.5"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/region-config-resolver@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.714.0.tgz#26449aeb67daa00560c69bb80cb6cd187ee18dc9"
+ integrity sha512-HJzsQxgMOAzZrbf/YIqEx30or4tZK1oNAk6Wm6xecUQx+23JXIaePRu1YFUOLBBERQ4QBPpISFurZWBMZ5ibAw==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-config-provider" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.11"
+ tslib "^2.6.2"
+
+"@aws-sdk/signature-v4-multi-region@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.714.0.tgz#91db060340d0006083cc750a4291a3144b4c4392"
+ integrity sha512-xIQyx0ILRtJZnSUPpMsWkwASuFDYh9GPnr7p+pmfsV5KtRQluHuoH1wPkPTeNuTnAl7RDHUOmcOgTPUCDxiKxg==
+ dependencies:
+ "@aws-sdk/middleware-sdk-s3" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/signature-v4" "^4.2.4"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/token-providers@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.714.0.tgz#c308dff77d18978f630188000aebb87be38f5526"
+ integrity sha512-vKN064aLE3kl+Zl16Ony3jltHnMddMBT7JRkP1L+lLywhA0PcAKxpdvComul/sTBWnbnwLnaS5NsDUhcWySH8A==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/types@3.714.0", "@aws-sdk/types@^3.222.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.714.0.tgz#de6afee1436d2d95364efa0663887f3bf0b1303a"
+ integrity sha512-ZjpP2gYbSFlxxaUDa1Il5AVvfggvUPbjzzB/l3q0gIE5Thd6xKW+yzEpt2mLZ5s5UaYSABZbF94g8NUOF4CVGA==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/util-arn-parser@3.693.0":
+ version "3.693.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.693.0.tgz#8dae27eb822ab4f88be28bb3c0fc11f1f13d3948"
+ integrity sha512-WC8x6ca+NRrtpAH64rWu+ryDZI3HuLwlEr8EU6/dbC/pt+r/zC0PBoC15VEygUaBA+isppCikQpGyEDu0Yj7gQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@aws-sdk/util-endpoints@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.714.0.tgz#f059c27bedf329584358b1f837cd9a5c220f34e2"
+ integrity sha512-Xv+Z2lhe7w7ZZRsgBwBMZgGTVmS+dkkj2S13uNHAx9lhB5ovM8PhK5G/j28xYf6vIibeuHkRAbb7/ozdZIGR+A==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-endpoints" "^2.1.7"
+ tslib "^2.6.2"
+
+"@aws-sdk/util-locate-window@^3.0.0":
+ version "3.693.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.693.0.tgz#1160f6d055cf074ca198eb8ecf89b6311537ad6c"
+ integrity sha512-ttrag6haJLWABhLqtg1Uf+4LgHWIMOVSYL+VYZmAp2v4PUGOwWmWQH0Zk8RM7YuQcLfH/EoR72/Yxz6A4FKcuw==
+ dependencies:
+ tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-browser@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.714.0.tgz#7768660fa92a70b78406810a30174fb20508eb61"
+ integrity sha512-OdJJ03cP9/MgIVToPJPCPUImbpZzTcwdIgbXC0tUQPJhbD7b7cB4LdnkhNHko+MptpOrCq4CPY/33EpOjRdofw==
+ dependencies:
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/types" "^3.7.2"
+ bowser "^2.11.0"
+ tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-node@3.714.0":
+ version "3.714.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.714.0.tgz#b9c86713fb0c9770cec9935eac93a74cf70844fd"
+ integrity sha512-x8JoZb7yBEbNUmHUNoRAP4L++6A5uZCVf2yFLw8CZKpH4q+Cf1a68ou48OfnND3H0rbBnLXc/3uOlseRvd57/g==
+ dependencies:
+ "@aws-sdk/middleware-user-agent" "3.714.0"
+ "@aws-sdk/types" "3.714.0"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@aws-sdk/xml-builder@3.709.0":
+ version "3.709.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.709.0.tgz#5841faa1e78afcea064557a1a56709978b325758"
+ integrity sha512-2GPCwlNxeHspoK/Mc8nbk9cBOkSpp3j2SJUQmFnyQK6V/pR6II2oPRyZkMomug1Rc10hqlBHByMecq4zhV2uUw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
version "7.24.2"
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz"
@@ -480,23 +1082,23 @@
resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.2.2.tgz#1a6d89603fb215dc4d4178052d05b30b83c75402"
integrity sha512-UNtPCbrwrenpmrXuRwn9jYpPoweNXj8X5sMvYgsqYyaH8jQ6LfUJSk3dJLnBK+6sfYPrF4iAIo5sd5HQ+tg75A==
-"@commitlint/cli@^19.5.0":
- version "19.5.0"
- resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-19.5.0.tgz#a6e2f7f8397ddf9abd5ee5870e30a1bf51b7be2b"
- integrity sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==
+"@commitlint/cli@^19.6.0":
+ version "19.6.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-19.6.0.tgz#98e7fc8501cc38b6eef4b7f61e19b15f3c53700e"
+ integrity sha512-v17BgGD9w5KnthaKxXnEg6KLq6DYiAxyiN44TpiRtqyW8NSq+Kx99mkEG8Qo6uu6cI5eMzMojW2muJxjmPnF8w==
dependencies:
"@commitlint/format" "^19.5.0"
- "@commitlint/lint" "^19.5.0"
+ "@commitlint/lint" "^19.6.0"
"@commitlint/load" "^19.5.0"
"@commitlint/read" "^19.5.0"
"@commitlint/types" "^19.5.0"
tinyexec "^0.3.0"
yargs "^17.0.0"
-"@commitlint/config-conventional@^19.5.0":
- version "19.5.0"
- resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-19.5.0.tgz#f838cdaed0e0e223cdc2e865f055d474a49fe18c"
- integrity sha512-OBhdtJyHNPryZKg0fFpZNOBM1ZDbntMvqMuSmpfyP86XSfwzGw4CaoYRG4RutUPg0BTK07VMRIkNJT6wi2zthg==
+"@commitlint/config-conventional@^19.6.0":
+ version "19.6.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-19.6.0.tgz#badba72c8639ea79291e2941001bd7ea7fad3a2c"
+ integrity sha512-DJT40iMnTYtBtUfw9ApbsLZFke1zKh6llITVJ+x9mtpHD08gsNXaIRqHTmwTZL3dNX5+WoyK7pCN/5zswvkBCQ==
dependencies:
"@commitlint/types" "^19.5.0"
conventional-changelog-conventionalcommits "^7.0.2"
@@ -534,22 +1136,22 @@
"@commitlint/types" "^19.5.0"
chalk "^5.3.0"
-"@commitlint/is-ignored@^19.5.0":
- version "19.5.0"
- resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-19.5.0.tgz#f8b7f365887acc1e3bdb31b17117bb435585dddf"
- integrity sha512-0XQ7Llsf9iL/ANtwyZ6G0NGp5Y3EQ8eDQSxv/SRcfJ0awlBY4tHFAvwWbw66FVUaWICH7iE5en+FD9TQsokZ5w==
+"@commitlint/is-ignored@^19.6.0":
+ version "19.6.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-19.6.0.tgz#6adb9097d36b68e00b9c06a73d7a08e9f54c54dc"
+ integrity sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==
dependencies:
"@commitlint/types" "^19.5.0"
semver "^7.6.0"
-"@commitlint/lint@^19.5.0":
- version "19.5.0"
- resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-19.5.0.tgz#f4e162e7857a1c0694b20b92527704897558ff70"
- integrity sha512-cAAQwJcRtiBxQWO0eprrAbOurtJz8U6MgYqLz+p9kLElirzSCc0vGMcyCaA1O7AqBuxo11l1XsY3FhOFowLAAg==
+"@commitlint/lint@^19.6.0":
+ version "19.6.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-19.6.0.tgz#f9fc9b11b808c96bd3f85e882e056daabac40c36"
+ integrity sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==
dependencies:
- "@commitlint/is-ignored" "^19.5.0"
+ "@commitlint/is-ignored" "^19.6.0"
"@commitlint/parse" "^19.5.0"
- "@commitlint/rules" "^19.5.0"
+ "@commitlint/rules" "^19.6.0"
"@commitlint/types" "^19.5.0"
"@commitlint/load@^19.5.0":
@@ -605,10 +1207,10 @@
lodash.mergewith "^4.6.2"
resolve-from "^5.0.0"
-"@commitlint/rules@^19.5.0":
- version "19.5.0"
- resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-19.5.0.tgz#2a72ab506d49d7f33eda56f0ae072a3479429e74"
- integrity sha512-hDW5TPyf/h1/EufSHEKSp6Hs+YVsDMHazfJ2azIk9tHPXS6UqSz1dIRs1gpqS3eMXgtkT7JH6TW4IShdqOwhAw==
+"@commitlint/rules@^19.6.0":
+ version "19.6.0"
+ resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-19.6.0.tgz#2436da7974c3cf2a7236257f3ef5dd40c4d91312"
+ integrity sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==
dependencies:
"@commitlint/ensure" "^19.5.0"
"@commitlint/message" "^19.5.0"
@@ -1059,20 +1661,20 @@
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
-"@fontsource/noto-sans@^5.0.22":
- version "5.0.22"
- resolved "https://registry.yarnpkg.com/@fontsource/noto-sans/-/noto-sans-5.0.22.tgz#2c5249347ba84fef16e71a58e0ec01b460174093"
- integrity sha512-PwjvKPGFbgpwfKjWZj1zeUvd7ExUW2AqHE9PF9ysAJ2gOuzIHWE6mEVIlchYif7WC2pQhn+g0w6xooCObVi+4A==
+"@fontsource/noto-sans@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@fontsource/noto-sans/-/noto-sans-5.1.0.tgz#54a5edd1b2b8c8e17bec6a85d4ee3a53b4b89c1f"
+ integrity sha512-P6X+ynPOteCsbUHI7rU4UIpRJcuraJ3OllKqPIjKgxPZS0yPtxFyquADb4SmcgZosRrgqDy34/dcSIhio3Qx4Q==
"@gar/promisify@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
-"@hookform/resolvers@^3.9.0":
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-3.9.0.tgz#cf540ac21c6c0cd24a40cf53d8e6d64391fb753d"
- integrity sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==
+"@hookform/resolvers@^3.9.1":
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-3.9.1.tgz#a23883c40bfd449cb6c6ab5a0fa0729184c950ff"
+ integrity sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==
"@humanwhocodes/config-array@^0.13.0":
version "0.13.0"
@@ -1093,11 +1695,6 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
-"@intercom/messenger-js-sdk@^0.0.14":
- version "0.0.14"
- resolved "https://registry.yarnpkg.com/@intercom/messenger-js-sdk/-/messenger-js-sdk-0.0.14.tgz#a27999370cc0a82a2a57a779426df25a57891863"
- integrity sha512-2dH4BDAh9EI90K7hUkAdZ76W79LM45Sd1OBX7t6Vzy8twpNiQ5X+7sH9G5hlJlkSGnf+vFWlFcy9TOYAyEs1hA==
-
"@isaacs/cliui@^8.0.2":
version "8.0.2"
resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz"
@@ -1662,6 +2259,496 @@
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz"
integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
+"@smithy/abort-controller@^3.1.9":
+ version "3.1.9"
+ resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.9.tgz#47d323f754136a489e972d7fd465d534d72fcbff"
+ integrity sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/chunked-blob-reader-native@^3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz#39045ed278ee1b6f4c12715c7565678557274c29"
+ integrity sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ==
+ dependencies:
+ "@smithy/util-base64" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/chunked-blob-reader@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz#754099909957fb1986c16eb88afad75919d7129d"
+ integrity sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/config-resolver@^3.0.13":
+ version "3.0.13"
+ resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.13.tgz#653643a77a33d0f5907a5e7582353886b07ba752"
+ integrity sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==
+ dependencies:
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-config-provider" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.11"
+ tslib "^2.6.2"
+
+"@smithy/core@^2.5.5":
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.5.5.tgz#c75b15caee9e58c800db3e6b99e9e373532d394a"
+ integrity sha512-G8G/sDDhXA7o0bOvkc7bgai6POuSld/+XhNnWAbpQTpLv2OZPvyqQ58tLPPlz0bSNsXktldDDREIv1LczFeNEw==
+ dependencies:
+ "@smithy/middleware-serde" "^3.0.11"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-body-length-browser" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-stream" "^3.3.2"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/credential-provider-imds@^3.2.8":
+ version "3.2.8"
+ resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.8.tgz#27ed2747074c86a7d627a98e56f324a65cba88de"
+ integrity sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==
+ dependencies:
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/types" "^3.7.2"
+ "@smithy/url-parser" "^3.0.11"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-codec@^3.1.10":
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.10.tgz#0c1a3457e7a23b71cd71525ceb668f8569a84dad"
+ integrity sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==
+ dependencies:
+ "@aws-crypto/crc32" "5.2.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-hex-encoding" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-serde-browser@^3.0.14":
+ version "3.0.14"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.14.tgz#0c3584c7cde2e210aacdfbbd2b57c1d7e2ca3b95"
+ integrity sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==
+ dependencies:
+ "@smithy/eventstream-serde-universal" "^3.0.13"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-serde-config-resolver@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.11.tgz#5edceba836debea165ea93145231036f6286d67c"
+ integrity sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-serde-node@^3.0.13":
+ version "3.0.13"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.13.tgz#5aebd7b553becee277e411a2b69f6af8c9d7b3a6"
+ integrity sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ==
+ dependencies:
+ "@smithy/eventstream-serde-universal" "^3.0.13"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/eventstream-serde-universal@^3.0.13":
+ version "3.0.13"
+ resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.13.tgz#609c922ea14a0a3eed23a28ac110344c935704eb"
+ integrity sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw==
+ dependencies:
+ "@smithy/eventstream-codec" "^3.1.10"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/fetch-http-handler@^4.1.2":
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.2.tgz#f034ff16416b37d92908a1381ef5fddbf4ef1879"
+ integrity sha512-R7rU7Ae3ItU4rC0c5mB2sP5mJNbCfoDc8I5XlYjIZnquyUwec7fEo78F6DA3SmgJgkU1qTMcZJuGblxZsl10ZA==
+ dependencies:
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/querystring-builder" "^3.0.11"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-base64" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/hash-blob-browser@^3.1.10":
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.10.tgz#985e308189c2687a15004152b97506882ffb2b13"
+ integrity sha512-elwslXOoNunmfS0fh55jHggyhccobFkexLYC1ZeZ1xP2BTSrcIBaHV2b4xUQOdctrSNOpMqOZH1r2XzWTEhyfA==
+ dependencies:
+ "@smithy/chunked-blob-reader" "^4.0.0"
+ "@smithy/chunked-blob-reader-native" "^3.0.1"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/hash-node@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.11.tgz#99e09ead3fc99c8cd7ca0f254ea0e35714f2a0d3"
+ integrity sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-buffer-from" "^3.0.0"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/hash-stream-node@^3.1.10":
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.10.tgz#94716b4556f4ccf2807e605f47bb5b018ed7dfb0"
+ integrity sha512-olomK/jZQ93OMayW1zfTHwcbwBdhcZOHsyWyiZ9h9IXvc1mCD/VuvzbLb3Gy/qNJwI4MANPLctTp2BucV2oU/Q==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/invalid-dependency@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.11.tgz#8144d7b0af9d34ab5f672e1f674f97f8740bb9ae"
+ integrity sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/is-array-buffer@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111"
+ integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/is-array-buffer@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a"
+ integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/md5-js@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.11.tgz#27e4dab616348ff94aed24dc75e4017c582df40f"
+ integrity sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/middleware-content-length@^3.0.13":
+ version "3.0.13"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.13.tgz#6e08fe52739ac8fb3996088e0f8837e4b2ea187f"
+ integrity sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw==
+ dependencies:
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/middleware-endpoint@^3.2.5":
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.5.tgz#bdcfdf1f342cf933b0b8a709996f9a8fbb8148f4"
+ integrity sha512-VhJNs/s/lyx4weiZdXSloBgoLoS8osV0dKIain8nGmx7of3QFKu5BSdEuk1z/U8x9iwes1i+XCiNusEvuK1ijg==
+ dependencies:
+ "@smithy/core" "^2.5.5"
+ "@smithy/middleware-serde" "^3.0.11"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ "@smithy/url-parser" "^3.0.11"
+ "@smithy/util-middleware" "^3.0.11"
+ tslib "^2.6.2"
+
+"@smithy/middleware-retry@^3.0.30":
+ version "3.0.30"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.30.tgz#2580322d0d28ad782b5b8c07c150b14efdc3b2f9"
+ integrity sha512-6323RL2BvAR3VQpTjHpa52kH/iSHyxd/G9ohb2MkBk2Ucu+oMtRXT8yi7KTSIS9nb58aupG6nO0OlXnQOAcvmQ==
+ dependencies:
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/service-error-classification" "^3.0.11"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-retry" "^3.0.11"
+ tslib "^2.6.2"
+ uuid "^9.0.1"
+
+"@smithy/middleware-serde@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz#c7d54e0add4f83e05c6878a011fc664e21022f12"
+ integrity sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/middleware-stack@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz#453af2096924e4064d9da4e053cfdf65d9a36acc"
+ integrity sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/node-config-provider@^3.1.12":
+ version "3.1.12"
+ resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz#1b1d674fc83f943dc7b3017e37f16f374e878a6c"
+ integrity sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==
+ dependencies:
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/shared-ini-file-loader" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/node-http-handler@^3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.3.2.tgz#b34685863b74dabdaf7860aa81b42d0d5437c7e0"
+ integrity sha512-t4ng1DAd527vlxvOfKFYEe6/QFBcsj7WpNlWTyjorwXXcKw3XlltBGbyHfSJ24QT84nF+agDha9tNYpzmSRZPA==
+ dependencies:
+ "@smithy/abort-controller" "^3.1.9"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/querystring-builder" "^3.0.11"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/property-provider@^3.1.11":
+ version "3.1.11"
+ resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.11.tgz#161cf1c2a2ada361e417382c57f5ba6fbca8acad"
+ integrity sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/protocol-http@^4.1.8":
+ version "4.1.8"
+ resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.8.tgz#0461758671335f65e8ff3fc0885ab7ed253819c9"
+ integrity sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/querystring-builder@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz#2ed04adbe725671824c5613d0d6f9376d791a909"
+ integrity sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-uri-escape" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/querystring-parser@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz#9d3177ea19ce8462f18d9712b395239e1ca1f969"
+ integrity sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/service-error-classification@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.11.tgz#d3d7fc0aacd2e60d022507367e55c7939e5bcb8a"
+ integrity sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+
+"@smithy/shared-ini-file-loader@^3.1.12":
+ version "3.1.12"
+ resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz#d98b1b663eb18935ce2cbc79024631d34f54042a"
+ integrity sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/signature-v4@^4.2.4":
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.4.tgz#3501d3d09fd82768867bfc00a7be4bad62f62f4d"
+ integrity sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==
+ dependencies:
+ "@smithy/is-array-buffer" "^3.0.0"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-hex-encoding" "^3.0.0"
+ "@smithy/util-middleware" "^3.0.11"
+ "@smithy/util-uri-escape" "^3.0.0"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/smithy-client@^3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.5.0.tgz#65cff262801b009998c1196764ee69929ee06f8a"
+ integrity sha512-Y8FeOa7gbDfCWf7njrkoRATPa5eNLUEjlJS5z5rXatYuGkCb80LbHcu8AQR8qgAZZaNHCLyo2N+pxPsV7l+ivg==
+ dependencies:
+ "@smithy/core" "^2.5.5"
+ "@smithy/middleware-endpoint" "^3.2.5"
+ "@smithy/middleware-stack" "^3.0.11"
+ "@smithy/protocol-http" "^4.1.8"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-stream" "^3.3.2"
+ tslib "^2.6.2"
+
+"@smithy/types@^3.7.2":
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.7.2.tgz#05cb14840ada6f966de1bf9a9c7dd86027343e10"
+ integrity sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/url-parser@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.11.tgz#e5f5ffabfb6230159167cf4cc970705fca6b8b2d"
+ integrity sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==
+ dependencies:
+ "@smithy/querystring-parser" "^3.0.11"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-base64@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017"
+ integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==
+ dependencies:
+ "@smithy/util-buffer-from" "^3.0.0"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/util-body-length-browser@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz#86ec2f6256310b4845a2f064e2f571c1ca164ded"
+ integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-body-length-node@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz#99a291bae40d8932166907fe981d6a1f54298a6d"
+ integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-buffer-from@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b"
+ integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==
+ dependencies:
+ "@smithy/is-array-buffer" "^2.2.0"
+ tslib "^2.6.2"
+
+"@smithy/util-buffer-from@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz#559fc1c86138a89b2edaefc1e6677780c24594e3"
+ integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==
+ dependencies:
+ "@smithy/is-array-buffer" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/util-config-provider@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz#62c6b73b22a430e84888a8f8da4b6029dd5b8efe"
+ integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-defaults-mode-browser@^3.0.30":
+ version "3.0.30"
+ resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.30.tgz#6c0d95af3f15bef8f1fe3f6217cc4f5ba8df5554"
+ integrity sha512-nLuGmgfcr0gzm64pqF2UT4SGWVG8UGviAdayDlVzJPNa6Z4lqvpDzdRXmLxtOdEjVlTOEdpZ9dd3ZMMu488mzg==
+ dependencies:
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ bowser "^2.11.0"
+ tslib "^2.6.2"
+
+"@smithy/util-defaults-mode-node@^3.0.30":
+ version "3.0.30"
+ resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.30.tgz#33cdb02f90944b9ff221e2f8e0904a63ac1e335f"
+ integrity sha512-OD63eWoH68vp75mYcfYyuVH+p7Li/mY4sYOROnauDrtObo1cS4uWfsy/zhOTW8F8ZPxQC1ZXZKVxoxvMGUv2Ow==
+ dependencies:
+ "@smithy/config-resolver" "^3.0.13"
+ "@smithy/credential-provider-imds" "^3.2.8"
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/property-provider" "^3.1.11"
+ "@smithy/smithy-client" "^3.5.0"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-endpoints@^2.1.7":
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.7.tgz#a088ebfab946a7219dd4763bfced82709894b82d"
+ integrity sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==
+ dependencies:
+ "@smithy/node-config-provider" "^3.1.12"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-hex-encoding@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6"
+ integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-middleware@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.11.tgz#2ab5c17266b42c225e62befcffb048afa682b5bf"
+ integrity sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==
+ dependencies:
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-retry@^3.0.11":
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.11.tgz#d267e5ccb290165cee69732547fea17b695a7425"
+ integrity sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ==
+ dependencies:
+ "@smithy/service-error-classification" "^3.0.11"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
+"@smithy/util-stream@^3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.3.2.tgz#daeea26397e8541cf2499ce65bf0b8d528cba421"
+ integrity sha512-sInAqdiVeisUGYAv/FrXpmJ0b4WTFmciTRqzhb7wVuem9BHvhIG7tpiYHLDWrl2stOokNZpTTGqz3mzB2qFwXg==
+ dependencies:
+ "@smithy/fetch-http-handler" "^4.1.2"
+ "@smithy/node-http-handler" "^3.3.2"
+ "@smithy/types" "^3.7.2"
+ "@smithy/util-base64" "^3.0.0"
+ "@smithy/util-buffer-from" "^3.0.0"
+ "@smithy/util-hex-encoding" "^3.0.0"
+ "@smithy/util-utf8" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/util-uri-escape@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54"
+ integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==
+ dependencies:
+ tslib "^2.6.2"
+
+"@smithy/util-utf8@^2.0.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5"
+ integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==
+ dependencies:
+ "@smithy/util-buffer-from" "^2.2.0"
+ tslib "^2.6.2"
+
+"@smithy/util-utf8@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-3.0.0.tgz#1a6a823d47cbec1fd6933e5fc87df975286d9d6a"
+ integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==
+ dependencies:
+ "@smithy/util-buffer-from" "^3.0.0"
+ tslib "^2.6.2"
+
+"@smithy/util-waiter@^3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.2.0.tgz#1e52f870e77d2e5572025f7606053e6ff00df93d"
+ integrity sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==
+ dependencies:
+ "@smithy/abort-controller" "^3.1.9"
+ "@smithy/types" "^3.7.2"
+ tslib "^2.6.2"
+
"@sqltools/formatter@^1.2.5":
version "1.2.5"
resolved "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz"
@@ -1991,19 +3078,19 @@
resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz"
integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
-"@types/jsdom@^21.1.6":
- version "21.1.6"
- resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.6.tgz"
- integrity sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==
+"@types/jsdom@^21.1.7":
+ version "21.1.7"
+ resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-21.1.7.tgz#9edcb09e0b07ce876e7833922d3274149c898cfa"
+ integrity sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==
dependencies:
"@types/node" "*"
"@types/tough-cookie" "*"
parse5 "^7.0.0"
-"@types/jsonwebtoken@^9.0.6":
- version "9.0.6"
- resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz"
- integrity sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==
+"@types/jsonwebtoken@^9.0.7":
+ version "9.0.7"
+ resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz#e49b96c2b29356ed462e9708fc73b833014727d2"
+ integrity sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==
dependencies:
"@types/node" "*"
@@ -2252,12 +3339,12 @@
modern-ahocorasick "^1.0.0"
picocolors "^1.0.0"
-"@vanilla-extract/dynamic@^2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@vanilla-extract/dynamic/-/dynamic-2.1.1.tgz#bc93a577b127a7dcb6f254973d13a863029a7faf"
- integrity sha512-iqf736036ujEIKsIq28UsBEMaLC2vR2DhwKyrG3NDb/fRy9qL9FKl1TqTtBV4daU30Uh3saeik4vRzN8bzQMbw==
+"@vanilla-extract/dynamic@^2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@vanilla-extract/dynamic/-/dynamic-2.1.2.tgz#b1d1c1e0e392934c5a3bbb53f99069a7721311ac"
+ integrity sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==
dependencies:
- "@vanilla-extract/private" "^1.0.5"
+ "@vanilla-extract/private" "^1.0.6"
"@vanilla-extract/integration@^7.1.3":
version "7.1.4"
@@ -2282,10 +3369,10 @@
resolved "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.4.tgz"
integrity sha512-8FGD6AejeC/nXcblgNCM5rnZb9KXa4WNkR03HCWtdJBpANjTgjHEglNLFnhuvdQ78tC6afaxBPI+g7F2NX3tgg==
-"@vanilla-extract/private@^1.0.5":
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/@vanilla-extract/private/-/private-1.0.5.tgz#8c08ac4851f4cc89a3dcdb858d8938e69b1481c4"
- integrity sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw==
+"@vanilla-extract/private@^1.0.6":
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/@vanilla-extract/private/-/private-1.0.6.tgz#f10bbf3189f7b827d0bd7f804a6219dd03ddbdd4"
+ integrity sha512-ytsG/JLweEjw7DBuZ/0JCN4WAQgM9erfSTdS1NQY778hFQSZ6cfCDEZZ0sgVm4k54uNz6ImKB33AYvSR//fjxw==
"@vanilla-extract/recipes@^0.5.2":
version "0.5.2"
@@ -2528,14 +3615,12 @@ aria-hidden@^1.1.1:
dependencies:
tslib "^2.0.0"
-aria-query@~5.1.3:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
- integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
- dependencies:
- deep-equal "^2.0.5"
+aria-query@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59"
+ integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==
-array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1:
+array-buffer-byte-length@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
@@ -2680,10 +3765,10 @@ axe-core@^4.10.0:
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.0.tgz#d9e56ab0147278272739a000880196cdfe113b59"
integrity sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==
-axios@^1.7.7:
- version "1.7.7"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f"
- integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==
+axios@^1.7.9:
+ version "1.7.9"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a"
+ integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.0"
@@ -2721,10 +3806,10 @@ bep53-range@^2.0.0:
resolved "https://registry.yarnpkg.com/bep53-range/-/bep53-range-2.0.0.tgz#a1770475661b4b814c4359e4b66f7cbd88de2b10"
integrity sha512-sMm2sV5PRs0YOVk0LTKtjuIprVzxgTQUsrGX/7Yph2Rm4FO2Fqqtq7hNjsOB5xezM4v4+5rljCgK++UeQJZguA==
-better-sqlite3@^11.3.0:
- version "11.3.0"
- resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-11.3.0.tgz#f10b32ddff665c33176d148e707bd1e57dfd0284"
- integrity sha512-iHt9j8NPYF3oKCNOO5ZI4JwThjt3Z6J6XrcwG85VNMVzv1ByqrHWv5VILEbCMFWDsoHhXvQ7oC8vgRXFAKgl9w==
+better-sqlite3@^11.7.0:
+ version "11.7.0"
+ resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-11.7.0.tgz#3eaa0f54f9e57d0a100d980e42320f8b9a4cd676"
+ integrity sha512-mXpa5jnIKKHeoGzBrUJrc65cXFKcILGZpU3FXR0pradUEm9MA7UZz02qfEejaMcm9iXrSOCenwwYMJ/tZ1y5Ig==
dependencies:
bindings "^1.5.0"
prebuild-install "^7.1.1"
@@ -2762,6 +3847,11 @@ boolean@^3.0.1:
resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
+bowser@^2.11.0:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f"
+ integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2907,6 +3997,14 @@ cacheable-request@^7.0.2:
normalize-url "^6.0.1"
responselike "^2.0.0"
+call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840"
+ integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+
call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
@@ -2918,6 +4016,24 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
+call-bind@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
+ integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
+ dependencies:
+ call-bind-apply-helpers "^1.0.0"
+ es-define-property "^1.0.0"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.2"
+
+call-bound@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.2.tgz#9dbd4daf9f5f753bec3e4c8fbb8a2ecc4de6c39b"
+ integrity sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==
+ dependencies:
+ call-bind "^1.0.8"
+ get-intrinsic "^1.2.5"
+
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
@@ -3380,30 +4496,6 @@ dedent@^1.5.1, dedent@^1.5.3:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a"
integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==
-deep-equal@^2.0.5:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1"
- integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==
- dependencies:
- array-buffer-byte-length "^1.0.0"
- call-bind "^1.0.5"
- es-get-iterator "^1.1.3"
- get-intrinsic "^1.2.2"
- is-arguments "^1.1.1"
- is-array-buffer "^3.0.2"
- is-date-object "^1.0.5"
- is-regex "^1.1.4"
- is-shared-array-buffer "^1.0.2"
- isarray "^2.0.5"
- object-is "^1.1.5"
- object-keys "^1.1.1"
- object.assign "^4.1.4"
- regexp.prototype.flags "^1.5.1"
- side-channel "^1.0.4"
- which-boxed-primitive "^1.0.2"
- which-collection "^1.0.1"
- which-typed-array "^1.1.13"
-
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@@ -3479,10 +4571,10 @@ detect-node@^2.0.4:
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
-dexie@^4.0.9:
- version "4.0.9"
- resolved "https://registry.yarnpkg.com/dexie/-/dexie-4.0.9.tgz#8c4e827815a84ef4fdc6aa7923f89ea2cda87610"
- integrity sha512-VQG1huEVSAdDZssb9Bb9mFy+d3jAE0PT4d1nIRYlT46ip1fzbs1tXi0SlUayRDgV3tTbJG8ZRqAo2um49gtynA==
+dexie@^4.0.10:
+ version "4.0.10"
+ resolved "https://registry.yarnpkg.com/dexie/-/dexie-4.0.10.tgz#979e3ee75993b44eea3852f97ceb198019d5b287"
+ integrity sha512-eM2RzuR3i+M046r2Q0Optl3pS31qTWf8aFuA7H9wnsHTwl8EPvroVLwvQene/6paAs39Tbk6fWZcn2aZaHkc/w==
diff@^4.0.1:
version "4.0.2"
@@ -3573,6 +4665,15 @@ dotenv@^16.0.3, dotenv@^16.4.4, dotenv@^16.4.5:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
+dunder-proto@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80"
+ integrity sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==
+ dependencies:
+ call-bind-apply-helpers "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.2.0"
+
eastasianwidth@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
@@ -3608,10 +4709,10 @@ electron-builder@^25.1.8:
simple-update-notifier "2.0.0"
yargs "^17.6.2"
-electron-log@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.2.0.tgz#505716926dfcf9cb3e74f42b1003be6d865bcb88"
- integrity sha512-VjLkvaLmbP3AOGOh5Fob9M8bFU0mmeSAb5G2EoTBx+kQLf2XA/0byzjsVGBTHhikbT+m1AB27NEQUv9wX9nM8w==
+electron-log@^5.2.4:
+ version "5.2.4"
+ resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.2.4.tgz#6b488d9db80aa3c6f3dc39bcd635fc9d1f79c8af"
+ integrity sha512-iX12WXc5XAaKeHg2QpiFjVwL+S1NVHPFd3V5RXtCmKhpAzXsVQnR3UEc0LovM6p6NkUQxDWnkdkaam9FNUVmCA==
electron-publish@25.1.7:
version "25.1.7"
@@ -3657,10 +4758,10 @@ electron-vite@^2.0.0:
magic-string "^0.30.10"
picocolors "^1.0.1"
-electron@^30.3.0:
- version "30.5.1"
- resolved "https://registry.yarnpkg.com/electron/-/electron-30.5.1.tgz#9f6060ce5b869c3803cbf8064305e9c3056c0744"
- integrity sha512-AhL7+mZ8Lg14iaNfoYTkXQ2qee8mmsQyllKdqxlpv/zrKgfxz6jNVtcRRbQtLxtF8yzcImWdfTQROpYiPumdbw==
+electron@^31.7.6:
+ version "31.7.6"
+ resolved "https://registry.yarnpkg.com/electron/-/electron-31.7.6.tgz#c3eccfdd2209cd782e9c2a1fc3b9a5532406928d"
+ integrity sha512-fc2kMaEc/zxGTW6oCxbuE7BQNOlDucSo+351AiovBAcp7G0iQkVu3k2kHIQolSsD38+tPdBj/N02DVpZTzi7rg==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
@@ -3712,7 +4813,7 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3:
+es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2, es-abstract@^1.23.3:
version "1.23.3"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0"
integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
@@ -3764,6 +4865,58 @@ es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23
unbox-primitive "^1.0.2"
which-typed-array "^1.1.15"
+es-abstract@^1.23.5:
+ version "1.23.5"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.5.tgz#f4599a4946d57ed467515ed10e4f157289cd52fb"
+ integrity sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ arraybuffer.prototype.slice "^1.0.3"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ data-view-buffer "^1.0.1"
+ data-view-byte-length "^1.0.1"
+ data-view-byte-offset "^1.0.0"
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-set-tostringtag "^2.0.3"
+ es-to-primitive "^1.2.1"
+ function.prototype.name "^1.1.6"
+ get-intrinsic "^1.2.4"
+ get-symbol-description "^1.0.2"
+ globalthis "^1.0.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.0.3"
+ has-symbols "^1.0.3"
+ hasown "^2.0.2"
+ internal-slot "^1.0.7"
+ is-array-buffer "^3.0.4"
+ is-callable "^1.2.7"
+ is-data-view "^1.0.1"
+ is-negative-zero "^2.0.3"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.3"
+ is-string "^1.0.7"
+ is-typed-array "^1.1.13"
+ is-weakref "^1.0.2"
+ object-inspect "^1.13.3"
+ object-keys "^1.1.1"
+ object.assign "^4.1.5"
+ regexp.prototype.flags "^1.5.3"
+ safe-array-concat "^1.1.2"
+ safe-regex-test "^1.0.3"
+ string.prototype.trim "^1.2.9"
+ string.prototype.trimend "^1.0.8"
+ string.prototype.trimstart "^1.0.8"
+ typed-array-buffer "^1.0.2"
+ typed-array-byte-length "^1.0.1"
+ typed-array-byte-offset "^1.0.2"
+ typed-array-length "^1.0.6"
+ unbox-primitive "^1.0.2"
+ which-typed-array "^1.1.15"
+
es-define-property@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
@@ -3771,30 +4924,20 @@ es-define-property@^1.0.0:
dependencies:
get-intrinsic "^1.2.4"
+es-define-property@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
+ integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
+
es-errors@^1.2.1, es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
-es-get-iterator@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
- integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.3"
- has-symbols "^1.0.3"
- is-arguments "^1.1.1"
- is-map "^2.0.2"
- is-set "^2.0.2"
- is-string "^1.0.7"
- isarray "^2.0.5"
- stop-iteration-iterator "^1.0.0"
-
-es-iterator-helpers@^1.0.19:
- version "1.0.19"
- resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8"
- integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==
+es-iterator-helpers@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz#2f1a3ab998b30cb2d10b195b587c6d9ebdebf152"
+ integrity sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==
dependencies:
call-bind "^1.0.7"
define-properties "^1.2.1"
@@ -3803,12 +4946,13 @@ es-iterator-helpers@^1.0.19:
es-set-tostringtag "^2.0.3"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
- globalthis "^1.0.3"
+ globalthis "^1.0.4"
+ gopd "^1.0.1"
has-property-descriptors "^1.0.2"
has-proto "^1.0.3"
has-symbols "^1.0.3"
internal-slot "^1.0.7"
- iterator.prototype "^1.1.2"
+ iterator.prototype "^1.1.3"
safe-array-concat "^1.1.2"
es-object-atoms@^1.0.0:
@@ -3926,12 +5070,12 @@ eslint-config-prettier@^9.1.0:
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f"
integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
-eslint-plugin-jsx-a11y@^6.8.0:
- version "6.10.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz#36fb9dead91cafd085ddbe3829602fb10ef28339"
- integrity sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==
+eslint-plugin-jsx-a11y@^6.10.2:
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483"
+ integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==
dependencies:
- aria-query "~5.1.3"
+ aria-query "^5.3.2"
array-includes "^3.1.8"
array.prototype.flatmap "^1.3.2"
ast-types-flow "^0.0.8"
@@ -3939,14 +5083,13 @@ eslint-plugin-jsx-a11y@^6.8.0:
axobject-query "^4.1.0"
damerau-levenshtein "^1.0.8"
emoji-regex "^9.2.2"
- es-iterator-helpers "^1.0.19"
hasown "^2.0.2"
jsx-ast-utils "^3.3.5"
language-tags "^1.0.9"
minimatch "^3.1.2"
object.fromentries "^2.0.8"
safe-regex-test "^1.0.3"
- string.prototype.includes "^2.0.0"
+ string.prototype.includes "^2.0.1"
eslint-plugin-prettier@^5.0.1:
version "5.2.1"
@@ -3961,17 +5104,17 @@ eslint-plugin-react-hooks@^4.6.0:
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596"
integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
-eslint-plugin-react@^7.33.2:
- version "7.37.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz#56493d7d69174d0d828bc83afeffe96903fdadbd"
- integrity sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==
+eslint-plugin-react@^7.37.2:
+ version "7.37.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz#cd0935987876ba2900df2f58339f6d92305acc7a"
+ integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==
dependencies:
array-includes "^3.1.8"
array.prototype.findlast "^1.2.5"
array.prototype.flatmap "^1.3.2"
array.prototype.tosorted "^1.1.4"
doctrine "^2.1.0"
- es-iterator-helpers "^1.0.19"
+ es-iterator-helpers "^1.1.0"
estraverse "^5.3.0"
hasown "^2.0.2"
jsx-ast-utils "^2.4.1 || ^3.0.0"
@@ -4155,6 +5298,13 @@ fast-levenshtein@^2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+fast-xml-parser@4.4.1:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f"
+ integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==
+ dependencies:
+ strnum "^1.0.5"
+
fastq@^1.6.0:
version "1.17.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
@@ -4388,7 +5538,7 @@ get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
@@ -4404,6 +5554,22 @@ get-nonce@^1.0.0:
resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3"
integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
+get-intrinsic@^1.2.5, get-intrinsic@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5"
+ integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==
+ dependencies:
+ call-bind-apply-helpers "^1.0.1"
+ dunder-proto "^1.0.0"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ function-bind "^1.1.2"
+ gopd "^1.2.0"
+ has-symbols "^1.1.0"
+ hasown "^2.0.2"
+ math-intrinsics "^1.0.0"
+
get-package-type@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
@@ -4548,7 +5714,7 @@ globals@^13.19.0:
dependencies:
type-fest "^0.20.2"
-globalthis@^1.0.1, globalthis@^1.0.3:
+globalthis@^1.0.1, globalthis@^1.0.3, globalthis@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
@@ -4575,6 +5741,11 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
+gopd@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
+ integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
+
got@^11.7.0, got@^11.8.5:
version "11.8.6"
resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
@@ -4634,6 +5805,11 @@ has-symbols@^1.0.2, has-symbols@^1.0.3:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+has-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
+ integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
+
has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
@@ -4732,10 +5908,10 @@ humanize-ms@^1.2.1:
dependencies:
ms "^2.0.0"
-husky@^9.0.11:
- version "9.1.6"
- resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.6.tgz#e23aa996b6203ab33534bdc82306b0cf2cb07d6c"
- integrity sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==
+husky@^9.1.7:
+ version "9.1.7"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d"
+ integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==
i18next-browser-languagedetector@^7.2.1:
version "7.2.1"
@@ -4837,7 +6013,7 @@ ini@~1.3.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-internal-slot@^1.0.4, internal-slot@^1.0.7:
+internal-slot@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
@@ -4866,15 +6042,7 @@ ip-address@^9.0.5:
jsbn "1.1.0"
sprintf-js "^1.1.3"
-is-arguments@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
- integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
- dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
-
-is-array-buffer@^3.0.2, is-array-buffer@^3.0.4:
+is-array-buffer@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
@@ -4906,6 +6074,13 @@ is-bigint@^1.0.1:
dependencies:
has-bigints "^1.0.1"
+is-bigint@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672"
+ integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==
+ dependencies:
+ has-bigints "^1.0.2"
+
is-boolean-object@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
@@ -4914,6 +6089,14 @@ is-boolean-object@^1.1.0:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
+is-boolean-object@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.1.tgz#c20d0c654be05da4fbc23c562635c019e93daf89"
+ integrity sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==
+ dependencies:
+ call-bound "^1.0.2"
+ has-tostringtag "^1.0.2"
+
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
@@ -4940,24 +6123,32 @@ is-data-view@^1.0.1:
dependencies:
is-typed-array "^1.1.13"
-is-date-object@^1.0.1, is-date-object@^1.0.5:
+is-date-object@^1.0.1:
version "1.0.5"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
dependencies:
has-tostringtag "^1.0.0"
+is-date-object@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7"
+ integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==
+ dependencies:
+ call-bound "^1.0.2"
+ has-tostringtag "^1.0.2"
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-is-finalizationregistry@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6"
- integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==
+is-finalizationregistry@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz#d74a7d0c5f3578e34a20729e69202e578d495dc2"
+ integrity sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==
dependencies:
- call-bind "^1.0.2"
+ call-bind "^1.0.7"
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
@@ -4988,7 +6179,7 @@ is-lambda@^1.0.1:
resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==
-is-map@^2.0.2, is-map@^2.0.3:
+is-map@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
@@ -5005,6 +6196,14 @@ is-number-object@^1.0.4:
dependencies:
has-tostringtag "^1.0.0"
+is-number-object@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.0.tgz#5a867e9ecc3d294dda740d9f127835857af7eb05"
+ integrity sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==
+ dependencies:
+ call-bind "^1.0.7"
+ has-tostringtag "^1.0.2"
+
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
@@ -5033,7 +6232,17 @@ is-regex@^1.1.4:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
-is-set@^2.0.2, is-set@^2.0.3:
+is-regex@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22"
+ integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==
+ dependencies:
+ call-bound "^1.0.2"
+ gopd "^1.2.0"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.2"
+
+is-set@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
@@ -5057,6 +6266,14 @@ is-string@^1.0.5, is-string@^1.0.7:
dependencies:
has-tostringtag "^1.0.0"
+is-string@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.0.tgz#8cb83c5d57311bf8058bc6c8db294711641da45d"
+ integrity sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==
+ dependencies:
+ call-bind "^1.0.7"
+ has-tostringtag "^1.0.2"
+
is-symbol@^1.0.2, is-symbol@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
@@ -5064,6 +6281,15 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies:
has-symbols "^1.0.2"
+is-symbol@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634"
+ integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==
+ dependencies:
+ call-bound "^1.0.2"
+ has-symbols "^1.1.0"
+ safe-regex-test "^1.1.0"
+
is-text-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636"
@@ -5123,16 +6349,17 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-iterator.prototype@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0"
- integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==
+iterator.prototype@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.4.tgz#4ae6cf98b97fdc717b7e159d79dc25f8fc9482f1"
+ integrity sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==
dependencies:
- define-properties "^1.2.1"
- get-intrinsic "^1.2.1"
- has-symbols "^1.0.3"
- reflect.getprototypeof "^1.0.4"
- set-function-name "^2.0.1"
+ define-data-property "^1.1.4"
+ es-object-atoms "^1.0.0"
+ get-intrinsic "^1.2.6"
+ has-symbols "^1.1.0"
+ reflect.getprototypeof "^1.0.8"
+ set-function-name "^2.0.2"
jackspeak@^2.3.6:
version "2.3.6"
@@ -5592,6 +6819,11 @@ matcher@^3.0.0:
dependencies:
escape-string-regexp "^4.0.0"
+math-intrinsics@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.0.0.tgz#4e04bf87c85aa51e90d078dac2252b4eb5260817"
+ integrity sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==
+
media-query-parser@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/media-query-parser/-/media-query-parser-2.0.2.tgz#ff79e56cee92615a304a1c2fa4f2bd056c0a1d29"
@@ -5935,13 +7167,10 @@ object-inspect@^1.13.1:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
-object-is@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07"
- integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
- dependencies:
- call-bind "^1.0.7"
- define-properties "^1.2.1"
+object-inspect@^1.13.3:
+ version "1.13.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a"
+ integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==
object-keys@^1.1.1:
version "1.1.1"
@@ -6267,10 +7496,10 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
-prettier@^3.2.4:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"
- integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
+prettier@^3.4.2:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f"
+ integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==
progress@^2.0.3:
version "2.0.3"
@@ -6484,25 +7713,26 @@ reflect-metadata@^0.2.1:
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b"
integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==
-reflect.getprototypeof@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859"
- integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==
+reflect.getprototypeof@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz#c58afb17a4007b4d1118c07b92c23fca422c5d82"
+ integrity sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==
dependencies:
- call-bind "^1.0.7"
+ call-bind "^1.0.8"
define-properties "^1.2.1"
- es-abstract "^1.23.1"
+ dunder-proto "^1.0.0"
+ es-abstract "^1.23.5"
es-errors "^1.3.0"
get-intrinsic "^1.2.4"
- globalthis "^1.0.3"
- which-builtin-type "^1.1.3"
+ gopd "^1.2.0"
+ which-builtin-type "^1.2.0"
regenerator-runtime@^0.14.0:
version "0.14.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
-regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
+regexp.prototype.flags@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
@@ -6512,6 +7742,16 @@ regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
es-errors "^1.3.0"
set-function-name "^2.0.1"
+regexp.prototype.flags@^1.5.3:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42"
+ integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-errors "^1.3.0"
+ set-function-name "^2.0.2"
+
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -6696,6 +7936,15 @@ safe-regex-test@^1.0.3:
es-errors "^1.3.0"
is-regex "^1.1.4"
+safe-regex-test@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1"
+ integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==
+ dependencies:
+ call-bound "^1.0.2"
+ es-errors "^1.3.0"
+ is-regex "^1.2.1"
+
"safer-buffer@>= 2.1.2 < 3.0.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -6888,7 +8137,7 @@ set-blocking@^2.0.0:
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
-set-function-length@^1.2.1:
+set-function-length@^1.2.1, set-function-length@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
@@ -7067,13 +8316,6 @@ stat-mode@^1.0.0:
resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465"
integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==
-stop-iteration-iterator@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
- integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
- dependencies:
- internal-slot "^1.0.4"
-
"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@@ -7101,13 +8343,14 @@ string-width@^5.0.1, string-width@^5.1.2:
emoji-regex "^9.2.2"
strip-ansi "^7.0.1"
-string.prototype.includes@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f"
- integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==
+string.prototype.includes@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92"
+ integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==
dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.5"
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.3"
string.prototype.matchall@^4.0.11:
version "4.0.11"
@@ -7201,6 +8444,11 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
+strnum@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
+ integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
+
strtok3@^9.0.1:
version "9.0.1"
resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-9.0.1.tgz#7e3d7bbd2b829c9def6a7bb90d82e240abdd32be"
@@ -7680,10 +8928,10 @@ use-sync-external-store@^1.0.0:
resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9"
integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==
-user-agents@^1.1.193:
- version "1.1.325"
- resolved "https://registry.yarnpkg.com/user-agents/-/user-agents-1.1.325.tgz#12c3602d6b0175468f45564b3c684c390c3be57e"
- integrity sha512-BmVDscJOZsBBztMPHg+wf65QwbT+N3C46YEsuW8BmcxRxwKh2AbdSaKEjzoC7rDlyuECXEUXO+C2eW3QAhbl2A==
+user-agents@^1.1.387:
+ version "1.1.387"
+ resolved "https://registry.yarnpkg.com/user-agents/-/user-agents-1.1.387.tgz#afc69da00b50eee7ffa17724890e755a6672b99f"
+ integrity sha512-EQ1tx80ucECUrw+mY/lI4lVQTEN7nYflGpuLwqZS6vXw+pfzHMnhKPwZN9NiR+Mo9QxmDeNmk+2ZDEvInsxrxw==
dependencies:
lodash.clonedeep "^4.5.0"
@@ -7697,7 +8945,7 @@ util-deprecate@^1.0.1:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-uuid@^9.0.0:
+uuid@^9.0.0, uuid@^9.0.1:
version "9.0.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
@@ -7812,25 +9060,37 @@ which-boxed-primitive@^1.0.2:
is-string "^1.0.5"
is-symbol "^1.0.3"
-which-builtin-type@^1.1.3:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3"
- integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==
+which-boxed-primitive@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz#2d850d6c4ac37b95441a67890e19f3fda8b6c6d9"
+ integrity sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==
dependencies:
+ is-bigint "^1.1.0"
+ is-boolean-object "^1.2.0"
+ is-number-object "^1.1.0"
+ is-string "^1.1.0"
+ is-symbol "^1.1.0"
+
+which-builtin-type@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e"
+ integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==
+ dependencies:
+ call-bound "^1.0.2"
function.prototype.name "^1.1.6"
has-tostringtag "^1.0.2"
is-async-function "^2.0.0"
- is-date-object "^1.0.5"
- is-finalizationregistry "^1.0.2"
+ is-date-object "^1.1.0"
+ is-finalizationregistry "^1.1.0"
is-generator-function "^1.0.10"
- is-regex "^1.1.4"
+ is-regex "^1.2.1"
is-weakref "^1.0.2"
isarray "^2.0.5"
- which-boxed-primitive "^1.0.2"
+ which-boxed-primitive "^1.1.0"
which-collection "^1.0.2"
- which-typed-array "^1.1.15"
+ which-typed-array "^1.1.16"
-which-collection@^1.0.1, which-collection@^1.0.2:
+which-collection@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
@@ -7840,7 +9100,7 @@ which-collection@^1.0.1, which-collection@^1.0.2:
is-weakmap "^2.0.2"
is-weakset "^2.0.3"
-which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15:
+which-typed-array@^1.1.14, which-typed-array@^1.1.15:
version "1.1.15"
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
@@ -7851,6 +9111,17 @@ which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15:
gopd "^1.0.1"
has-tostringtag "^1.0.2"
+which-typed-array@^1.1.16:
+ version "1.1.16"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.16.tgz#db4db429c4706feca2f01677a144278e4a8c216b"
+ integrity sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.2"
+
which@2.0.2, which@^2.0.1, which@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
@@ -7947,10 +9218,10 @@ yallist@^5.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533"
integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==
-yaml@^2.4.1:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130"
- integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==
+yaml@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773"
+ integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==
yargs-parser@^20.2.2:
version "20.2.9"
@@ -8011,17 +9282,17 @@ yocto-queue@^1.0.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110"
integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==
-yup@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/yup/-/yup-1.4.0.tgz#898dcd660f9fb97c41f181839d3d65c3ee15a43e"
- integrity sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==
+yup@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/yup/-/yup-1.5.0.tgz#1aaa5e453f04424094b9c8a0e5292e0ac2d97246"
+ integrity sha512-NJfBIHnp1QbqZwxcgl6irnDMIsb/7d1prNhFx02f1kp8h+orpi4xs3w90szNpOh68a/iHPdMsYvhZWoDmUvXBQ==
dependencies:
property-expr "^2.0.5"
tiny-case "^1.0.3"
toposort "^2.0.2"
type-fest "^2.19.0"
-zod@^3.23.8:
- version "3.23.8"
- resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"
- integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==
+zod@^3.24.1:
+ version "3.24.1"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.1.tgz#27445c912738c8ad1e9de1bea0359fa44d9d35ee"
+ integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==