diff --git a/languages/en-GB/2factor.json b/languages/en-GB/2factor.json index 4bf5649..11875c6 100644 --- a/languages/en-GB/2factor.json +++ b/languages/en-GB/2factor.json @@ -43,9 +43,18 @@ "authn.modal.content": "A request to register your hardware key has been sent, please authenticate by activating the key now

", "authn.error": "Hardware key registration aborted.", "authn.success": "Hardware key successfully registered.", + "authn.register.prompt": "Enter a name for this device (optional):", "authn.login.lead": "Please activate your hardware key now.", "authn.login.info": "This account is protected by two-factor authentication via a physical key. If you own the key for this account, please activate it now by pressing the button on the key.", + "authn.login.select": "Select your hardware key to authenticate with:", "authn.login.error": "We cannot validate the integrity of this key, please use a backup code to log in, and re-register this key with your account.", + "authn.rename": "Rename", + "authn.rename.prompt": "Enter new device name:", + "authn.renamed": "Device renamed successfully.", + "authn.remove": "Remove", + "authn.remove.confirm": "Are you sure you want to remove this device? You will not be able to use it for two-factor authentication.", + "authn.removed": "Device removed successfully.", + "authn.add": "Add key", "login.text": "Enter the verification code generated by your mobile application.", "login.verify": "Verify", diff --git a/languages/fa-IR/2factor.json b/languages/fa-IR/2factor.json index 203ef71..7601f1f 100644 --- a/languages/fa-IR/2factor.json +++ b/languages/fa-IR/2factor.json @@ -1,40 +1,81 @@ { - "title": "تایید دو مرحله ای", - "intro.title": "تایید دو مرحله ای چیست؟", - "disabled": "غیر فعال است", - "enabled": "فعال است", - "second-factor-required": "برای دسترسی به این صفحه تایید دو مرحله ای نیاز است", - - "notification.backupCode.generated": "مجموعه ای از کد های پشتیبان برای حساب کاربری ایجاد شد.", - "notification.backupCode.used": "یک کد پشتیبان برای ورود به این حساب کاربری استفاده شد", - - "user.intro.one": "علاوه بر احراز هویت از طریق نام کاربری و رمز عبور، لایه امنیتی دیگری قابل تنظیم است که اجازه دسترسی به حساب کاربری تنها در صورت ارائه رمز یکبار مصرف داده می شود. این رمز معمولا بر روی تلفن های همراه ایجاد و ذخیره می شود.", - "user.intro.two": "برای فعال سازی تایید دو مرحله ای، دکمه زیر را به منظور ایجاد توکن برای حساب کاربری بزنید. سپس آن را با تلفن همراه خود بوسیله برنامه Google Authenticator یا موارد مشابه اسکن کنید. در آخر به منظور تایید، کد تاییدی که در لحظه برای شما ایجاد می شود را داخل صفحه تایید وارد کنید.", - "user.intro.three": "بعد از تنظیم تایید دو مرحله ای، ورود به حساب کاربری تنها در صورت ارائه رمز عبور و رمز یکبار مصرف امکان پذیر است.", - "user.settings.title": "تنظیمات تایید دو مرحله ای", - "user.settings.enable": "فعال کردن تایید دو مرحله ای", - "user.settings.disable": "غیرفعال کردن تایید دو مرحله ای", - "user.settings.generateBackupCodes": "ایجاد کدهای پشتیبان", - "user.force_2fa": "به دلایل امنیتی، مدیر شما را ملزم به فعال کردن تایید دو مرحله ای کرده است", - - "generate.title": "ایجاد توکن و اتصال دستگاه", - "generate.text": "کد QR ای که بالا نمایش داده شده امکان اتصال دستگاه تلفن همراه شما (به کمک برنامه Google Authenticator یا موارد مناسب دیگر) به حساب کاربری شما در انجمن را فراهم می سازد. کد را با برنامه اسکن کنید و توکن ایحاد شده را تایید کنید.", + "title": "تایید دو مرحله ای", + "intro.title": "تایید دو مرحله ای چیست؟", + "disabled": "غیر فعال است", + "enabled": "فعال است", + "second-factor-required": "برای دسترسی به این صفحه تایید دو مرحله ای نیاز است", + "notification.backupCode.generated": "مجموعه ای از کد های پشتیبان برای حساب کاربری ایجاد شد.", + "notification.backupCode.used": "یک کد پشتیبان برای ورود به این حساب کاربری استفاده شد", + "user.intro.one": "علاوه بر احراز هویت از طریق نام کاربری و رمز عبور، لایه امنیتی دیگری قابل تنظیم است که اجازه دسترسی به حساب کاربری تنها در صورت ارائه رمز یکبار مصرف داده می شود. این رمز معمولا بر روی تلفن های همراه ایجاد و ذخیره می شود.", + "user.intro.two": "برای فعال سازی تایید دو مرحله ای، دکمه زیر را به منظور ایجاد توکن برای حساب کاربری بزنید. سپس آن را با تلفن همراه خود بوسیله برنامه Google Authenticator یا موارد مشابه اسکن کنید. در آخر به منظور تایید، کد تاییدی که در لحظه برای شما ایجاد می شود را داخل صفحه تایید وارد کنید.", + "user.intro.three": "بعد از تنظیم تایید دو مرحله ای، ورود به حساب کاربری تنها در صورت ارائه رمز عبور و رمز یکبار مصرف امکان پذیر است.", + "user.settings.title": "تنظیمات تایید دو مرحله ای", + "user.settings.enable": "فعال کردن تایید دو مرحله ای", + "user.settings.disable": "غیرفعال کردن تایید دو مرحله ای", + "user.settings.generateBackupCodes": "ایجاد کدهای پشتیبان", + "user.force_2fa": "به دلایل امنیتی، مدیر شما را ملزم به فعال کردن تایید دو مرحله ای کرده است", + "generate.title": "ایجاد توکن و اتصال دستگاه", + "generate.text": "کد QR ای که بالا نمایش داده شده امکان اتصال دستگاه تلفن همراه شما (به کمک برنامه Google Authenticator یا موارد مناسب دیگر) به حساب کاربری شما در انجمن را فراهم می سازد. کد را با برنامه اسکن کنید و توکن ایحاد شده را تایید کنید.", "generate.manual-entry": "If you wish to add your token manually, you can do so with the encoded key below:", - "generate.safety.title": "این توکن را در اختیار کسی نگذارید! دیگران قادر به استفاده از آن برای اتصال دستگاه به حساب کاربری شما می باشند.", - "generate.safety.text": "به دلایل امنیتی، کد QR فقط اینجا قابل مشاهده خواهد بود. در صورت از دست دادن تلفن همراه یا در دسترس نبودن آن، شما قادر به ورود به حساب کاربری خود نخواهید بود مگر آنکه تایید دو مرحله ای در حساب کاربری شما غیرفعال شود.", - "generate.success": "تایید دو مرحله ای با موفقیت فعال شد!", - - "disable.confirm": "آیا مطمئن هستید می خواهید تایید دو مرحله ای را غیرفعال کنید؟", - - "login.text": "کد تایید ایجاد شده توسط برنامه تلفن همراه تان را وارد کنید.", - "login.verify": "تایید", - "login.failure": "کد تایید وارد شده صحیح نمی باشد.", - "login.use_backup": "استفاده از کد های پشتیبان", - - "backup.text": "یکی از کد های پشتیبان خود را وارد نمایید.", - "backup.failure": "کد پشتیبان وارد شده صحیح نمی باشد", - "backup.use_code": "استفاده از کد تایید", - "backup.generate.title": "ایجاد کدهای پشتیبان جدید", - "backup.generate.one": "این کد های پشتیبان به منظور دسترسی دوباره به حساب کاربری در صورت از دست دادن یا آسیب دیدن دستگاه تلفن همراه شما ایجاد شده اند.", - "backup.generate.two": "کد های پشتیبان شما در پایین نمایش داده شده است و دیگر قابل مشاهده نخواهد بود. آن ها را جایی امن نگه داری و حفظ کنید!" + "generate.safety.title": "این توکن را در اختیار کسی نگذارید! دیگران قادر به استفاده از آن برای اتصال دستگاه به حساب کاربری شما می باشند.", + "generate.safety.text": "به دلایل امنیتی، کد QR فقط اینجا قابل مشاهده خواهد بود. در صورت از دست دادن تلفن همراه یا در دسترس نبودن آن، شما قادر به ورود به حساب کاربری خود نخواهید بود مگر آنکه تایید دو مرحله ای در حساب کاربری شما غیرفعال شود.", + "generate.success": "تایید دو مرحله ای با موفقیت فعال شد!", + "disable.confirm": "آیا مطمئن هستید می خواهید تایید دو مرحله ای را غیرفعال کنید؟", + "login.text": "کد تایید ایجاد شده توسط برنامه تلفن همراه تان را وارد کنید.", + "login.verify": "تایید", + "login.failure": "کد تایید وارد شده صحیح نمی باشد.", + "login.use_backup": "استفاده از کد های پشتیبان", + "backup.text": "یکی از کد های پشتیبان خود را وارد نمایید.", + "backup.failure": "کد پشتیبان وارد شده صحیح نمی باشد", + "backup.use_code": "استفاده از کد تایید", + "backup.generate.title": "ایجاد کدهای پشتیبان جدید", + "backup.generate.one": "این کد های پشتیبان به منظور دسترسی دوباره به حساب کاربری در صورت از دست دادن یا آسیب دیدن دستگاه تلفن همراه شما ایجاد شده اند.", + "backup.generate.two": "کد های پشتیبان شما در پایین نمایش داده شده است و دیگر قابل مشاهده نخواهد بود. آن ها را جایی امن نگه داری و حفظ کنید!", + "notification.failure": "Someone attempted to access your account but could not pass the second factor.", + "user.setup.types": "Two types of second factor authentication are supported, a time-based token via an authenticator app, or a hardware-based token via a U2F supported key. Please select which strategy you'd like to set up:", + "user.setup.enableTOTP": "
Set up via authenticator app", + "user.setup.enableU2F": "
Set up via hardware key", + "user.manage.lead": "Manage your Two-Factor Authentication methods here.", + "user.manage.enable": "Enable", + "user.manage.disable": "Disable", + "user.manage.generate": "Generate", + "user.manage.regenerate": "Regenerate", + "user.manage.disableTotp": "Are you sure you wish to dissociate your authenticator app?", + "user.manage.disableAuthn": "Are you sure you wish to dissociate your hardware key?", + "choices.lead": "Please select the second-factor method you wish to authenticate with.", + "choices.back": "Back to choices", + "choices.logout": "Logout", + "choices.authn": "Hardware key (e.g. Yubikey, Titan, etc.)", + "choices.totp": "Authenticator App (e.g. Google Authenticator, Authy, FreeOTP, etc.)", + "choices.backupCode": "Backup code", + "authn.modal.content": "A request to register your hardware key has been sent, please authenticate by activating the key now

", + "authn.error": "Hardware key registration aborted.", + "authn.success": "Hardware key successfully registered.", + "authn.register.prompt": "Enter a name for this device (optional):", + "authn.login.lead": "Please activate your hardware key now.", + "authn.login.info": "This account is protected by two-factor authentication via a physical key. If you own the key for this account, please activate it now by pressing the button on the key.", + "authn.login.select": "Select your hardware key to authenticate with:", + "authn.login.error": "We cannot validate the integrity of this key, please use a backup code to log in, and re-register this key with your account.", + "authn.rename": "Rename", + "authn.rename.prompt": "Enter new device name:", + "authn.renamed": "Device renamed successfully.", + "authn.remove": "Remove", + "authn.remove.confirm": "Are you sure you want to remove this device? You will not be able to use it for two-factor authentication.", + "authn.removed": "Device removed successfully.", + "authn.add": "Add key", + "failureInfo.lead": "If you are on this page, then you may be wondering what this notification means.", + "failureInfo.when": "We processed a login attempt at %1 on %2, and as your account is configured with a second factor, issued a second-factor challenge.", + "failureInfo.explanation": "The user who attempted this login did not successfully pass that second factor, which is why you have been notified. If this was you, then you can safely disregard this message.", + "failureInfo.remediation": "However — if this was not you, then it is likely that whoever attempted to access your account has your password, and so your password is now compromised. You should change your password immediately.", + "failureInfo.cta": "Change your password →", + "admin.intro.one": "Two-Factor Authentication (2FA) is a security protocol that works by adding a second layer of authentication before granting access. Typically, these two layers are \"something you know\" (e.g. your password), and \"something you have\" (e.g. a token generated by your mobile device). This plugin introduces the second layer of security allowing users to enable and pair their phones or other suitable devices to your forum's authentication protocols.", + "admin.intro.two": "While this plugin is active, users will be able to see a new profile menu item called \"Two-Factor Authentication\". They will be able to set up their tokens from this page.", + "admin.users.title": "Two-Factor Authentication Users", + "admin.users.text": "The following users have enabled Two-Factor Authentication:", + "admin.users.none": "No users...", + "admin.deactivate.title": "Deactivate Tokens by User", + "admin.deactivate.text": "In the event a user loses the device containing their two-factor authentication application, they may come to you to regain access to their account. Once you are sure they are who they say they are, you can disable Two-Factor Authentication on their account by typing their username here.", + "admin.deactivate.search": "Search for users here...", + "admin.force_2fa": "Enforce 2factor Authentication", + "admin.force_2fa.help": "Force the users belonging to the selected groups to activate 2FA.
This is useful to enhance security by ensuring privileged users such as administrators and moderators have this activated." } diff --git a/languages/fr/2factor.json b/languages/fr/2factor.json index 65bfc96..6d6f54c 100644 --- a/languages/fr/2factor.json +++ b/languages/fr/2factor.json @@ -4,10 +4,8 @@ "disabled": "Désactiver", "enabled": "Activer", "second-factor-required": "L'authentification à deux facteurs est requise pour accéder à cette ressource.", - "notification.backupCode.generated": "Des codes de sauvegarde viennent d'être généré pour ce compte..", "notification.backupCode.used": "Un code de sauvegarde vient d'être utilisé pour se connecter à ce compte", - "user.intro.one": "En plus de l'authentification régulière par nom d'utilisateur / mot de passe ou SSO, une seconde authentification peut être configurée, permettant l'accès que si un mot de passe basé sur le temps est fourni, généralement généré / stockée sur un appareil mobile.", "user.intro.two": "Pour activer l'authentification à deux facteurs, cliquez sur le bouton ci-dessous pour générer un jeton pour NodeBB. Une fois généré, scanner-le dans votre appareil mobile via le Authenticator (ou une application similaire). Enfin, confirmer la configuration en entrant le mot de passe basé sur le temps dans l'écran de confirmation.", "user.intro.three": "Une fois la configuration effectuée, il faudra fournir le mot de passe et le mot de passe basé sur le temps pour vous connecter", @@ -16,28 +14,23 @@ "user.settings.disable": "Désactiver l'authentification à deux facteurs", "user.settings.generateBackupCodes": "Générer des codes de sauvegarde", "user.force_2fa": "The administrator has required you to setup 2FA for your account for security purposes", - "generate.title": "Générer un jeton & Configuré le mobile", "generate.text": "Le code QR ci-dessus vous permettra d'associer votre appareil mobile (via l'application Authenticator ou une application similaire) avec votre compte sur ce site. Il suffit de le numériser via l'application, et de renseigner la clé générée dans l'application pour confirmer.", "generate.manual-entry": "If you wish to add your token manually, you can do so with the encoded key below:", "generate.safety.title": "Gardez ce jeton en toute sécurité ! D'autres peuvent l'utiliser pour enregistrer leurs appareils avec votre compte.", "generate.safety.text": "Pour des raisons de sécurité, le code QR ne sera montré uniquement sur cette page. Dans le cas où votre mobile n'est plus disponible, vous ne pourrez vous connecter sur ce site sauf si vous désactiver l'authentification à deux facteurs.", "generate.success": "L'authentification à deux facteurs est maintenant activé", - "disable.confirm": "Etes-vous sur de désactiver l'authentification à deux facteurs ?", - "login.text": "Entrez le code de vérification générée par votre application mobile.", "login.verify": "Vérifié", "login.failure": "Le code est incorrect !", "login.use_backup": "Utiliser le code sauvegarde", - "backup.text": "Saisissez l'un de vos codes de sauvegarde.", "backup.failure": "Le code de sauvegarde que vous avez entré est incorrect", "backup.use_code": "Utilisez un code de vérification", "backup.generate.title": "Générer de nouveaux codes de sauvegarde", "backup.generate.one": "Ces codes de sauvegarde ont été générés pour vous aider à retrouver l'accès à votre compte en cas de perte ou d'endommagement de votre périphérique d'authentification (généralement un téléphone mobile).", "backup.generate.two": "Vos codes sont indiqués ci-dessous et ne seront plus affichés. Ecrivez-les sur un morceau de papier et cachez-le!", - "admin.intro.one": "Authentification à deux facteurs (2FA) est un protocole de sécurité qui fonctionne en ajoutant une seconde couche d'authentification avant d'accorder l'accès. Typiquement, ces deux couches sont \"quelque chose que vous avez \" \"quelque chose que vous savez \" (par exemple, votre mot de passe), et (par exemple un jeton généré par votre appareil mobile). Ce plugin introduit la deuxième couche de sécurité permettant aux utilisateurs d'activer et une paire de leurs téléphones ou d'autres dispositifs appropriés pour les protocoles d'authentification de votre forum.", "admin.intro.two": "Bien que ce plugin est activé, les utilisateurs seront en mesure de voir un nouvel élément de menu de profil appelé \"Authentification à deux facteurs\". Ils seront en mesure de mettre en place leurs jetons sur cette page.", "admin.users.title": "Utilisateurs de l'authentification à deux facteurs", @@ -46,7 +39,43 @@ "admin.deactivate.title": "Désactiver les jetons par utilisateur", "admin.deactivate.text": "Dans le cas où un utilisateur perd le dispositif contenant leur demande d'authentification à deux facteurs, ils peuvent venir vers vous afin de retrouver l'accès à leur compte. Une fois que vous êtes sûr de leur identité, vous pouvez désactiver l'authentification à deux facteurs sur leur compte en tapant leur pseudo ici.", "admin.deactivate.search": "Recherche d'utilisateurs ici ...", - "admin.force_2fa": "Enforce 2factor Authentication", - "admin.force_2fa.help": "Force the users belonging to the selected groups to activate 2FA.
This is useful to enhance security by ensuring privileged users such as administrators and moderators have this activated." + "authn.register.prompt": "Enter a name for this device (optional):", + "authn.login.select": "Select your hardware key to authenticate with:", + "authn.rename": "Rename", + "authn.rename.prompt": "Enter new device name:", + "authn.renamed": "Device renamed successfully.", + "authn.remove": "Remove", + "authn.remove.confirm": "Are you sure you want to remove this device? You will not be able to use it for two-factor authentication.", + "authn.removed": "Device removed successfully.", + "admin.force_2fa.help": "Force the users belonging to the selected groups to activate 2FA.
This is useful to enhance security by ensuring privileged users such as administrators and moderators have this activated.", + "notification.failure": "Someone attempted to access your account but could not pass the second factor.", + "user.setup.types": "Two types of second factor authentication are supported, a time-based token via an authenticator app, or a hardware-based token via a U2F supported key. Please select which strategy you'd like to set up:", + "user.setup.enableTOTP": "
Set up via authenticator app", + "user.setup.enableU2F": "
Set up via hardware key", + "user.manage.lead": "Manage your Two-Factor Authentication methods here.", + "user.manage.enable": "Enable", + "user.manage.disable": "Disable", + "user.manage.generate": "Generate", + "user.manage.regenerate": "Regenerate", + "user.manage.disableTotp": "Are you sure you wish to dissociate your authenticator app?", + "user.manage.disableAuthn": "Are you sure you wish to dissociate your hardware key?", + "choices.lead": "Please select the second-factor method you wish to authenticate with.", + "choices.back": "Back to choices", + "choices.logout": "Logout", + "choices.authn": "Hardware key (e.g. Yubikey, Titan, etc.)", + "choices.totp": "Authenticator App (e.g. Google Authenticator, Authy, FreeOTP, etc.)", + "choices.backupCode": "Backup code", + "authn.modal.content": "A request to register your hardware key has been sent, please authenticate by activating the key now

", + "authn.error": "Hardware key registration aborted.", + "authn.success": "Hardware key successfully registered.", + "authn.login.lead": "Please activate your hardware key now.", + "authn.login.info": "This account is protected by two-factor authentication via a physical key. If you own the key for this account, please activate it now by pressing the button on the key.", + "authn.login.error": "We cannot validate the integrity of this key, please use a backup code to log in, and re-register this key with your account.", + "authn.add": "Add key", + "failureInfo.lead": "If you are on this page, then you may be wondering what this notification means.", + "failureInfo.when": "We processed a login attempt at %1 on %2, and as your account is configured with a second factor, issued a second-factor challenge.", + "failureInfo.explanation": "The user who attempted this login did not successfully pass that second factor, which is why you have been notified. If this was you, then you can safely disregard this message.", + "failureInfo.remediation": "However — if this was not you, then it is likely that whoever attempted to access your account has your password, and so your password is now compromised. You should change your password immediately.", + "failureInfo.cta": "Change your password →" } diff --git a/languages/it/2factor.json b/languages/it/2factor.json index acd207f..78c21c2 100644 --- a/languages/it/2factor.json +++ b/languages/it/2factor.json @@ -4,10 +4,8 @@ "disabled": "Disabilitato", "enabled": "Abilitato", "second-factor-required": "È richiesta l'autenticazione a due fattori per accedere a questa risorsa.", - "notification.backupCode.generated": "Sono stati generati alcuni codici di backup per questo account.", "notification.backupCode.used": "È stato appena utilizzato un codice di backup per accedere a questo account", - "user.intro.one": "Oltre all'autenticazione classica tramite username/password o SSO, è possibile configurare un secondo livello di protezione, viene consentito l'accesso solo se viene fornita la one-time password, solitamente generata tramite un dispositivo mobile.", "user.intro.two": "Per abilitare l'autenticazione a due fattori, fare clic sul pulsante in basso al fine di generare un token per NodeBB. Successivamente, scansiona con il tuo dispositivo mobile, tramite Authenticator (o un'altra app simile). Infine, conferma l'impostazione inserendo nella scermata di conferma la password generata.", "user.intro.three": "Una volta configurato, il login non sarà confermato fino a quando non viene fornita sia la password che il token generato.", @@ -16,28 +14,23 @@ "user.settings.disable": "Disabilita autenticazione a due fattori", "user.settings.generateBackupCodes": "Genera codici di backup", "user.force_2fa": "The administrator has required you to setup 2FA for your account for security purposes", - "generate.title": "Genera Token & Configura dispositivo", "generate.text": "Il codice QR mostrato in precedenza consentirà di associare il tuo dispositivo mobile (tramite l'app Authenticator o una variante appropriata) con il tuo account su questo sito. È sufficiente scansionarlo tramite l'app e digitare il token generato per confermare.", "generate.manual-entry": "If you wish to add your token manually, you can do so with the encoded key below:", "generate.safety.title": "Mantieni questo token al sicuro! Altri possono utilizzarlo per registrare i propri dispositivi con il tuo account.", "generate.safety.text": "Per scopi di sicurezza, il QR code verrà mostrato solo qui. Nel caso in cui il tuo dispositivo venga perso o non sia a te disponibile, non sarai in grado di accedere a NodeBB a meno che non disattivi 2FA dal tuo account.", "generate.success": "Doppia autenticazione abilitata con successo!", - "disable.confirm": "Sei sicuro di voler disabilitare l'autenticazione a due fattori ?", - "login.text": "Inserisci il codice di verifica generato dall'applicazione mobile.", "login.verify": "Verificare", "login.failure": "Il codice di verifica che hai inserito non è corretto", "login.use_backup": "Utilizza un codice di backup", - "backup.text": "Inserisci uno dei codici di backup.", "backup.failure": "Il codice di backup che hai inserito non è corretto", "backup.use_code": "Utilizza un codice di verifica", "backup.generate.title": "Generare nuovi codici di backup", "backup.generate.one": "Questi codici di backup sono stati generati per aiutarti a ottenere l'accesso al tuo account nel caso in cui il dispositivo di autenticazione (in genere un telefono cellulare) sia stato perso o danneggiato.", "backup.generate.two": "I tuoi codici sono riportati di seguito e non verranno nuovamente mostrati. Scrivili su un pezzo di carta e tienili al sicuro!", - "admin.intro.one": "Autenticazioen a due fattori (2FA) è un protocollo di sicurezza che agisce aggiungendo un secondo livello di autenticazione prima di concederne l'accesso. Tipicamente, questi due strati sono \"qualcosa che conosci\" (es. la tua password), e \"qualcosa che hai\" (es. token generato dal tuo dispositivo mobile). Questo plugin introduce il secondo livello di autenticazione che consente agli utenti di abilitare e accoppiare i propri telefoni o altri dispositivi adatti ai protocolli di autenticazione del tuo forum.", "admin.intro.two": "Una volta attivato questo plugin, gli utenti potranno vedere una nuova voce nel profilo utente \"Autenticazione a due fattori\". Saranno in grado di configurare il loro token da questa pagina.", "admin.users.title": "Utenti con autenticazione a due fattori", @@ -46,7 +39,43 @@ "admin.deactivate.title": "Disattiva i tokens all'utente", "admin.deactivate.text": "Nel caso in cui un utente perda il dispositivo contenente l'applicazione di autenticazione a due fattori, può contattattarti per ottenere l'accesso al proprio account. Una volta che siete sicuri che siano quelli che dicono di essere, puoi disattivare l'autenticazione a due fattori dell'account digitando il loro nome utente qui.", "admin.deactivate.search": "Cerca per utente...", - "admin.force_2fa": "Enforce 2factor Authentication", - "admin.force_2fa.help": "Force the users belonging to the selected groups to activate 2FA.
This is useful to enhance security by ensuring privileged users such as administrators and moderators have this activated." + "authn.register.prompt": "Enter a name for this device (optional):", + "authn.login.select": "Select your hardware key to authenticate with:", + "authn.rename": "Rename", + "authn.rename.prompt": "Enter new device name:", + "authn.renamed": "Device renamed successfully.", + "authn.remove": "Remove", + "authn.remove.confirm": "Are you sure you want to remove this device? You will not be able to use it for two-factor authentication.", + "authn.removed": "Device removed successfully.", + "admin.force_2fa.help": "Force the users belonging to the selected groups to activate 2FA.
This is useful to enhance security by ensuring privileged users such as administrators and moderators have this activated.", + "notification.failure": "Someone attempted to access your account but could not pass the second factor.", + "user.setup.types": "Two types of second factor authentication are supported, a time-based token via an authenticator app, or a hardware-based token via a U2F supported key. Please select which strategy you'd like to set up:", + "user.setup.enableTOTP": "
Set up via authenticator app", + "user.setup.enableU2F": "
Set up via hardware key", + "user.manage.lead": "Manage your Two-Factor Authentication methods here.", + "user.manage.enable": "Enable", + "user.manage.disable": "Disable", + "user.manage.generate": "Generate", + "user.manage.regenerate": "Regenerate", + "user.manage.disableTotp": "Are you sure you wish to dissociate your authenticator app?", + "user.manage.disableAuthn": "Are you sure you wish to dissociate your hardware key?", + "choices.lead": "Please select the second-factor method you wish to authenticate with.", + "choices.back": "Back to choices", + "choices.logout": "Logout", + "choices.authn": "Hardware key (e.g. Yubikey, Titan, etc.)", + "choices.totp": "Authenticator App (e.g. Google Authenticator, Authy, FreeOTP, etc.)", + "choices.backupCode": "Backup code", + "authn.modal.content": "A request to register your hardware key has been sent, please authenticate by activating the key now

", + "authn.error": "Hardware key registration aborted.", + "authn.success": "Hardware key successfully registered.", + "authn.login.lead": "Please activate your hardware key now.", + "authn.login.info": "This account is protected by two-factor authentication via a physical key. If you own the key for this account, please activate it now by pressing the button on the key.", + "authn.login.error": "We cannot validate the integrity of this key, please use a backup code to log in, and re-register this key with your account.", + "authn.add": "Add key", + "failureInfo.lead": "If you are on this page, then you may be wondering what this notification means.", + "failureInfo.when": "We processed a login attempt at %1 on %2, and as your account is configured with a second factor, issued a second-factor challenge.", + "failureInfo.explanation": "The user who attempted this login did not successfully pass that second factor, which is why you have been notified. If this was you, then you can safely disregard this message.", + "failureInfo.remediation": "However — if this was not you, then it is likely that whoever attempted to access your account has your password, and so your password is now compromised. You should change your password immediately.", + "failureInfo.cta": "Change your password →" } diff --git a/languages/ko/2factor.json b/languages/ko/2factor.json index eacf655..8ea0e9f 100644 --- a/languages/ko/2factor.json +++ b/languages/ko/2factor.json @@ -4,20 +4,16 @@ "disabled": "비활성화함", "enabled": "활성화함", "second-factor-required": "이 리소스에 액세스하려면 2단계 인증이 필요합니다", - "notification.backupCode.generated": "이 계정을 위해 백업 코드 세트가 방금 생성되었습니다.", "notification.backupCode.used": "백업 코드가 방금이 계정에 로그인하는 데 사용되었습니다.", "notification.failure": "누군가가 귀하의 계정에 액세스를 시도했지만 2단계 인증을 통과하지 못했습니다.", - "user.force_2fa": "관리자가 보안 목적으로 귀하의 계정에 2FA 설정을 요구했습니다.", - "user.intro.one": "사용자 이름/비밀번호 또는 SSO를 통한 정규 인증 외에도, 시간 기반 일회용 비밀번호가 제공되어 모바일 장치에서 일반적으로 생성/저장되는 경우에만 액세스를 허용하는 두 번째 보안 계층을 구성할 수 있습니다.", "user.intro.two": "2단계 인증을 활성화하려면 아래 설정 방법 중 하나를 선택하세요. 인증자 앱을 통해 설정하는 경우 제공된 QR 코드를 스캔하고 설정을 확인하기 위해 생성된 시간 기반 토큰을 다시 입력하세요. 하드웨어 키를 통해 설정하는 경우 기기를 등록하고 제시된 도전에 서명하여 계속 진행하세요.", "user.intro.three": "설정한 후에는 암호 및 일회용 토큰/도전이 제공될 때까지 로그인 시도가 진행되지 않습니다.", "user.setup.types": "두 가지 유형의 2단계 인증이 지원됩니다. 인증자 앱을 통한 시간 기반 토큰 또는 U2F 지원 키를 통한 하드웨어 기반 토큰입니다. 설정할 전략을 선택하세요:", "user.setup.enableTOTP": "
인증자 앱을 통한 설정", "user.setup.enableU2F": "
하드웨어 키를 통한 설정", - "user.manage.lead": "여기에서 2단계 인증 방법을 관리하세요.", "user.manage.enable": "활성화", "user.manage.disable": "비활성화", @@ -25,46 +21,39 @@ "user.manage.regenerate": "재생성", "user.manage.disableTotp": "인증자 앱의 연결을 해제하시겠습니까?", "user.manage.disableAuthn": "하드웨어 키의 연결을 해제하시겠습니까?", - "generate.title": "토큰 생성 및 기기 설정", "generate.text": "위에 표시된 QR 코드를 사용하여 이 웹 사이트의 계정을 모바일 장치(인증자 앱 또는 유사한 앱)와 연결할 수 있습니다. 앱을 통해 스캔하고 생성된 토큰을 입력하여 확인하세요.", "generate.manual-entry": "수동으로 토큰을 추가하려는 경우 아래에 인코딩된 키를 사용할 수 있습니다:", "generate.safety.title": "이 토큰을 안전하게 보관하세요! 타인이 이를 사용하여 자신의 기기를 귀하의 계정에 기기를 등록할 수 있습니다.", "generate.safety.text": "보안 목적으로 QR 코드는 여기에 한 번만 표시됩니다. 기기를 분실했거나 다른 사유로 사용할 수 없는 경우, 계정에서 2FA를 비활성화하지 않으면 포럼에 로그인할 수 없습니다.", "generate.success": "2단계 인증을 성공적으로 활성화했습니다!", - "choices.lead": "인증에 사용할 2단계 인증의 방법을 선택하세요.", "choices.back": "선택으로 돌아가기", "choices.logout": "로그아웃", "choices.authn": "하드웨어 키 (예: Yubikey, Titan 등)", "choices.totp": "인증자 앱 (예: Google Authenticator, Authy, FreeOTP 등)", "choices.backupCode": "백업 코드", - "authn.modal.content": "하드웨어 키를 등록하는 요청이 전송되었습니다. 키를 활성화하여 인증하세요.

", "authn.error": "하드웨어 키 등록이 중단되었습니다.", "authn.success": "하드웨어 키를 성공적으로 등록했습니다.", "authn.login.lead": "지금 하드웨어 키를 활성화하세요.", "authn.login.info": "귀하의 계정은 물리적 키를 통한 2단계 인증으로 보호됩니다. 이 계정에 대한 키를 소유하고 계신 경우 키를 활성화하여 주세요.", "authn.login.error": "이 키의 무결성을 확인할 수 없습니다. 백업 코드를 사용하여 로그인하고 계정에 다시 이 키를 등록하세요.", - "login.text": "모바일 애플리케이션에서 생성한 확인 코드를 입력하세요.", "login.verify": "확인", "login.failure": "입력한 확인 코드가 올바르지 않습니다.", "login.use_backup": "백업 코드 사용", - "backup.text": "백업 코드 중 하나를 입력하세요.", "backup.failure": "입력한 백업 코드가 올바르지 않습니다.", "backup.use_code": "확인 코드 사용", "backup.generate.title": "새로운 백업 코드 생성", "backup.generate.one": "이 백업 코드는 인증 장치(일반적으로 모바일 전화)가 분실되거나 손상된 경우 계정에 다시 액세스할 수 있도록 돕기 위해 생성되었습니다.", "backup.generate.two": "아래에 코드가 표시되며 다시 표시되지 않습니다. 종이에 기록하고 안전하게 보관하세요!", - "failureInfo.lead": "이 페이지를 보고 계신다면, 이 알림이 궁금해하실 것입니다.", "failureInfo.when": "%2의 %1에 로그인 시도를 처리를 차단했으며, 귀하의 계정이 2단계 인증으로 보호되어 있어 2단계 인증의 챌린지를 시행했습니다.", "failureInfo.explanation": "이 로그인을 시도한 사용자가 2단계 인증을 성공적으로 통과하지 못했기 때문에 알림을 받았습니다. 만약 이것이 귀하라면, 이 메시지를 안전하게 무시하실 수 있습니다.", "failureInfo.remediation": "그러나 — 만약 이것이 귀하가 아니라면, 누군가가 귀하의 계정에 액세스를 시도한 것으로, 귀하의 비밀번호의 노출로 간주하고 비밀번호를 즉시 변경해야 합니다. 비밀번호를 변경하세요.", "failureInfo.cta": "비밀번호 변경하기 →", - "admin.intro.one": "2단계 인증 (2FA)은 액세스를 허용하기 전에 두 번째 인증 계층을 추가함으로써 작동하는 보안 프로토콜입니다. 일반적으로 이 두 계층은 \"알고 있는 것\" (예: 비밀번호)과 \"가지고 있는 것\" (예: 모바일 장치에서 생성된 토큰)입니다. 이 플러그인은 두 번째 보안 계층을 도입하여 사용자가 포럼의 인증 프로토콜에 기기를 연결하고 활성화할 수 있도록 합니다.", "admin.intro.two": "이 플러그인이 활성화된 경우 사용자는 \"2단계 인증\"이라는 새 프로필 메뉴 항목을 볼 수 있습니다. 이 페이지에서 토큰을 설정할 수 있습니다.", "admin.users.title": "2단계 인증 사용자", @@ -73,7 +62,15 @@ "admin.deactivate.title": "사용자별 토큰 비활성화", "admin.deactivate.text": "사용자가 2단계 인증 애플리케이션이 포함된 디바이스를 분실한 경우 계정에 다시 액세스하기 위해 관리자인 귀하에게 요철할 수 있습니다. 해당 사용자가 본인임을 확인했다면 여기에 사용자 이름을 입력하여 계정에 대한 2단계 인증을 비활성화해 줄 수 있습니다.", "admin.deactivate.search": "여기서 사용자 검색...", - "admin.force_2fa": "2단계 인증 강제 사용", - "admin.force_2fa.help": "선택한 그룹에 속한 사용자에게 2단계 인증(2FA)를 활성화하도록 강제합니다.
이는 관리자 및 중재자와 같은 특권 사용자의 보안을 강화하는 데 유용합니다." + "authn.register.prompt": "Enter a name for this device (optional):", + "authn.login.select": "Select your hardware key to authenticate with:", + "authn.rename": "Rename", + "authn.rename.prompt": "Enter new device name:", + "authn.renamed": "Device renamed successfully.", + "authn.remove": "Remove", + "authn.remove.confirm": "Are you sure you want to remove this device? You will not be able to use it for two-factor authentication.", + "authn.removed": "Device removed successfully.", + "admin.force_2fa.help": "선택한 그룹에 속한 사용자에게 2단계 인증(2FA)를 활성화하도록 강제합니다.
이는 관리자 및 중재자와 같은 특권 사용자의 보안을 강화하는 데 유용합니다.", + "authn.add": "Add key" } diff --git a/languages/pl/2factor.json b/languages/pl/2factor.json index b362417..33d2ce0 100644 --- a/languages/pl/2factor.json +++ b/languages/pl/2factor.json @@ -4,10 +4,8 @@ "disabled": "Wyłączona", "enabled": "Włączona", "second-factor-required": "Aby uzyskać dostęp do tego zasobu, wymagane jest uwierzytelnianie dwuetapowe.", - "notification.backupCode.generated": "Właśnie wygenerowano zestaw kodów zapasowych dla tego konta.", "notification.backupCode.used": "Kod zapasowy został właśnie użyty do zalogowania się na to konto.", - "user.intro.one": "Oprócz zwykłego uwierzytelniania za pomocą nazwy użytkownika / hasła lub SSO, można skonfigurować drugą warstwę zabezpieczeń, umożliwiającą dostęp tylko wtedy, gdy dostarczane jest jednorazowe hasło oparte na czasie, zwykle generowane / przechowywane na urządzeniu mobilnym.", "user.intro.two": "Aby włączyć uwierzytelnianie dwuetapowe, kliknij przycisk poniżej, aby wygenerować kod. Po wygenerowaniu zeskanuj go na urządzenie mobilne za pomocą narzędzia Google Authenticator (lub innej podobnej aplikacji). Na koniec potwierdź konfigurację, wprowadzając bieżący kod czasowy na ekranie potwierdzenia.", "user.intro.three": "Po skonfigurowaniu, próby logowania nie będą kontynuowane, dopóki nie zostanie dostarczone zarówno hasło, jak i jednorazowy kod.", @@ -16,28 +14,23 @@ "user.settings.disable": "Wyłącz weryfikację dwuetapową", "user.settings.generateBackupCodes": "Wygeneruj kody zapasowe", "user.force_2fa": "Administrator wymaga aktywacji weryfikacji 2FA ze względów bezpieczeństwa", - "generate.title": "Wygeneruj tymczasowy kod & Skonfiguruj urządzenie", "generate.text": "Powyższy kod QR pozwoli ci skojarzyć Twoje urządzenie mobilne (za pośrednictwem aplikacji Google Authenticator lub odpowiedniego wariantu) z Twoim kontem na tej stronie. Wystarczy zeskanować go za pomocą aplikacji i wprowadzić wygenerowany kod w celu potwierdzenia.", "generate.manual-entry": "O ile chcesz dodać token ręcznie to możesz skorzystać z pola na klucz poniżej:", "generate.safety.title": "Zachowaj ten kod w bezpiecznym miejscu! Inni mogą go użyć do zarejestrowania swoich urządzeń z przy użyciu Twojego konta.", "generate.safety.text": "Ze względów bezpieczeństwa kod QR zostanie wyświetlony tylko tutaj. Jeśli urządzenie zostanie zgubione lub w inny sposób niedostępne, nie będziesz mógł zalogować się na forum dopóki 2FA nie zostanie dezaktywowane na Twoim koncie.", "generate.success": "Pomyślnie włączono weryfikację dwuetapową dla Twojego konta, gratulacje!", - "disable.confirm": "Jesteś pewny, że chcesz wyłączyć weryfikację dwuetapową?", - "login.text": "Wprowadź kod weryfikacyjny wygenerowany przez aplikację mobilną.", "login.verify": "Zweryfikuj", "login.failure": "Kod weryfikacyjny który podałeś jest nieprawidłowy, spróbuj jeszcze raz.", "login.use_backup": "Użyj kodu zapasowego", - "backup.text": "Wprowadź jeden z kodów zapasowych.", "backup.failure": "Wprowadzony kod zapasowy jest nieprawidłowy.", "backup.use_code": "Użyj kodu weryfikacyjnego", "backup.generate.title": "Wygeneruj nowe kody zapasowe", "backup.generate.one": "Te kody zapasowe zostały wygenerowane w celu ułatwienia ponownego uzyskania dostępu do konta w przypadku utraty lub uszkodzenia urządzenia uwierzytelniającego (zazwyczaj telefonu komórkowego).", "backup.generate.two": "Twoje kody wyświetlają się poniżej i nie wyświetlą się ponownie po przeładowaniu strony. Zapisz je na kartce papieru i zabezpiecz!", - "admin.intro.one": "Weryfikacja dwuetapowa (2FA) to protokół bezpieczeństwa, który działa poprzez dodanie drugiej warstwy uwierzytelniania przed przyznaniem dostępu do konta. Zazwyczaj te dwie warstwy to \"coś, co znasz\" (np. Twoje hasło) i \"coś, co masz\" (np. Kod wygenerowany przez Twoje urządzenie mobilne). Wtyczka ta wprowadza drugą warstwę zabezpieczeń, umożliwiając użytkownikom włączanie i łączenie swoich telefonów lub innych odpowiednich urządzeń z dwuetapowymi protokołami uwierzytelniania.", "admin.intro.two": "Gdy ta wtyczka jest aktywna, użytkownicy będą mogli zobaczyć nowy element menu profilu o nazwie \"Uwierzytelnianie dwuetapowe\". Będą mogli ustawić swoje tymczasowe kody dostępu na tej stronie.", "admin.users.title": "Użytkownicy weryfikacji dwuetapowej", @@ -46,7 +39,43 @@ "admin.deactivate.title": "Dezaktywuj kody według użytkownika", "admin.deactivate.text": "W przypadku, gdy użytkownik utraci urządzenie zawierające jego dwuskładnikową aplikację uwierzytelniającą, może skontaktować się z Tobą, aby odzyskać dostęp do swojego konta. Gdy masz już pewność, że jest tym, za kogo się podaje, możesz wyłączyć uwierzytelnianie dwuetapowe na jego koncie, wpisując tutaj nazwę użytkownika.", "admin.deactivate.search": "Wyszukaj użytkowników tutaj...", - "admin.force_2fa": "Wymuś weryfikację dwuetapową", - "admin.force_2fa.help": "Wymagaj od wybranych grup użytkowników aktywacji 2FA.
Funkcja ta przekłada się na wyższy poziom bezpieczeństwa tam gdzie w grę wchodzą uprawnienia administratora czy moderatora." + "authn.register.prompt": "Enter a name for this device (optional):", + "authn.login.select": "Select your hardware key to authenticate with:", + "authn.rename": "Rename", + "authn.rename.prompt": "Enter new device name:", + "authn.renamed": "Device renamed successfully.", + "authn.remove": "Remove", + "authn.remove.confirm": "Are you sure you want to remove this device? You will not be able to use it for two-factor authentication.", + "authn.removed": "Device removed successfully.", + "admin.force_2fa.help": "Wymagaj od wybranych grup użytkowników aktywacji 2FA.
Funkcja ta przekłada się na wyższy poziom bezpieczeństwa tam gdzie w grę wchodzą uprawnienia administratora czy moderatora.", + "notification.failure": "Someone attempted to access your account but could not pass the second factor.", + "user.setup.types": "Two types of second factor authentication are supported, a time-based token via an authenticator app, or a hardware-based token via a U2F supported key. Please select which strategy you'd like to set up:", + "user.setup.enableTOTP": "
Set up via authenticator app", + "user.setup.enableU2F": "
Set up via hardware key", + "user.manage.lead": "Manage your Two-Factor Authentication methods here.", + "user.manage.enable": "Enable", + "user.manage.disable": "Disable", + "user.manage.generate": "Generate", + "user.manage.regenerate": "Regenerate", + "user.manage.disableTotp": "Are you sure you wish to dissociate your authenticator app?", + "user.manage.disableAuthn": "Are you sure you wish to dissociate your hardware key?", + "choices.lead": "Please select the second-factor method you wish to authenticate with.", + "choices.back": "Back to choices", + "choices.logout": "Logout", + "choices.authn": "Hardware key (e.g. Yubikey, Titan, etc.)", + "choices.totp": "Authenticator App (e.g. Google Authenticator, Authy, FreeOTP, etc.)", + "choices.backupCode": "Backup code", + "authn.modal.content": "A request to register your hardware key has been sent, please authenticate by activating the key now

", + "authn.error": "Hardware key registration aborted.", + "authn.success": "Hardware key successfully registered.", + "authn.login.lead": "Please activate your hardware key now.", + "authn.login.info": "This account is protected by two-factor authentication via a physical key. If you own the key for this account, please activate it now by pressing the button on the key.", + "authn.login.error": "We cannot validate the integrity of this key, please use a backup code to log in, and re-register this key with your account.", + "authn.add": "Add key", + "failureInfo.lead": "If you are on this page, then you may be wondering what this notification means.", + "failureInfo.when": "We processed a login attempt at %1 on %2, and as your account is configured with a second factor, issued a second-factor challenge.", + "failureInfo.explanation": "The user who attempted this login did not successfully pass that second factor, which is why you have been notified. If this was you, then you can safely disregard this message.", + "failureInfo.remediation": "However — if this was not you, then it is likely that whoever attempted to access your account has your password, and so your password is now compromised. You should change your password immediately.", + "failureInfo.cta": "Change your password →" } diff --git a/languages/ru/2factor.json b/languages/ru/2factor.json index 8caa8ac..1fbe961 100644 --- a/languages/ru/2factor.json +++ b/languages/ru/2factor.json @@ -4,19 +4,15 @@ "disabled": "Отключенный", "enabled": "Включенный", "second-factor-required": "Для доступа к этому ресурсу требуется двухфакторная аутентификация", - "notification.backupCode.generated": "Для этой учетной записи только что был сгенерирован набор резервных кодов.", "notification.backupCode.used": "Резервный код был только что использован для входа в эту учетную запись", - "user.force_2fa": "Администратор потребовал, чтобы вы настроили 2FA для своей учетной записи в целях безопасности", - "user.intro.one": "В дополнение к обычной аутентификации с помощью имени пользователя/пароля или единого входа можно настроить второй уровень безопасности, разрешающий доступ только в том случае, если указан одноразовый пароль, основанный на времени, обычно генерируемый / сохраняемый на мобильном устройстве.", "user.intro.two": "Чтобы включить двухфакторную аутентификацию, выберите метод настройки, приведенный ниже. При настройке с помощью приложения authenticator отсканируйте прилагаемый QR-код и повторно введите токен, основанный на времени, чтобы подтвердить настройку. Если настройка выполняется с помощью аппаратного ключа, зарегистрируйте свое устройство и подпишите представленный запрос, чтобы продолжить.", "user.intro.three": "После настройки попытки входа в систему не будут продолжены до тех пор, пока не будут введены пароль и одноразовый токен/вызов.", "user.setup.types": "Поддерживаются два типа аутентификации по второму фактору: токен, основанный на времени, с помощью приложения-аутентификатора или аппаратный токен с помощью ключа, поддерживаемого U2F. Пожалуйста, выберите, какую стратегию вы хотели бы настроить:", "user.setup.enableTOTP": "
Настройка с помощью приложения authenticator", "user.setup.enableU2F": "
Настройка с помощью аппаратного ключа", - "user.manage.lead": "Управляйте своими методами двухфакторной аутентификации здесь.", "user.manage.enable": "Включить", "user.manage.disable": "Выключить", @@ -24,40 +20,34 @@ "user.manage.regenerate": "Пересоздать", "user.manage.disableTotp": "Вы уверены, что хотите отключить свое приложение для проверки подлинности?", "user.manage.disableAuthn": "Вы уверены, что хотите отсоединить свой аппаратный ключ?", - "generate.title": "Сгенерировать токен и настроить устройство", "generate.text": "Показанный выше QR-код позволит вам связать ваше мобильное устройство (через приложение Authenticator или подходящий вариант) с вашей учетной записью на этом веб-сайте. Просто отсканируйте его через приложение и введите сгенерированный токен для подтверждения.", "generate.manual-entry": "Если вы хотите добавить свой токен вручную, вы можете сделать это с помощью приведенного ниже закодированного ключа:", "generate.safety.title": "Храните этот токен в безопасности! Другие пользователи могут использовать его для регистрации своих устройств под вашей учетной записью.", "generate.safety.text": "В целях безопасности QR-код будет показан только здесь. В случае, если ваше устройство будет утеряно или иным образом недоступно, вы не сможете войти в NodeBB, пока 2FA не будет деактивирован в вашей учетной записи.", "generate.success": "Успешно включена двухфакторная аутентификация!", - "choices.lead": "Пожалуйста, выберите метод второго фактора, с помощью которого вы хотите пройти аутентификацию.", "choices.back": "Вернуться к выбору", - "choices.logout": "Выйти из аккаунта", + "choices.logout": "Выйти из аккаунта", "choices.authn": "Аппаратный ключ (например, Yubikey, Titan и т.д.)", "choices.totp": "Приложение Authenticator (например, Google Authenticator, Authy, FreeOTP и т.д.)", "choices.backupCode": "Резервный код", - "authn.modal.content": "Отправлен запрос на регистрацию вашего аппаратного ключа, пожалуйста, пройдите аутентификацию, активировав ключ сейчас

", "authn.error": "Регистрация аппаратного ключа прервана.", "authn.success": "Аппаратный ключ успешно зарегистрирован.", "authn.login.lead": "Пожалуйста, активируйте свой аппаратный ключ прямо сейчас.", "authn.login.info": "Эта учетная запись защищена двухфакторной аутентификацией с помощью физического ключа. Если у вас есть ключ от этой учетной записи, пожалуйста, активируйте его сейчас, нажав кнопку на ключе.", "authn.login.error": "Мы не можем проверить целостность этого ключа, пожалуйста, используйте резервный код для входа в систему и повторно зарегистрируйте этот ключ в своей учетной записи.", - "login.text": "Введите проверочный код, сгенерированный вашим мобильным приложением.", "login.verify": "Проверить", "login.failure": "Проверочный код, который вы ввели, неверен", "login.use_backup": "Используйте резервный код", - "backup.text": "Введите один из ваших резервных кодов.", "backup.failure": "Код резервной копии, который вы ввели, неверен", "backup.use_code": "Используйте проверочный код", "backup.generate.title": "Сгенерировать новые резервные коды", "backup.generate.one": "Эти резервные коды были сгенерированы для того, чтобы помочь вам восстановить доступ к вашей учетной записи в случае утери или повреждения вашего устройства аутентификации (обычно мобильного телефона).", "backup.generate.two": "Ваши коды указаны ниже и больше показываться не будут. Запишите их на листке бумаги и закрепите его!", - "admin.intro.one": " Двухфакторная аутентификация (2FA) - это протокол безопасности, который работает путем добавления второго уровня аутентификации перед предоставлением доступа. Как правило, этими двумя уровнями являются \"что-то, что вы знаете\" (например, ваш пароль) и \"что-то, что у вас есть\" (например, токен, сгенерированный вашим мобильным устройством). Этот плагин вводит второй уровень безопасности, позволяющий пользователям включать и подключать свои телефоны или другие подходящие устройства к протоколам аутентификации вашего форума.", "admin.intro.two": "Пока этот плагин активен, пользователи смогут увидеть новый пункт меню профиля под названием \"Двухфакторная аутентификация\". Они смогут настроить свои токены с этой страницы.", "admin.users.title": "Пользователи с двухфакторной аутентификацией", @@ -66,7 +56,21 @@ "admin.deactivate.title": "Деактивировать токены по пользователю", "admin.deactivate.text": "В случае, если пользователь потеряет устройство, содержащее его приложение для двухфакторной аутентификации, он может обратиться к вам, чтобы восстановить доступ к своей учетной записи. Как только вы убедитесь, что они те, за кого себя выдают, вы можете отключить двухфакторную аутентификацию в их учетной записи, введя здесь их имя пользователя.", "admin.deactivate.search": "Ищите пользователей здесь...", - "admin.force_2fa": "Принудительная двухфакторная аутентификация", - "admin.force_2fa.help": "Принудительно активируйте 2FA у пользователей, принадлежащих к выбранным группам.
Это полезно для повышения безопасности, гарантируя, что у привилегированных пользователей, таких как администраторы и модераторы, эта функция активирована." + "authn.register.prompt": "Enter a name for this device (optional):", + "authn.login.select": "Select your hardware key to authenticate with:", + "authn.rename": "Rename", + "authn.rename.prompt": "Enter new device name:", + "authn.renamed": "Device renamed successfully.", + "authn.remove": "Remove", + "authn.remove.confirm": "Are you sure you want to remove this device? You will not be able to use it for two-factor authentication.", + "authn.removed": "Device removed successfully.", + "admin.force_2fa.help": "Принудительно активируйте 2FA у пользователей, принадлежащих к выбранным группам.
Это полезно для повышения безопасности, гарантируя, что у привилегированных пользователей, таких как администраторы и модераторы, эта функция активирована.", + "notification.failure": "Someone attempted to access your account but could not pass the second factor.", + "authn.add": "Add key", + "failureInfo.lead": "If you are on this page, then you may be wondering what this notification means.", + "failureInfo.when": "We processed a login attempt at %1 on %2, and as your account is configured with a second factor, issued a second-factor challenge.", + "failureInfo.explanation": "The user who attempted this login did not successfully pass that second factor, which is why you have been notified. If this was you, then you can safely disregard this message.", + "failureInfo.remediation": "However — if this was not you, then it is likely that whoever attempted to access your account has your password, and so your password is now compromised. You should change your password immediately.", + "failureInfo.cta": "Change your password →" } diff --git a/languages/zh-CN/2factor.json b/languages/zh-CN/2factor.json index 41618d1..48841ee 100644 --- a/languages/zh-CN/2factor.json +++ b/languages/zh-CN/2factor.json @@ -4,10 +4,8 @@ "disabled": "已禁用", "enabled": "已启用", "second-factor-required": "访问此资源前需要先完成两步认证", - "notification.backupCode.generated": "已为此帐号生成了一组备份代码。", "notification.backupCode.used": "一个备份代码刚刚被用来登录这个帐号", - "user.intro.one": "在常规的用户名/密码或单点登录 (SSO) 之外,您还可以为帐号增加第二层安全认证,在此之后,您将需要输入一个基于时间的一次性密码来登录您的帐号。这样的密码通常在您的移动设备上生成和储存。", "user.intro.two": "要启用双因素身份认证,请单击下面的按钮为 NodeBB 生成令牌。 生成后,通过 Authenticator (或其他类似的应用程序)将其扫描到您的移动设备。 最后,通过在确认屏幕中输入基于当前时间的密码来完成设置。", "user.intro.three": "一旦启用此认证,您在访问您的账号时将需要输入常规密码和一次性密码。", @@ -16,37 +14,68 @@ "user.settings.disable": "禁用两步认证", "user.settings.generateBackupCodes": "生成备份代码", "user.force_2fa": "The administrator has required you to setup 2FA for your account for security purposes", - "generate.title": "生成令牌并设置设备", "generate.text": "请扫描此二维码(通过 Authenticator 应用或其他类似应用)来关联您的移动设备和您在此网站上的帐号,并输入生成的令牌进行确认。", "generate.manual-entry": "If you wish to add your token manually, you can do so with the encoded key below:", "generate.safety.title": "请不要泄露此二维码!其他人可以以此将您的帐号关联至他们的设备。", "generate.safety.text": "为了安全起见, 如果您的设备丢失或无法使用,您将无法登录 NodeBB ,除非您的帐号停用了 2FA。", "generate.success": "您成功启用了两步认证!", - "disable.confirm": "您确定要禁用两步认证吗?", - "login.text": "输入您的应用中生成的认证码。", "login.verify": "认证", "login.failure": "您输入的认证码不正确", "login.use_backup": "使用备份代码", - "backup.text": "输入一个备份代码。", "backup.failure": "您输入的备份代码不正确", "backup.use_code": "使用备份代码", "backup.generate.title": "生成新的备份代码", "backup.generate.one": "在您的身份认证设备(通常是手机)无法使用的情况下,您可以用这些备份代码来访问您的帐号。", "backup.generate.two": "您的代码如下所示,这些代码将不会再显示。 请把它们写在一张纸上并不要泄露给其他人!", - "admin.intro.one": "两步认证(2FA)是一种安全协议,通过在登录之前进行第二层身份认证来增强安全性。 通常,这两层是“您知道的东西”(例如您的密码)和“您有的东西”(例如您的移动设备生成的令牌)。 这个插件允许用户启用和配对他们的手机或其他合适的设备到您的论坛的来进行认证。", - "admin.intro.two": "当此插件处于激活状态时,用户将能够看到一个名为“两步认证”的帐号设置选项,他们将能够在其中设置他们的令牌。", + "admin.intro.two": "当此插件处于激活状态时,用户将能够看到一个名为“两步认证”的帐号设置选项,他们将能够在其中设置他们的令牌。", "admin.users.title": "启用了两步认证的用户", "admin.users.text": "以下用户已启用两步认证:", "admin.users.none": "没有用户...", "admin.deactivate.title": "停用用户令牌", "admin.deactivate.text": "如果用户无法使用包含其两步认证应用程序的设备,他们可能会来找您以便重新访问其帐号。 在确认他们的身份后,您可以在这里输入他们的用户名来为他们停用两步认证。", "admin.deactivate.search": "在这里搜索用户...", - "admin.force_2fa": "Enforce 2factor Authentication", - "admin.force_2fa.help": "Force the users belonging to the selected groups to activate 2FA.
This is useful to enhance security by ensuring privileged users such as administrators and moderators have this activated." + "authn.register.prompt": "Enter a name for this device (optional):", + "authn.login.select": "Select your hardware key to authenticate with:", + "authn.rename": "Rename", + "authn.rename.prompt": "Enter new device name:", + "authn.renamed": "Device renamed successfully.", + "authn.remove": "Remove", + "authn.remove.confirm": "Are you sure you want to remove this device? You will not be able to use it for two-factor authentication.", + "authn.removed": "Device removed successfully.", + "admin.force_2fa.help": "Force the users belonging to the selected groups to activate 2FA.
This is useful to enhance security by ensuring privileged users such as administrators and moderators have this activated.", + "notification.failure": "Someone attempted to access your account but could not pass the second factor.", + "user.setup.types": "Two types of second factor authentication are supported, a time-based token via an authenticator app, or a hardware-based token via a U2F supported key. Please select which strategy you'd like to set up:", + "user.setup.enableTOTP": "
Set up via authenticator app", + "user.setup.enableU2F": "
Set up via hardware key", + "user.manage.lead": "Manage your Two-Factor Authentication methods here.", + "user.manage.enable": "Enable", + "user.manage.disable": "Disable", + "user.manage.generate": "Generate", + "user.manage.regenerate": "Regenerate", + "user.manage.disableTotp": "Are you sure you wish to dissociate your authenticator app?", + "user.manage.disableAuthn": "Are you sure you wish to dissociate your hardware key?", + "choices.lead": "Please select the second-factor method you wish to authenticate with.", + "choices.back": "Back to choices", + "choices.logout": "Logout", + "choices.authn": "Hardware key (e.g. Yubikey, Titan, etc.)", + "choices.totp": "Authenticator App (e.g. Google Authenticator, Authy, FreeOTP, etc.)", + "choices.backupCode": "Backup code", + "authn.modal.content": "A request to register your hardware key has been sent, please authenticate by activating the key now

", + "authn.error": "Hardware key registration aborted.", + "authn.success": "Hardware key successfully registered.", + "authn.login.lead": "Please activate your hardware key now.", + "authn.login.info": "This account is protected by two-factor authentication via a physical key. If you own the key for this account, please activate it now by pressing the button on the key.", + "authn.login.error": "We cannot validate the integrity of this key, please use a backup code to log in, and re-register this key with your account.", + "authn.add": "Add key", + "failureInfo.lead": "If you are on this page, then you may be wondering what this notification means.", + "failureInfo.when": "We processed a login attempt at %1 on %2, and as your account is configured with a second factor, issued a second-factor challenge.", + "failureInfo.explanation": "The user who attempted this login did not successfully pass that second factor, which is why you have been notified. If this was you, then you can safely disregard this message.", + "failureInfo.remediation": "However — if this was not you, then it is likely that whoever attempted to access your account has your password, and so your password is now compromised. You should change your password immediately.", + "failureInfo.cta": "Change your password →" } diff --git a/lib/controllers.js b/lib/controllers.js index 4884b89..aa3516e 100644 --- a/lib/controllers.js +++ b/lib/controllers.js @@ -114,12 +114,12 @@ Controllers.renderAuthnChallenge = async (req, res, next) => { return next(); } - const keyIds = await parent.getAuthnKeyIds(uid); + const devices = await parent.getAuthnDevices(uid); let authnOptions; - if (keyIds.length) { + if (devices.length) { authnOptions = await parent._f2l.assertionOptions(); - authnOptions.allowCredentials = keyIds.map(keyId => ({ - id: keyId, + authnOptions.allowCredentials = devices.map(d => ({ + id: d.id, type: 'public-key', transports: ['usb', 'ble', 'nfc'], })); @@ -130,6 +130,7 @@ Controllers.renderAuthnChallenge = async (req, res, next) => { res.render('login-authn', { single, authnOptions, + devices, next: req.query.next, }); }; @@ -248,6 +249,7 @@ Controllers.renderSettings = async (req, res) => { const hasTotp = await parent.hasTotp(req.user.uid); const hasAuthn = await parent.hasAuthn(req.user.uid); + const devices = hasAuthn ? await parent.getAuthnDevices(req.user.uid) : []; res.render('account/2factor', { ...res.locals.userData, title: '[[2factor:title]]', @@ -255,6 +257,7 @@ Controllers.renderSettings = async (req, res) => { forceTfa, hasTotp, hasAuthn, + devices, backupCodeCount: await parent.countBackupCodes(req.user.uid), }); }; diff --git a/library.js b/library.js index a698fd4..e837b40 100644 --- a/library.js +++ b/library.js @@ -131,15 +131,47 @@ plugin.addRoutes = async ({ router, middleware, helpers }) => { helpers.formatApiResponse(200, res, registrationRequest); }); + routeHelpers.setupApiRoute(router, 'get', '/2factor/authn/devices', middlewares, async (req, res) => { + const devices = await plugin.getAuthnDevices(req.uid); + helpers.formatApiResponse(200, res, { devices }); + }); + + routeHelpers.setupApiRoute(router, 'patch', '/2factor/authn/device', middlewares, async (req, res) => { + const { id, name } = req.body; + if (typeof name !== 'string' || !name.trim()) { + return helpers.formatApiResponse(400, res); + } + await plugin.renameDevice(req.uid, id, name.trim()); + helpers.formatApiResponse(200, res); + }); + + routeHelpers.setupApiRoute(router, 'delete', '/2factor/authn/device/:id', middlewares, async (req, res) => { + await plugin.removeDevice(req.uid, req.params.id); + helpers.formatApiResponse(200, res); + }); + routeHelpers.setupApiRoute(router, 'post', '/2factor/authn/register', middlewares, async (req, res) => { const attestationExpectations = { challenge: req.session.registrationRequest.challenge, origin: `${nconf.get('url_parsed').protocol}//${nconf.get('url_parsed').host}`, factor: 'second', }; - req.body.rawId = Uint8Array.from(atob(base64url.toBase64(req.body.rawId)), c => c.charCodeAt(0)).buffer; + // fido2-lib 3.x expects rawId/id as ArrayBuffer, attestationObject/clientDataJSON as base64url strings + if (typeof req.body.rawId === 'string') { + const base64 = req.body.rawId.replace(/-/g, '+').replace(/_/g, '/'); + const pad = base64.length % 4 ? '='.repeat(4 - (base64.length % 4)) : ''; + const binary = atob(base64 + pad); + req.body.rawId = Uint8Array.from(binary, c => c.charCodeAt(0)).buffer; + } + if (typeof req.body.id === 'string') { + const base64 = req.body.id.replace(/-/g, '+').replace(/_/g, '/'); + const pad = base64.length % 4 ? '='.repeat(4 - (base64.length % 4)) : ''; + const binary = atob(base64 + pad); + req.body.id = Uint8Array.from(binary, c => c.charCodeAt(0)).buffer; + } const regResult = await plugin._f2l.attestationResult(req.body, attestationExpectations); - plugin.saveAuthn(req.uid, regResult.authnrData); + const deviceName = typeof req.body.deviceName === 'string' && req.body.deviceName.trim() ? req.body.deviceName.trim() : undefined; + plugin.saveAuthn(req.uid, regResult.authnrData, deviceName); delete req.session.registrationRequest; req.session.tfa = true; // eliminate re-challenge on registration @@ -156,12 +188,22 @@ plugin.addRoutes = async ({ router, middleware, helpers }) => { factor: 'second', publicKey, prevCounter, - userHandle: null, + userHandle: base64url(String(req.uid)), }; - req.body.authResponse.rawId = - Uint8Array.from(atob(base64url.toBase64(req.body.authResponse.rawId)), c => c.charCodeAt(0)).buffer; - req.body.authResponse.response.userHandle = undefined; + // fido2-lib 3.x expects rawId/id as ArrayBuffer, authenticatorData/clientDataJSON as base64url strings + if (typeof req.body.authResponse.rawId === 'string') { + const base64 = req.body.authResponse.rawId.replace(/-/g, '+').replace(/_/g, '/'); + const pad = base64.length % 4 ? '='.repeat(4 - (base64.length % 4)) : ''; + const binary = atob(base64 + pad); + req.body.authResponse.rawId = Uint8Array.from(binary, c => c.charCodeAt(0)).buffer; + } + if (typeof req.body.authResponse.id === 'string') { + const base64 = req.body.authResponse.id.replace(/-/g, '+').replace(/_/g, '/'); + const pad = base64.length % 4 ? '='.repeat(4 - (base64.length % 4)) : ''; + const binary = atob(base64 + pad); + req.body.authResponse.id = Uint8Array.from(binary, c => c.charCodeAt(0)).buffer; + } const authnResult = await plugin._f2l.assertionResult(req.body.authResponse, expectations); const count = authnResult.authnrData.get('counter'); @@ -177,15 +219,6 @@ plugin.addRoutes = async ({ router, middleware, helpers }) => { }); }); - routeHelpers.setupApiRoute(router, 'delete', '/2factor/authn', middlewares, async (req, res) => { - const { uid } = req; - const keyIds = await db.getObjectKeys(`2factor:webauthn:${uid}`); - await db.sortedSetRemove('2factor:webauthn:counters', keyIds); - await db.delete(`2factor:webauthn:${uid}`); - - helpers.formatApiResponse(200, res); - }); - routeHelpers.setupApiRoute(router, 'delete', '/2factor/totp', middlewares, async (req, res) => { await db.deleteObjectField('2factor:uid:key', req.uid); @@ -232,7 +265,16 @@ plugin.get = async uid => db.getObjectField('2factor:uid:key', uid); plugin.getAuthnKeyIds = async (uid) => { const keys = await db.getObject(`2factor:webauthn:${uid}`); - return Object.keys(keys); + return keys ? Object.keys(keys) : []; +}; + +plugin.getAuthnDevices = async (uid) => { + const keyIds = await plugin.getAuthnKeyIds(uid); + const names = await db.getObject(`2factor:webauthn:${uid}:names`) || {}; + return keyIds.map(id => ({ + id, + name: names[id] || `Device ${keyIds.indexOf(id) + 1}`, + })); }; plugin.getAuthnPublicKey = async (uid, id) => db.getObjectField(`2factor:webauthn:${uid}`, id); @@ -245,12 +287,15 @@ plugin.save = function (uid, key, callback) { db.setObjectField('2factor:uid:key', uid, key, callback); }; -plugin.saveAuthn = (uid, authnrData) => { +plugin.saveAuthn = async (uid, authnrData, deviceName) => { const counter = authnrData.get('counter'); const publicKey = authnrData.get('credentialPublicKeyPem'); const id = base64url(authnrData.get('credId')); - db.setObjectField(`2factor:webauthn:${uid}`, id, publicKey); - db.sortedSetAdd(`2factor:webauthn:counters`, counter, id); + await db.setObjectField(`2factor:webauthn:${uid}`, id, publicKey); + await db.sortedSetAdd(`2factor:webauthn:counters`, counter, id); + if (deviceName) { + await db.setObjectField(`2factor:webauthn:${uid}:names`, id, deviceName); + } }; plugin.hasAuthn = async (uid) => { @@ -352,6 +397,17 @@ plugin.disassociate = async (uid) => { const keyIds = await db.getObjectKeys(`2factor:webauthn:${uid}`); await db.sortedSetRemove('2factor:webauthn:counters', keyIds); await db.delete(`2factor:webauthn:${uid}`); + await db.delete(`2factor:webauthn:${uid}:names`); +}; + +plugin.removeDevice = async (uid, id) => { + await db.sortedSetRemove('2factor:webauthn:counters', id); + await db.deleteObjectField(`2factor:webauthn:${uid}`, id); + await db.deleteObjectField(`2factor:webauthn:${uid}:names`, id); +}; + +plugin.renameDevice = async (uid, id, newName) => { + await db.setObjectField(`2factor:webauthn:${uid}:names`, id, newName); }; plugin.overrideUid = async ({ req, locals }) => { diff --git a/package-lock.json b/package-lock.json index 17f1ea8..86dbdf6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,10 @@ "version": "7.6.2", "license": "MIT", "dependencies": { - "@github/webauthn-json": "^0.5.7", "arraybuffer-to-string": "^1.0.2", "async": "^3.2.0", "base64url": "^3.0.1", - "fido2-lib": "^2.8.1", + "fido2-lib": "^3.5.8", "lru-cache": "^5.1.1", "notp": "^2.0.3", "passport-totp": "0.0.2", @@ -136,6 +135,84 @@ "node": ">=4" } }, + "node_modules/@cbor-extract/cbor-extract-darwin-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.2.tgz", + "integrity": "sha512-ZKZ/F8US7JR92J4DMct6cLW/Y66o2K576+zjlEN/MevH70bFIsB10wkZEQPLzl2oNh2SMGy55xpJ9JoBRl5DOA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@cbor-extract/cbor-extract-darwin-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.2.tgz", + "integrity": "sha512-32b1mgc+P61Js+KW9VZv/c+xRw5EfmOcPx990JbCBSkYJFY0l25VinvyyWfl+3KjibQmAcYwmyzKF9J4DyKP/Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@cbor-extract/cbor-extract-linux-arm": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.2.tgz", + "integrity": "sha512-tNg0za41TpQfkhWjptD+0gSD2fggMiDCSacuIeELyb2xZhr7PrhPe5h66Jc67B/5dmpIhI2QOUtv4SBsricyYQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@cbor-extract/cbor-extract-linux-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.2.tgz", + "integrity": "sha512-wfqgzqCAy/Vn8i6WVIh7qZd0DdBFaWBjPdB6ma+Wihcjv0gHqD/mw3ouVv7kbbUNrab6dKEx/w3xQZEdeXIlzg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@cbor-extract/cbor-extract-linux-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.2.tgz", + "integrity": "sha512-rpiLnVEsqtPJ+mXTdx1rfz4RtUGYIUg2rUAZgd1KjiC1SehYUSkJN7Yh+aVfSjvCGtVP0/bfkQkXpPXKbmSUaA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@cbor-extract/cbor-extract-win32-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.2.tgz", + "integrity": "sha512-dI+9P7cfWxkTQ+oE+7Aa6onEn92PHgfWXZivjNheCRmTBDBf2fx6RyTi0cmgpYLnD1KLZK9ZYrMxaPZ4oiXhGA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@commitlint/cli": { "version": "19.3.0", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.3.0.tgz", @@ -1076,13 +1153,11 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@github/webauthn-json": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@github/webauthn-json/-/webauthn-json-0.5.7.tgz", - "integrity": "sha512-SUYsttDxFSvWvvJssJpwzjmRCqYfdfqC9VCmAHQYfdKCVelyJteCHo9/lK1CB72mx/jrl6cFNY08aua4J2jIyg==", - "bin": { - "webauthn-json": "dist/bin/webauthn-json-bin.js" - } + "node_modules/@hexagon/base64": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-2.0.4.tgz", + "integrity": "sha512-H/ZY6rGyaEuk0mwQgZ3BVi9hMjFTYpBNFbmtOuec/pPibuGhCMXd8fGtwBaO0h44FkWMurysMsDrpkJsBRmoWQ==", + "license": "MIT" }, "node_modules/@humanfs/core": { "version": "0.19.1", @@ -1145,33 +1220,34 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@peculiar/asn1-schema": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz", - "integrity": "sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==", - "dependencies": { - "asn1js": "^3.0.5", - "pvtsutils": "^1.3.2", - "tslib": "^2.4.0" + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@peculiar/asn1-schema/node_modules/asn1js": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", - "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "node_modules/@peculiar/asn1-schema": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz", + "integrity": "sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg==", + "license": "MIT", "dependencies": { - "pvtsutils": "^1.3.2", - "pvutils": "^1.1.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=12.0.0" + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, "node_modules/@peculiar/json-schema": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, @@ -1179,16 +1255,26 @@ "node": ">=8.0.0" } }, + "node_modules/@peculiar/utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", + "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, "node_modules/@peculiar/webcrypto": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.1.tgz", - "integrity": "sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", + "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.3.0", + "@peculiar/asn1-schema": "^2.3.8", "@peculiar/json-schema": "^1.1.12", - "pvtsutils": "^1.3.2", - "tslib": "^2.4.1", - "webcrypto-core": "^1.7.4" + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" }, "engines": { "node": ">=10.12.0" @@ -1519,26 +1605,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/asn1js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-2.4.0.tgz", - "integrity": "sha512-PvZC0FMyMut8aOnR2jAEGSkmRtHIUYPe9amUEnGjr9TdnUmsfoOkjrvUkOEU9mzpYBR1HyO9bF+8U1cLTMMHhQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", + "license": "BSD-3-Clause", "dependencies": { - "pvutils": "^1.1.3" + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.5", + "tslib": "^2.8.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" } }, "node_modules/astral-regex": { @@ -1587,25 +1665,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/base64url": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", @@ -1614,19 +1673,6 @@ "node": ">=6.0.0" } }, - "node_modules/bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", - "engines": { - "node": "*" - } - }, - "node_modules/bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1649,38 +1695,11 @@ "node": ">=8" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/bytestreamjs": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "license": "BSD-3-Clause", "engines": { "node": ">=6.0.0" } @@ -1752,24 +1771,35 @@ "node": ">=6" } }, - "node_modules/cbor": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-4.3.0.tgz", - "integrity": "sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ==", + "node_modules/cbor-extract": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.2.tgz", + "integrity": "sha512-hlSxxI9XO2yQfe9g6msd3g4xCfDqK5T5P0fRMLuaLHhxn4ViPrm+a+MUfhrvH2W962RGxcBwEGzLQyjbDG1gng==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, "dependencies": { - "bignumber.js": "^9.0.0", - "commander": "^3.0.0", - "json-text-sequence": "^0.1", - "nofilter": "^1.0.3" + "node-gyp-build-optional-packages": "5.1.1" }, "bin": { - "cbor2comment": "bin/cbor2comment", - "cbor2diag": "bin/cbor2diag", - "cbor2json": "bin/cbor2json", - "json2cbor": "bin/json2cbor" + "download-cbor-prebuilds": "bin/download-prebuilds.js" }, - "engines": { - "node": ">=6.0.0" + "optionalDependencies": { + "@cbor-extract/cbor-extract-darwin-arm64": "2.2.2", + "@cbor-extract/cbor-extract-darwin-x64": "2.2.2", + "@cbor-extract/cbor-extract-linux-arm": "2.2.2", + "@cbor-extract/cbor-extract-linux-arm64": "2.2.2", + "@cbor-extract/cbor-extract-linux-x64": "2.2.2", + "@cbor-extract/cbor-extract-win32-x64": "2.2.2" + } + }, + "node_modules/cbor-x": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.4.tgz", + "integrity": "sha512-UGKHjp6RHC6QuZ2yy5LCKm7MojM4716DwoSaqwQpaH4DvZvbBTGcoDNTiG9Y2lByXZYFEs9WRkS5tLl96IrF1Q==", + "license": "MIT", + "optionalDependencies": { + "cbor-extract": "^2.2.2" } }, "node_modules/chalk": { @@ -1870,11 +1900,6 @@ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" - }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", @@ -1921,14 +1946,6 @@ "node": ">=16" } }, - "node_modules/cose-to-jwk": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cose-to-jwk/-/cose-to-jwk-1.1.0.tgz", - "integrity": "sha512-DbR/XPptfo+kcoA77jWPTe4JS0MrpOXAg0sgVr2FeZMnTGGpppOL072e2hgPHTVbSoMkt5l0qDv/k2xCn+79Cg==", - "dependencies": { - "cbor": "^4.0.0" - } - }, "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", @@ -2125,10 +2142,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delimit-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", - "integrity": "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==" + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } }, "node_modules/dijkstrajs": { "version": "1.0.2", @@ -2175,20 +2197,6 @@ "node": ">= 0.4" } }, - "node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -2384,11 +2392,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -2799,19 +2802,22 @@ "dev": true }, "node_modules/fido2-lib": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/fido2-lib/-/fido2-lib-2.8.3.tgz", - "integrity": "sha512-VBp8jiqujf+1jVZfGDy2qBN8IRQLPuhbDdFSBvDD5/4fRWnHUOuHQGMKcnWAnAkDWw98in0OWhIxa4WJPrFPuw==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/fido2-lib/-/fido2-lib-3.5.9.tgz", + "integrity": "sha512-OfiX3VetTaoiuA9Bk8QnIdDVEOyZyR8m6JE++9zLQ3sbpsQN8thaJoLHcDi770cOKGtzvSH49mp2njtXUm6S7w==", + "license": "MIT", "dependencies": { - "@peculiar/webcrypto": "^1.2.0", - "asn1js": "^2.0.18", - "cbor": "^4.0.0", - "cose-to-jwk": "^1.1.0", - "jwk-to-pem": "^2.0.5", - "node-jose": "^2.1.0", - "pkijs": "=2.1.58", - "psl": "^1.1.24", - "pvutils": "^1.0.17" + "@hexagon/base64": "^2.0.4", + "@peculiar/webcrypto": "~1.5.0", + "asn1js": "~3.0.7", + "cbor-x": "~1.6.3", + "jose": "^6.2.1", + "pkijs": "~3.3.3", + "punycode.js": "^2.3.1", + "tldts": "~7.0.25" + }, + "engines": { + "node": ">=10" } }, "node_modules/file-entry-cache": { @@ -3178,15 +3184,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -3200,16 +3197,6 @@ "node": ">= 0.4" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -3234,25 +3221,6 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3315,11 +3283,6 @@ "node": ">=8" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "node_modules/ini": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", @@ -3809,6 +3772,15 @@ "jiti": "bin/jiti.js" } }, + "node_modules/jose": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3851,14 +3823,6 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "node_modules/json-text-sequence": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", - "integrity": "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==", - "dependencies": { - "delimit-stream": "0.1.0" - } - }, "node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", @@ -3897,16 +3861,6 @@ "node": "*" } }, - "node_modules/jwk-to-pem": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz", - "integrity": "sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==", - "dependencies": { - "asn1.js": "^5.3.0", - "elliptic": "^6.5.4", - "safe-buffer": "^5.0.1" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -4027,11 +3981,6 @@ "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -4151,11 +4100,6 @@ "node": ">=8" } }, - "node_modules/long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4214,16 +4158,6 @@ "node": ">=6" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, "node_modules/minimatch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", @@ -4257,36 +4191,19 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-forge": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", - "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-jose": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-2.2.0.tgz", - "integrity": "sha512-XPCvJRr94SjLrSIm4pbYHKLEaOsDvJCpyFw/6V/KK/IXmyZ6SFBzAUDO9HQf4DB/nTEFcRGH87mNciOP23kFjw==", + "node_modules/node-gyp-build-optional-packages": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "license": "MIT", + "optional": true, "dependencies": { - "base64url": "^3.0.1", - "buffer": "^6.0.3", - "es6-promise": "^4.2.8", - "lodash": "^4.17.21", - "long": "^5.2.0", - "node-forge": "^1.2.1", - "pako": "^2.0.4", - "process": "^0.11.10", - "uuid": "^9.0.0" - } - }, - "node_modules/nofilter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", - "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", - "engines": { - "node": ">=8" + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" } }, "node_modules/normalize-path": { @@ -4522,11 +4439,6 @@ "node": ">=6" } }, - "node_modules/pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4632,16 +4544,20 @@ } }, "node_modules/pkijs": { - "version": "2.1.58", - "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-2.1.58.tgz", - "integrity": "sha512-HEcJ4SbZNdyB7Jb1G7Ot3Y/gd7kZyTDJBMIIZOFselrKrCouhGbQu4rm9Lg8bumBACckq724G9uNsZbNJ6d2gw==", - "dependencies": { - "asn1js": "latest", - "bytestreamjs": "latest", - "pvutils": "latest" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", + "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=16.0.0" } }, "node_modules/please-upgrade-node": { @@ -4680,19 +4596,6 @@ "node": ">= 0.8.0" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -4712,20 +4615,31 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pvtsutils": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz", - "integrity": "sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.8.1" } }, "node_modules/pvutils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", - "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=16.0.0" } }, "node_modules/qrcode": { @@ -4889,25 +4803,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -4943,11 +4838,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "node_modules/semver": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", @@ -5343,6 +5233,24 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, + "node_modules/tldts": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.32.tgz", + "integrity": "sha512-5eDV0tK2NhLAAqBeXDAQ36+EwuStd1HbsSOnGsp+JbExITnExcALLL5M1kTH8gjDYN5QvwmUWimE3GoMZ2A7xQ==", + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.32" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.0.tgz", + "integrity": "sha512-/mb9kRld+x1sIMXxWNOAp5m6C+D4GrAORWlJkOJ5dElvxdN1eutz/o7qHLp9gFvDF4Y3/L2xeScoxz6AbEo8rQ==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5369,9 +5277,10 @@ } }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -5528,37 +5437,17 @@ "punycode": "^2.1.0" } }, - "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/webcrypto-core": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.6.tgz", - "integrity": "sha512-TBPiewB4Buw+HI3EQW+Bexm19/W4cP/qZG/02QJCXN+iN+T5sl074vZ3rJcle/ZtDBQSgjkbsQO/1eFcxnSBUA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.9.2.tgz", + "integrity": "sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q==", + "license": "MIT", "dependencies": { - "@peculiar/asn1-schema": "^2.1.6", + "@peculiar/asn1-schema": "^2.7.0", "@peculiar/json-schema": "^1.1.12", - "asn1js": "^3.0.1", - "pvtsutils": "^1.3.2", - "tslib": "^2.4.0" - } - }, - "node_modules/webcrypto-core/node_modules/asn1js": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", - "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", - "dependencies": { - "pvtsutils": "^1.3.2", - "pvutils": "^1.1.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=12.0.0" + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" } }, "node_modules/which": { @@ -5861,6 +5750,42 @@ } } }, + "@cbor-extract/cbor-extract-darwin-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.2.tgz", + "integrity": "sha512-ZKZ/F8US7JR92J4DMct6cLW/Y66o2K576+zjlEN/MevH70bFIsB10wkZEQPLzl2oNh2SMGy55xpJ9JoBRl5DOA==", + "optional": true + }, + "@cbor-extract/cbor-extract-darwin-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.2.tgz", + "integrity": "sha512-32b1mgc+P61Js+KW9VZv/c+xRw5EfmOcPx990JbCBSkYJFY0l25VinvyyWfl+3KjibQmAcYwmyzKF9J4DyKP/Q==", + "optional": true + }, + "@cbor-extract/cbor-extract-linux-arm": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.2.tgz", + "integrity": "sha512-tNg0za41TpQfkhWjptD+0gSD2fggMiDCSacuIeELyb2xZhr7PrhPe5h66Jc67B/5dmpIhI2QOUtv4SBsricyYQ==", + "optional": true + }, + "@cbor-extract/cbor-extract-linux-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.2.tgz", + "integrity": "sha512-wfqgzqCAy/Vn8i6WVIh7qZd0DdBFaWBjPdB6ma+Wihcjv0gHqD/mw3ouVv7kbbUNrab6dKEx/w3xQZEdeXIlzg==", + "optional": true + }, + "@cbor-extract/cbor-extract-linux-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.2.tgz", + "integrity": "sha512-rpiLnVEsqtPJ+mXTdx1rfz4RtUGYIUg2rUAZgd1KjiC1SehYUSkJN7Yh+aVfSjvCGtVP0/bfkQkXpPXKbmSUaA==", + "optional": true + }, + "@cbor-extract/cbor-extract-win32-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.2.tgz", + "integrity": "sha512-dI+9P7cfWxkTQ+oE+7Aa6onEn92PHgfWXZivjNheCRmTBDBf2fx6RyTi0cmgpYLnD1KLZK9ZYrMxaPZ4oiXhGA==", + "optional": true + }, "@commitlint/cli": { "version": "19.3.0", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.3.0.tgz", @@ -6498,10 +6423,10 @@ "levn": "^0.4.1" } }, - "@github/webauthn-json": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@github/webauthn-json/-/webauthn-json-0.5.7.tgz", - "integrity": "sha512-SUYsttDxFSvWvvJssJpwzjmRCqYfdfqC9VCmAHQYfdKCVelyJteCHo9/lK1CB72mx/jrl6cFNY08aua4J2jIyg==" + "@hexagon/base64": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-2.0.4.tgz", + "integrity": "sha512-H/ZY6rGyaEuk0mwQgZ3BVi9hMjFTYpBNFbmtOuec/pPibuGhCMXd8fGtwBaO0h44FkWMurysMsDrpkJsBRmoWQ==" }, "@humanfs/core": { "version": "0.19.1", @@ -6539,26 +6464,19 @@ "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" + }, "@peculiar/asn1-schema": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz", - "integrity": "sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz", + "integrity": "sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg==", "requires": { - "asn1js": "^3.0.5", - "pvtsutils": "^1.3.2", - "tslib": "^2.4.0" - }, - "dependencies": { - "asn1js": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", - "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", - "requires": { - "pvtsutils": "^1.3.2", - "pvutils": "^1.1.3", - "tslib": "^2.4.0" - } - } + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, "@peculiar/json-schema": { @@ -6569,16 +6487,24 @@ "tslib": "^2.0.0" } }, + "@peculiar/utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", + "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==", + "requires": { + "tslib": "^2.8.1" + } + }, "@peculiar/webcrypto": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.1.tgz", - "integrity": "sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", "requires": { - "@peculiar/asn1-schema": "^2.3.0", + "@peculiar/asn1-schema": "^2.3.8", "@peculiar/json-schema": "^1.1.12", - "pvtsutils": "^1.3.2", - "tslib": "^2.4.1", - "webcrypto-core": "^1.7.4" + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" } }, "@rtsao/scc": { @@ -6823,23 +6749,14 @@ "is-array-buffer": "^3.0.4" } }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, "asn1js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-2.4.0.tgz", - "integrity": "sha512-PvZC0FMyMut8aOnR2jAEGSkmRtHIUYPe9amUEnGjr9TdnUmsfoOkjrvUkOEU9mzpYBR1HyO9bF+8U1cLTMMHhQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", "requires": { - "pvutils": "^1.1.3" + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.5", + "tslib": "^2.8.1" } }, "astral-regex": { @@ -6876,26 +6793,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, "base64url": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" }, - "bignumber.js": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", - "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" - }, - "bn.js": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", - "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6915,20 +6817,6 @@ "fill-range": "^7.1.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "bytestreamjs": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", @@ -6980,15 +6868,27 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, - "cbor": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-4.3.0.tgz", - "integrity": "sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ==", + "cbor-extract": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.2.tgz", + "integrity": "sha512-hlSxxI9XO2yQfe9g6msd3g4xCfDqK5T5P0fRMLuaLHhxn4ViPrm+a+MUfhrvH2W962RGxcBwEGzLQyjbDG1gng==", + "optional": true, + "requires": { + "@cbor-extract/cbor-extract-darwin-arm64": "2.2.2", + "@cbor-extract/cbor-extract-darwin-x64": "2.2.2", + "@cbor-extract/cbor-extract-linux-arm": "2.2.2", + "@cbor-extract/cbor-extract-linux-arm64": "2.2.2", + "@cbor-extract/cbor-extract-linux-x64": "2.2.2", + "@cbor-extract/cbor-extract-win32-x64": "2.2.2", + "node-gyp-build-optional-packages": "5.1.1" + } + }, + "cbor-x": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.4.tgz", + "integrity": "sha512-UGKHjp6RHC6QuZ2yy5LCKm7MojM4716DwoSaqwQpaH4DvZvbBTGcoDNTiG9Y2lByXZYFEs9WRkS5tLl96IrF1Q==", "requires": { - "bignumber.js": "^9.0.0", - "commander": "^3.0.0", - "json-text-sequence": "^0.1", - "nofilter": "^1.0.3" + "cbor-extract": "^2.2.2" } }, "chalk": { @@ -7067,11 +6967,6 @@ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" - }, "compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", @@ -7109,14 +7004,6 @@ "split2": "^4.0.0" } }, - "cose-to-jwk": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cose-to-jwk/-/cose-to-jwk-1.1.0.tgz", - "integrity": "sha512-DbR/XPptfo+kcoA77jWPTe4JS0MrpOXAg0sgVr2FeZMnTGGpppOL072e2hgPHTVbSoMkt5l0qDv/k2xCn+79Cg==", - "requires": { - "cbor": "^4.0.0" - } - }, "cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", @@ -7241,10 +7128,11 @@ "object-keys": "^1.1.1" } }, - "delimit-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", - "integrity": "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==" + "detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "optional": true }, "dijkstrajs": { "version": "1.0.2", @@ -7282,20 +7170,6 @@ "gopd": "^1.2.0" } }, - "elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -7458,11 +7332,6 @@ "is-symbol": "^1.0.4" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -7764,19 +7633,18 @@ "dev": true }, "fido2-lib": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/fido2-lib/-/fido2-lib-2.8.3.tgz", - "integrity": "sha512-VBp8jiqujf+1jVZfGDy2qBN8IRQLPuhbDdFSBvDD5/4fRWnHUOuHQGMKcnWAnAkDWw98in0OWhIxa4WJPrFPuw==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/fido2-lib/-/fido2-lib-3.5.9.tgz", + "integrity": "sha512-OfiX3VetTaoiuA9Bk8QnIdDVEOyZyR8m6JE++9zLQ3sbpsQN8thaJoLHcDi770cOKGtzvSH49mp2njtXUm6S7w==", "requires": { - "@peculiar/webcrypto": "^1.2.0", - "asn1js": "^2.0.18", - "cbor": "^4.0.0", - "cose-to-jwk": "^1.1.0", - "jwk-to-pem": "^2.0.5", - "node-jose": "^2.1.0", - "pkijs": "=2.1.58", - "psl": "^1.1.24", - "pvutils": "^1.0.17" + "@hexagon/base64": "^2.0.4", + "@peculiar/webcrypto": "~1.5.0", + "asn1js": "~3.0.7", + "cbor-x": "~1.6.3", + "jose": "^6.2.1", + "pkijs": "~3.3.3", + "punycode.js": "^2.3.1", + "tldts": "~7.0.25" } }, "file-entry-cache": { @@ -8026,15 +7894,6 @@ "has-symbols": "^1.0.3" } }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, "hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -8045,16 +7904,6 @@ "function-bind": "^1.1.2" } }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -8067,11 +7916,6 @@ "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, "ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -8114,11 +7958,6 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "ini": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", @@ -8440,6 +8279,11 @@ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "dev": true }, + "jose": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8479,14 +8323,6 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, - "json-text-sequence": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", - "integrity": "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==", - "requires": { - "delimit-stream": "0.1.0" - } - }, "json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", @@ -8513,16 +8349,6 @@ "through": ">=2.2.7 <3" } }, - "jwk-to-pem": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz", - "integrity": "sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==", - "requires": { - "asn1.js": "^5.3.0", - "elliptic": "^6.5.4", - "safe-buffer": "^5.0.1" - } - }, "keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -8616,11 +8442,6 @@ "p-locate": "^4.1.0" } }, - "lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -8721,11 +8542,6 @@ } } }, - "long": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", - "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -8769,16 +8585,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, "minimatch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", @@ -8806,32 +8612,15 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node-forge": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", - "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==" - }, - "node-jose": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-2.2.0.tgz", - "integrity": "sha512-XPCvJRr94SjLrSIm4pbYHKLEaOsDvJCpyFw/6V/KK/IXmyZ6SFBzAUDO9HQf4DB/nTEFcRGH87mNciOP23kFjw==", + "node-gyp-build-optional-packages": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "optional": true, "requires": { - "base64url": "^3.0.1", - "buffer": "^6.0.3", - "es6-promise": "^4.2.8", - "lodash": "^4.17.21", - "long": "^5.2.0", - "node-forge": "^1.2.1", - "pako": "^2.0.4", - "process": "^0.11.10", - "uuid": "^9.0.0" + "detect-libc": "^2.0.1" } }, - "nofilter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", - "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==" - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -8993,11 +8782,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, - "pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9070,13 +8854,16 @@ "integrity": "sha512-7W7wTrE/NsY8xv/DTGjwNIyNah81EQH0MWcTzrHL6pOpMocOGZc0Mbdz9aXxSrp+U0mSmkU8jrNCDCfUs3sOBg==" }, "pkijs": { - "version": "2.1.58", - "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-2.1.58.tgz", - "integrity": "sha512-HEcJ4SbZNdyB7Jb1G7Ot3Y/gd7kZyTDJBMIIZOFselrKrCouhGbQu4rm9Lg8bumBACckq724G9uNsZbNJ6d2gw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", + "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", "requires": { - "asn1js": "latest", - "bytestreamjs": "latest", - "pvutils": "latest" + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" } }, "please-upgrade-node": { @@ -9106,16 +8893,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -9132,18 +8909,23 @@ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, + "punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==" + }, "pvtsutils": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz", - "integrity": "sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", "requires": { - "tslib": "^2.4.0" + "tslib": "^2.8.1" } }, "pvutils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", - "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==" + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==" }, "qrcode": { "version": "1.5.1", @@ -9261,11 +9043,6 @@ "isarray": "^2.0.5" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, "safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -9289,11 +9066,6 @@ "is-regex": "^1.2.1" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "semver": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", @@ -9577,6 +9349,19 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, + "tldts": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.32.tgz", + "integrity": "sha512-5eDV0tK2NhLAAqBeXDAQ36+EwuStd1HbsSOnGsp+JbExITnExcALLL5M1kTH8gjDYN5QvwmUWimE3GoMZ2A7xQ==", + "requires": { + "tldts-core": "^7.0.32" + } + }, + "tldts-core": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.0.tgz", + "integrity": "sha512-/mb9kRld+x1sIMXxWNOAp5m6C+D4GrAORWlJkOJ5dElvxdN1eutz/o7qHLp9gFvDF4Y3/L2xeScoxz6AbEo8rQ==" + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9600,9 +9385,9 @@ } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "type-check": { "version": "0.4.0", @@ -9716,33 +9501,16 @@ "punycode": "^2.1.0" } }, - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" - }, "webcrypto-core": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.6.tgz", - "integrity": "sha512-TBPiewB4Buw+HI3EQW+Bexm19/W4cP/qZG/02QJCXN+iN+T5sl074vZ3rJcle/ZtDBQSgjkbsQO/1eFcxnSBUA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.9.2.tgz", + "integrity": "sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q==", "requires": { - "@peculiar/asn1-schema": "^2.1.6", + "@peculiar/asn1-schema": "^2.7.0", "@peculiar/json-schema": "^1.1.12", - "asn1js": "^3.0.1", - "pvtsutils": "^1.3.2", - "tslib": "^2.4.0" - }, - "dependencies": { - "asn1js": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", - "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", - "requires": { - "pvtsutils": "^1.3.2", - "pvutils": "^1.1.3", - "tslib": "^2.4.0" - } - } + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" } }, "which": { diff --git a/package.json b/package.json index 03cf845..636a559 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "arraybuffer-to-string": "^1.0.2", "async": "^3.2.0", "base64url": "^3.0.1", - "fido2-lib": "^2.8.1", + "fido2-lib": "^3.5.8", "lru-cache": "^5.1.1", "notp": "^2.0.3", "passport-totp": "0.0.2", diff --git a/static/lib/authn.js b/static/lib/authn.js index 2686621..d9d8420 100644 --- a/static/lib/authn.js +++ b/static/lib/authn.js @@ -1,45 +1,134 @@ 'use strict'; define('forum/login-authn', ['api', 'alerts', 'hooks'], function (api, alerts, hooks) { - var Plugin = {}; + // Encode ArrayBuffer/Uint8Array to base64url for JSON transmission + function arrayBufferToBase64url(buffer) { + if (!buffer) return ''; + const bytes = new Uint8Array(buffer); + let binary = ''; + bytes.forEach(b => { binary += String.fromCharCode(b); }); + const base64 = btoa(binary); + return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); + } - Plugin.init = async () => { - try { - const abortController = new AbortController(); - hooks.on('action:ajaxify.start', () => { - abortController.abort(); + // Decode base64url strings to Uint8Array for WebAuthn API + function base64urlToUint8Array(str) { + const base64 = str.replace(/-/g, '+').replace(/_/g, '/'); + const pad = base64.length % 4 ? '='.repeat(4 - (base64.length % 4)) : ''; + const binary = atob(base64 + pad); + return Uint8Array.from(binary, c => c.charCodeAt(0)); + } + + // Decode a credential id: Uint8Array passes through, strings are base64url-decoded + function decodeId(id) { + return id instanceof Uint8Array ? id : base64urlToUint8Array(id); + } + + // Build WebAuthn assertion options from ajaxify.data + function buildAssertionOptions(allowCredentials) { + const authnOptions = JSON.parse(JSON.stringify(ajaxify.data.authnOptions || {})); + authnOptions.challenge = base64urlToUint8Array(authnOptions.challenge); + const creds = allowCredentials || authnOptions.allowCredentials; + if (creds) { + authnOptions.allowCredentials = creds.map(cred => ({ + ...cred, + id: decodeId(cred.id), + })); + } + return authnOptions; + } + + // Encode authResponse into JSON-serializable payload + function buildPayload(authResponse) { + return { + authResponse: { + id: authResponse.id, + rawId: arrayBufferToBase64url(authResponse.rawId), + response: { + authenticatorData: arrayBufferToBase64url(authResponse.response.authenticatorData), + clientDataJSON: arrayBufferToBase64url(authResponse.response.clientDataJSON), + signature: arrayBufferToBase64url(authResponse.response.signature), + userHandle: arrayBufferToBase64url(authResponse.response.userHandle), + }, + clientExtensionResults: authResponse.getClientExtensionResults(), + }, + }; + } + + // Submit verification payload and handle redirect/error + function submitVerification(payload, onDone) { + api.post(`/plugins/2factor/authn/verify${document.location.search}`, payload) + .then(({ next }) => { + if (onDone) { onDone(next); } + }) + .catch((err) => { + alerts.error(err); + ajaxify.refresh(); }); + } + + // Perform WebAuthn assertion and verify + Plugin.verify = async (allowCredentials, onDone) => { + const abortController = new AbortController(); + hooks.on('action:ajaxify.start', () => { + abortController.abort(); + }); + + const authnOptions = buildAssertionOptions(allowCredentials); + const authResponse = await navigator.credentials.get({ + publicKey: authnOptions, + signal: abortController.signal, + }); - const authResponse = await navigator.credentials.get({ - publicKey: ajaxify.data.authnOptions, - signal: abortController.signal, + const payload = buildPayload(authResponse); + submitVerification(payload, onDone); + }; + + Plugin.init = async () => { + const deviceSelect = document.getElementById('deviceSelect'); + const authBtn = document.getElementById('authBtn'); + + if (deviceSelect && authBtn) { + // Multiple devices - show device selection + authBtn.addEventListener('click', async () => { + const selectedId = deviceSelect.value; + authBtn.disabled = true; + try { + await Plugin.verify([{ id: selectedId, type: 'public-key', transports: ['usb', 'ble', 'nfc'] }], (next) => { + document.location = next; + }); + } catch (e) { + if (e.code !== 20) { // 20 is user canceled + alerts.alert({ + title: '[[2factor:title]]', + message: e.message, + timeout: 2500, + }); + } + authBtn.disabled = false; + } }); + } else { + // Single device or no device selection - proceed directly + try { + await Plugin.verify(null, (next) => { + document.location = next; + }); + } catch (e) { + if (e.code !== 20) { // 20 is user canceled + alerts.alert({ + title: '[[2factor:title]]', + message: e.message, + timeout: 2500, + }); + } - api.post(`/plugins/2factor/authn/verify${document.location.search}`, { authResponse }).then(({ next }) => { const iconEl = document.getElementById('statusIcon'); iconEl.classList.remove('fa-spinner'); iconEl.classList.remove('fa-spin'); - iconEl.classList.add('fa-check'); - iconEl.classList.add('text-success'); - document.location = next; - }).catch((err) => { - alerts.error(err); - ajaxify.refresh(); - }); - } catch (e) { - if (e.code !== 20) { // 20 is user canceled - alerts.alert({ - title: '[[2factor:title]]', - message: e.message, - timeout: 2500, - }); + iconEl.classList.add('fa-times'); + iconEl.classList.add('text-danger'); } - - const iconEl = document.getElementById('statusIcon'); - iconEl.classList.remove('fa-spinner'); - iconEl.classList.remove('fa-spin'); - iconEl.classList.add('fa-times'); - iconEl.classList.add('text-danger'); } }; diff --git a/static/lib/settings.js b/static/lib/settings.js index 992712f..17260a5 100644 --- a/static/lib/settings.js +++ b/static/lib/settings.js @@ -12,6 +12,11 @@ define('forum/account/2factor', ['api', 'alerts', 'bootbox'], function (api, ale const action = e.target.getAttribute('data-action'); Settings[action].call(e.target); }); + + // Render device list if WebAuthn is enabled + if (ajaxify.data.hasAuthn) { + Settings.renderDevicesList(); + } }; Settings.setupTotp = function () { @@ -51,6 +56,66 @@ define('forum/account/2factor', ['api', 'alerts', 'bootbox'], function (api, ale }); }; + Settings.getAuthnDevices = async () => { + try { + const response = await api.get('/plugins/2factor/authn/devices'); + return response.devices || []; + } catch (e) { + alerts.error(e); + return []; + } + }; + + Settings.renderDevicesList = async () => { + const devices = await Settings.getAuthnDevices(); + app.parseAndTranslate('partials/2factor/deviceList', { devices }, (html) => { + const itemEl = document.querySelector('[data-action="setupAuthn"]').closest('.list-group-item'); + const container = itemEl.querySelector('.device-list-container'); + if (container) { + $(container).html(html); + } + // Attach event listeners for rename/remove + document.querySelectorAll('.device-rename').forEach(btn => { + btn.addEventListener('click', (e) => { + const deviceId = e.target.closest('.device-rename').getAttribute('data-device-id'); + Settings.renameDevice(deviceId); + }); + }); + document.querySelectorAll('.device-remove').forEach(btn => { + btn.addEventListener('click', (e) => { + const deviceId = e.target.closest('.device-remove').getAttribute('data-device-id'); + Settings.removeDevice(deviceId); + }); + }); + }); + }; + + Settings.renameDevice = (deviceId) => { + bootbox.prompt('[[2factor:authn.rename.prompt]]', function (result) { + if (result && result.trim()) { + api.patch('/plugins/2factor/authn/device', { id: deviceId, name: result.trim() }) + .then(() => { + alerts.success('[[2factor:authn.renamed]]'); + Settings.renderDevicesList(); + }) + .catch(alerts.error); + } + }); + }; + + Settings.removeDevice = (deviceId) => { + bootbox.confirm('[[2factor:authn.remove.confirm]]', function (confirm) { + if (confirm) { + api.del(`/plugins/2factor/authn/device/${deviceId}`) + .then(() => { + alerts.success('[[2factor:authn.removed]]'); + Settings.renderDevicesList(); + }) + .catch(alerts.error); + } + }); + }; + Settings.disableAuthn = () => { bootbox.confirm('[[2factor:user.manage.disableAuthn]]', function (confirm) { if (confirm) { @@ -59,24 +124,66 @@ define('forum/account/2factor', ['api', 'alerts', 'bootbox'], function (api, ale }); }; + // Decode base64url strings to Uint8Array for WebAuthn API + function base64urlToUint8Array(str) { + const base64 = str.replace(/-/g, '+').replace(/_/g, '/'); + const pad = base64.length % 4 ? '='.repeat(4 - (base64.length % 4)) : ''; + const binary = atob(base64 + pad); + return Uint8Array.from(binary, c => c.charCodeAt(0)); + } + + // Encode ArrayBuffer/Uint8Array to base64url for JSON transmission + function arrayBufferToBase64url(buffer) { + const bytes = new Uint8Array(buffer); + let binary = ''; + bytes.forEach(b => { binary += String.fromCharCode(b); }); + const base64 = btoa(binary); + return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); + } + Settings.setupAuthn = function () { const self = this; self.classList.add('text-muted'); - const modal = bootbox.dialog({ - message: '[[2factor:authn.modal.content]]', - closeButton: false, - className: 'text-center', - }); - api.get('/plugins/2factor/authn/register', {}).then(async (request) => { + bootbox.prompt('[[2factor:authn.register.prompt]]', async function (deviceName) { + const modal = bootbox.dialog({ + message: '[[2factor:authn.modal.content]]', + closeButton: false, + className: 'text-center', + }); + let request; + try { + request = await api.get('/plugins/2factor/authn/register', {}); + } catch (e) { + modal.modal('hide'); + self.classList.remove('disabled'); + alerts.error(e); + return; + } try { + // WebAuthn requires user.id and challenge as BufferSource (Uint8Array) + request.user.id = base64urlToUint8Array(request.user.id); + request.challenge = base64urlToUint8Array(request.challenge); const response = await navigator.credentials.create({ publicKey: request, }); modal.modal('hide'); - api.post('/plugins/2factor/authn/register', response).then(() => { + // Encode binary fields for JSON transmission + const payload = { + id: response.id, + rawId: arrayBufferToBase64url(response.rawId), + response: { + attestationObject: arrayBufferToBase64url(response.response.attestationObject), + clientDataJSON: arrayBufferToBase64url(response.response.clientDataJSON), + }, + clientExtensionResults: response.getClientExtensionResults(), + deviceName: deviceName && deviceName.trim() ? deviceName.trim() : undefined, + }; + + api.post('/plugins/2factor/authn/register', payload).then(() => { alerts.success('[[2factor:authn.success]]'); - setTimeout(document.location.reload.bind(document.location), 1000); + Settings.renderDevicesList(); + ajaxify.refresh(); }).catch(alerts.error); } catch (e) { modal.modal('hide'); diff --git a/static/templates/account/2factor.tpl b/static/templates/account/2factor.tpl index 9222c00..dcd64fa 100644 --- a/static/templates/account/2factor.tpl +++ b/static/templates/account/2factor.tpl @@ -26,12 +26,15 @@
[[2factor:choices.authn]]
+
+ +
diff --git a/static/templates/login-authn.tpl b/static/templates/login-authn.tpl index 97ec62b..91e6e16 100644 --- a/static/templates/login-authn.tpl +++ b/static/templates/login-authn.tpl @@ -11,12 +11,30 @@
+ {{{ if (devices.length != "1") }}} +

[[2factor:authn.login.select]]

+
+ +
+ +
+ {{{ if !single }}} +

+ [[2factor:choices.back]] +

+ {{{ end }}} + {{{ else }}}

[[2factor:authn.login.lead]]

[[2factor:authn.login.info]]

+ {{{ end }}}
- {{{ if !single }}} + {{{ if (!single && (devices.length == "1")) }}}

[[2factor:choices.back]]

diff --git a/static/templates/partials/2factor/deviceList.tpl b/static/templates/partials/2factor/deviceList.tpl new file mode 100644 index 0000000..9f02db2 --- /dev/null +++ b/static/templates/partials/2factor/deviceList.tpl @@ -0,0 +1,13 @@ +{{{ if devices.length }}} +
+ {{{ each devices }}} +
+ {./name} +
+ + +
+
+ {{{ end }}} +
+{{{ end }}} diff --git a/yarn.lock b/yarn.lock index 7d73b44..ae11aff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@cbor-extract/cbor-extract-linux-x64@2.2.2": + version "2.2.2" + resolved "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.2.tgz" + integrity sha512-rpiLnVEsqtPJ+mXTdx1rfz4RtUGYIUg2rUAZgd1KjiC1SehYUSkJN7Yh+aVfSjvCGtVP0/bfkQkXpPXKbmSUaA== + "@commitlint/cli@^19.3.0": version "19.3.0" resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-19.3.0.tgz" @@ -231,7 +236,7 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.25.1": +"@eslint/js@^9.x", "@eslint/js@9.25.1": version "9.25.1" resolved "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz" integrity sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg== @@ -249,10 +254,10 @@ "@eslint/core" "^0.13.0" levn "^0.4.1" -"@github/webauthn-json@^0.5.7": - version "0.5.7" - resolved "https://registry.npmjs.org/@github/webauthn-json/-/webauthn-json-0.5.7.tgz" - integrity sha512-SUYsttDxFSvWvvJssJpwzjmRCqYfdfqC9VCmAHQYfdKCVelyJteCHo9/lK1CB72mx/jrl6cFNY08aua4J2jIyg== +"@hexagon/base64@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@hexagon/base64/-/base64-2.0.4.tgz" + integrity sha512-H/ZY6rGyaEuk0mwQgZ3BVi9hMjFTYpBNFbmtOuec/pPibuGhCMXd8fGtwBaO0h44FkWMurysMsDrpkJsBRmoWQ== "@humanfs/core@^0.19.1": version "0.19.1" @@ -282,14 +287,19 @@ resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz" integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ== -"@peculiar/asn1-schema@^2.1.6", "@peculiar/asn1-schema@^2.3.0": - version "2.3.6" - resolved "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz" - integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== +"@noble/hashes@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@peculiar/asn1-schema@^2.3.8", "@peculiar/asn1-schema@^2.7.0": + version "2.7.0" + resolved "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz" + integrity sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg== dependencies: - asn1js "^3.0.5" - pvtsutils "^1.3.2" - tslib "^2.4.0" + "@peculiar/utils" "^2.0.2" + asn1js "^3.0.6" + tslib "^2.8.1" "@peculiar/json-schema@^1.1.12": version "1.1.12" @@ -298,16 +308,36 @@ dependencies: tslib "^2.0.0" -"@peculiar/webcrypto@^1.2.0": - version "1.4.1" - resolved "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.1.tgz" - integrity sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw== +"@peculiar/utils@^2.0.2": + version "2.0.3" + resolved "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz" + integrity sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ== dependencies: - "@peculiar/asn1-schema" "^2.3.0" + tslib "^2.8.1" + +"@peculiar/webcrypto@~1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz" + integrity sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" "@peculiar/json-schema" "^1.1.12" - pvtsutils "^1.3.2" - tslib "^2.4.1" - webcrypto-core "^1.7.4" + pvtsutils "^1.3.5" + tslib "^2.6.2" + webcrypto-core "^1.8.0" + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + +"@stylistic/eslint-plugin-js@4.2.0": + version "4.2.0" + resolved "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-4.2.0.tgz" + integrity sha512-MiJr6wvyzMYl/wElmj8Jns8zH7Q1w8XoVtm+WM6yDaTrfxryMyb8n0CMxt82fo42RoLIfxAEtM6tmQVxqhk0/A== + dependencies: + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" "@types/conventional-commits-parser@^5.0.0": version "5.0.0" @@ -326,6 +356,11 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/node@*": version "20.12.12" resolved "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz" @@ -338,20 +373,12 @@ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.14.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.14.0: version "8.14.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz" integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== @@ -420,77 +447,123 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== + dependencies: + call-bound "^1.0.3" + is-array-buffer "^3.0.5" + array-ify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== +array-includes@^3.1.8: + version "3.1.8" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + is-string "^1.0.7" + +array.prototype.findlastindex@^1.2.5: + version "1.2.6" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" + +array.prototype.flat@^1.3.2: + version "1.3.3" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz" + integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +array.prototype.flatmap@^1.3.2: + version "1.3.3" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz" + integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + arraybuffer-to-string@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/arraybuffer-to-string/-/arraybuffer-to-string-1.0.2.tgz" integrity sha512-WbIYlLVmvIAyUBdQRRuyGOJRriOQy9OAsWcyURmsRQp9+g647hdMSS2VFKXbJLVw0daUu06hqwLXm9etVrXI9A== -asn1.js@^5.3.0: - version "5.4.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1js@^2.0.18, asn1js@latest: - version "2.4.0" - resolved "https://registry.npmjs.org/asn1js/-/asn1js-2.4.0.tgz" - integrity sha512-PvZC0FMyMut8aOnR2jAEGSkmRtHIUYPe9amUEnGjr9TdnUmsfoOkjrvUkOEU9mzpYBR1HyO9bF+8U1cLTMMHhQ== - dependencies: - pvutils "^1.1.3" - -asn1js@^3.0.1, asn1js@^3.0.5: - version "3.0.5" - resolved "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz" - integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== - dependencies: - pvtsutils "^1.3.2" - pvutils "^1.1.3" - tslib "^2.4.0" +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + is-array-buffer "^3.0.4" + +asn1js@^3.0.10, asn1js@^3.0.6, asn1js@~3.0.7: + version "3.0.10" + resolved "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz" + integrity sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg== + dependencies: + pvtsutils "^1.3.6" + pvutils "^1.1.5" + tslib "^2.8.1" astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +async-function@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz" + integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== + async@^3.2.0: version "3.2.4" resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - base64url@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== -bignumber.js@^9.0.0: - version "9.1.1" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz" - integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== - -bn.js@^4.0.0, bn.js@^4.11.9: - version "4.12.3" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.3.tgz#2cc2c679188eb35b006f2d0d4710bed8437a769e" - integrity sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -506,24 +579,37 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bytestreamjs@latest: +bytestreamjs@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz" integrity sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ== +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.7, call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz" + 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, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -534,15 +620,26 @@ camelcase@^5.0.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -cbor@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/cbor/-/cbor-4.3.0.tgz" - integrity sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ== - dependencies: - bignumber.js "^9.0.0" - commander "^3.0.0" - json-text-sequence "^0.1" - nofilter "^1.0.3" +cbor-extract@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.2.tgz" + integrity sha512-hlSxxI9XO2yQfe9g6msd3g4xCfDqK5T5P0fRMLuaLHhxn4ViPrm+a+MUfhrvH2W962RGxcBwEGzLQyjbDG1gng== + dependencies: + node-gyp-build-optional-packages "5.1.1" + optionalDependencies: + "@cbor-extract/cbor-extract-darwin-arm64" "2.2.2" + "@cbor-extract/cbor-extract-darwin-x64" "2.2.2" + "@cbor-extract/cbor-extract-linux-arm" "2.2.2" + "@cbor-extract/cbor-extract-linux-arm64" "2.2.2" + "@cbor-extract/cbor-extract-linux-x64" "2.2.2" + "@cbor-extract/cbor-extract-win32-x64" "2.2.2" + +cbor-x@~1.6.3: + version "1.6.4" + resolved "https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.4.tgz" + integrity sha512-UGKHjp6RHC6QuZ2yy5LCKm7MojM4716DwoSaqwQpaH4DvZvbBTGcoDNTiG9Y2lByXZYFEs9WRkS5tLl96IrF1Q== + optionalDependencies: + cbor-extract "^2.2.2" chalk@^2.0.0: version "2.4.2" @@ -618,26 +715,21 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colorette@^2.0.16: version "2.0.19" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -commander@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - commander@^6.2.0: version "6.2.1" resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" @@ -668,18 +760,11 @@ conventional-commits-parser@^5.0.0: resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz" integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== dependencies: - JSONStream "^1.3.5" is-text-path "^2.0.0" + JSONStream "^1.3.5" meow "^12.0.1" split2 "^4.0.0" -cose-to-jwk@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/cose-to-jwk/-/cose-to-jwk-1.1.0.tgz" - integrity sha512-DbR/XPptfo+kcoA77jWPTe4JS0MrpOXAg0sgVr2FeZMnTGGpppOL072e2hgPHTVbSoMkt5l0qDv/k2xCn+79Cg== - dependencies: - cbor "^4.0.0" - cosmiconfig-typescript-loader@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz" @@ -698,7 +783,7 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cosmiconfig@^9.0.0: +cosmiconfig@^9.0.0, cosmiconfig@>=8.2: version "9.0.0" resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz" integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== @@ -722,6 +807,40 @@ dargs@^8.0.0: resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz" integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@^4.2.0, debug@^4.3.1, debug@^4.3.2: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" @@ -744,16 +863,41 @@ deep-is@^0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz" - integrity sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ== +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +detect-libc@^2.0.1: + version "2.1.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== dijkstrajs@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz" integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" @@ -761,18 +905,14 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -elliptic@^6.5.4: - version "6.6.1" - resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz" - integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" emoji-regex@^8.0.0: version "8.0.0" @@ -791,7 +931,7 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enquirer@^2.3.6: +enquirer@^2.3.6, "enquirer@>= 2.3.0 < 3": version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -810,10 +950,105 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es6-promise@^4.2.8: - version "4.2.8" - resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== +es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: + version "1.23.9" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz" + integrity sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.2.7" + get-proto "^1.0.0" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-regex "^1.2.1" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.0" + math-intrinsics "^1.1.0" + object-inspect "^1.13.3" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.3" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.18" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== + dependencies: + hasown "^2.0.2" + +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== + dependencies: + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" escalade@^3.1.1: version "3.1.2" @@ -835,6 +1070,47 @@ eslint-config-nodebb@^1.1.4: resolved "https://registry.npmjs.org/eslint-config-nodebb/-/eslint-config-nodebb-1.1.4.tgz" integrity sha512-XNNHnYRcg1/8CpjLneZ+4NX6cq6HEiGyvyGpiYPQ5sYax5Qmg21mO71bBjdsrcbB1if4UyF7pYOkOKnK+ZyONg== +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.12.0: + version "2.12.0" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@2.x: + version "2.31.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== + dependencies: + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.12.0" + hasown "^2.0.2" + is-core-module "^2.15.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" + semver "^6.3.1" + string.prototype.trimend "^1.0.8" + tsconfig-paths "^3.15.0" + eslint-scope@^8.3.0: version "8.3.0" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz" @@ -853,7 +1129,7 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@9.25.1: +"eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@>=9.0.0, eslint@9.25.1: version "9.25.1" resolved "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz" integrity sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ== @@ -972,20 +1248,19 @@ fast-levenshtein@^2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fido2-lib@^2.8.1: - version "2.8.3" - resolved "https://registry.npmjs.org/fido2-lib/-/fido2-lib-2.8.3.tgz" - integrity sha512-VBp8jiqujf+1jVZfGDy2qBN8IRQLPuhbDdFSBvDD5/4fRWnHUOuHQGMKcnWAnAkDWw98in0OWhIxa4WJPrFPuw== - dependencies: - "@peculiar/webcrypto" "^1.2.0" - asn1js "^2.0.18" - cbor "^4.0.0" - cose-to-jwk "^1.1.0" - jwk-to-pem "^2.0.5" - node-jose "^2.1.0" - pkijs "=2.1.58" - psl "^1.1.24" - pvutils "^1.0.17" +fido2-lib@^3.5.8: + version "3.5.9" + resolved "https://registry.npmjs.org/fido2-lib/-/fido2-lib-3.5.9.tgz" + integrity sha512-OfiX3VetTaoiuA9Bk8QnIdDVEOyZyR8m6JE++9zLQ3sbpsQN8thaJoLHcDi770cOKGtzvSH49mp2njtXUm6S7w== + dependencies: + "@hexagon/base64" "^2.0.4" + "@peculiar/webcrypto" "~1.5.0" + asn1js "~3.0.7" + cbor-x "~1.6.3" + jose "^6.2.1" + pkijs "~3.3.3" + punycode.js "^2.3.1" + tldts "~7.0.25" file-entry-cache@^8.0.0: version "8.0.0" @@ -1039,16 +1314,69 @@ flatted@^3.2.9: resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== +for-each@^0.3.3, for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^5.0.0: version "5.2.0" resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" @@ -1061,6 +1389,15 @@ get-stream@^8.0.1: resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + git-raw-commits@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz" @@ -1089,6 +1426,24 @@ globals@^14.0.0: resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== +globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +has-bigints@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz" + integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" @@ -1099,22 +1454,38 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" + es-define-property "^1.0.0" -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" + function-bind "^1.1.2" human-signals@^1.1.1: version "1.1.1" @@ -1131,11 +1502,6 @@ husky@^8.0.1: resolved "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz" integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore@^5.2.0: version "5.3.2" resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" @@ -1164,31 +1530,116 @@ indent-string@^4.0.0: resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - ini@4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz" integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== +internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.2" + side-channel "^1.1.0" + +is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-async-function@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz" + integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== + dependencies: + async-function "^1.0.0" + call-bound "^1.0.3" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" + +is-boolean-object@^1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-data-view@^1.0.1, is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== + dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + is-typed-array "^1.1.13" + +is-date-object@^1.0.5, is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz" + 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.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== + dependencies: + call-bound "^1.0.3" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.10: + version "1.1.0" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz" + integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + dependencies: + call-bound "^1.0.3" + get-proto "^1.0.0" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + is-glob@^4.0.0, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" @@ -1196,6 +1647,19 @@ is-glob@^4.0.0, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" @@ -1211,11 +1675,33 @@ is-obj@^2.0.0: resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz" + 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-regexp@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== + dependencies: + call-bound "^1.0.3" + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" @@ -1226,6 +1712,23 @@ is-stream@^3.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== +is-string@^1.0.7, is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz" + 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.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz" @@ -1233,21 +1736,58 @@ is-text-path@^2.0.0: dependencies: text-extensions "^2.0.0" +is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2, is-weakref@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + +is-weakset@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz" + integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== + dependencies: + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -jiti@^1.19.1: +jiti@*, jiti@^1.19.1: version "1.21.0" resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== +jose@^6.2.1: + version "6.2.3" + resolved "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz" + integrity sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -1255,7 +1795,7 @@ js-tokens@^4.0.0: js-yaml@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz" integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== dependencies: argparse "^2.0.1" @@ -1285,26 +1825,25 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-text-sequence@^0.1: - version "0.1.1" - resolved "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz" - integrity sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: - delimit-stream "0.1.0" + minimist "^1.2.0" jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -jwk-to-pem@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz" - integrity sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A== +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: - asn1.js "^5.3.0" - elliptic "^6.5.4" - safe-buffer "^5.0.1" + jsonparse "^1.2.0" + through ">=2.2.7 <3" keyv@^4.5.4: version "4.5.4" @@ -1427,11 +1966,6 @@ lodash.upperfirst@^4.3.1: resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@^4.17.21: - version "4.17.23" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" - integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== - log-symbols@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" @@ -1450,11 +1984,6 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -long@^5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/long/-/long-5.2.1.tgz" - integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A== - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -1462,6 +1991,11 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + meow@^12.0.1: version "12.1.1" resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz" @@ -1490,29 +2024,19 @@ mimic-fn@^4.0.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - minimatch@^3.1.2: version "3.1.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz" integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.8: +minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -ms@2.1.2: +ms@^2.1.1, ms@2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -1522,37 +2046,19 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -node-forge@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.3.tgz#0ad80f6333b3a0045e827ac20b7f735f93716751" - integrity sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg== - -node-jose@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/node-jose/-/node-jose-2.2.0.tgz" - integrity sha512-XPCvJRr94SjLrSIm4pbYHKLEaOsDvJCpyFw/6V/KK/IXmyZ6SFBzAUDO9HQf4DB/nTEFcRGH87mNciOP23kFjw== - dependencies: - base64url "^3.0.1" - buffer "^6.0.3" - es6-promise "^4.2.8" - lodash "^4.17.21" - long "^5.2.0" - node-forge "^1.2.1" - pako "^2.0.4" - process "^0.11.10" - uuid "^9.0.0" - -nofilter@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== +node-gyp-build-optional-packages@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz" + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== + dependencies: + detect-libc "^2.0.1" normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -notp@2.0.x, notp@^2.0.3: +notp@^2.0.3, notp@2.0.x: version "2.0.3" resolved "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz" integrity sha512-oBig/2uqkjQ5AkBuw4QJYwkEWa/q+zHxI5/I5z6IeP2NT0alpJFsP/trrfCC+9xOAgQSZXssNi962kp5KBmypQ== @@ -1571,6 +2077,57 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + +object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.values@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" @@ -1604,6 +2161,15 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -1658,11 +2224,6 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@^2.0.4: - version "2.1.0" - resolved "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" @@ -1714,6 +2275,11 @@ path-key@^4.0.0: resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -1729,14 +2295,17 @@ pkginfo@0.2.x: resolved "https://registry.npmjs.org/pkginfo/-/pkginfo-0.2.3.tgz" integrity sha512-7W7wTrE/NsY8xv/DTGjwNIyNah81EQH0MWcTzrHL6pOpMocOGZc0Mbdz9aXxSrp+U0mSmkU8jrNCDCfUs3sOBg== -pkijs@=2.1.58: - version "2.1.58" - resolved "https://registry.npmjs.org/pkijs/-/pkijs-2.1.58.tgz" - integrity sha512-HEcJ4SbZNdyB7Jb1G7Ot3Y/gd7kZyTDJBMIIZOFselrKrCouhGbQu4rm9Lg8bumBACckq724G9uNsZbNJ6d2gw== +pkijs@~3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz" + integrity sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw== dependencies: - asn1js latest - bytestreamjs latest - pvutils latest + "@noble/hashes" "1.4.0" + asn1js "^3.0.6" + bytestreamjs "^2.0.1" + pvtsutils "^1.3.6" + pvutils "^1.1.3" + tslib "^2.8.1" please-upgrade-node@^3.2.0: version "3.2.0" @@ -1750,21 +2319,16 @@ pngjs@^5.0.0: resolved "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz" integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -psl@^1.1.24: - version "1.9.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" @@ -1773,22 +2337,27 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + punycode@^2.1.0: version "2.3.0" resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -pvtsutils@^1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.2.tgz" - integrity sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ== +pvtsutils@^1.3.5, pvtsutils@^1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz" + integrity sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg== dependencies: - tslib "^2.4.0" + tslib "^2.8.1" -pvutils@^1.0.17, pvutils@^1.1.3, pvutils@latest: - version "1.1.3" - resolved "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz" - integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== +pvutils@^1.1.3, pvutils@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz" + integrity sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA== qrcode@^1.5.0: version "1.5.1" @@ -1800,6 +2369,32 @@ qrcode@^1.5.0: pngjs "^5.0.0" yargs "^15.3.1" +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" + +regexp.prototype.flags@^1.5.3: + version "1.5.4" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" @@ -1825,6 +2420,15 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve@^1.22.4: + version "1.22.10" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" @@ -1845,21 +2449,44 @@ rxjs@^7.5.1: dependencies: tslib "^2.1.0" -safe-buffer@^5.0.1: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-array-concat@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz" + integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + has-symbols "^1.1.0" + isarray "^2.0.5" -safer-buffer@^2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" + +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.6.0: version "7.6.2" resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" @@ -1870,6 +2497,37 @@ set-blocking@^2.0.0: resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -1882,6 +2540,46 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + signal-exit@^3.0.2: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" @@ -1929,6 +2627,38 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" + +string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -1945,6 +2675,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" @@ -1974,6 +2709,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + text-extensions@^2.0.0: version "2.4.0" resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz" @@ -1984,11 +2724,23 @@ thirty-two@1.0.2: resolved "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz" integrity sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA== -"through@>=2.2.7 <3", through@^2.3.8: +through@^2.3.8, "through@>=2.2.7 <3": version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tldts-core@^7.0.32: + version "7.4.0" + resolved "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.0.tgz" + integrity sha512-/mb9kRld+x1sIMXxWNOAp5m6C+D4GrAORWlJkOJ5dElvxdN1eutz/o7qHLp9gFvDF4Y3/L2xeScoxz6AbEo8rQ== + +tldts@~7.0.25: + version "7.0.32" + resolved "https://registry.npmjs.org/tldts/-/tldts-7.0.32.tgz" + integrity sha512-5eDV0tK2NhLAAqBeXDAQ36+EwuStd1HbsSOnGsp+JbExITnExcALLL5M1kTH8gjDYN5QvwmUWimE3GoMZ2A7xQ== + dependencies: + tldts-core "^7.0.32" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -1996,10 +2748,20 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.4.1: - version "2.5.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.6.2, tslib@^2.8.1: + version "2.8.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -2013,11 +2775,71 @@ type-fest@^0.21.3: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== + dependencies: + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" + +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" + +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" + +typescript@>=4, typescript@>=4.9.5: + version "5.4.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + u2f@^0.1.3: version "0.1.3" resolved "https://registry.npmjs.org/u2f/-/u2f-0.1.3.tgz" integrity sha512-/IaxeBqjo5o3D7plPkxdApbCpgGoI2bmTomS1kq5OjVflaE9UBJ0WfqoXqZryZKfFYBjQC7Tn1hA57WtRgh/Sg== +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== + dependencies: + call-bound "^1.0.3" + has-bigints "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" + undici-types@~5.26.4: version "5.26.5" resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" @@ -2035,27 +2857,75 @@ uri-js@^4.2.2, uri-js@^4.4.1: dependencies: punycode "^2.1.0" -uuid@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - -webcrypto-core@^1.7.4: - version "1.7.6" - resolved "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.6.tgz" - integrity sha512-TBPiewB4Buw+HI3EQW+Bexm19/W4cP/qZG/02QJCXN+iN+T5sl074vZ3rJcle/ZtDBQSgjkbsQO/1eFcxnSBUA== +webcrypto-core@^1.8.0: + version "1.9.2" + resolved "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.9.2.tgz" + integrity sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q== dependencies: - "@peculiar/asn1-schema" "^2.1.6" + "@peculiar/asn1-schema" "^2.7.0" "@peculiar/json-schema" "^1.1.12" - asn1js "^3.0.1" - pvtsutils "^1.3.2" - tslib "^2.4.0" + "@peculiar/utils" "^2.0.2" + asn1js "^3.0.10" + tslib "^2.8.1" + +which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== + dependencies: + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" + +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz" + 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.1.0" + is-finalizationregistry "^1.1.0" + is-generator-function "^1.0.10" + is-regex "^1.2.1" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" + +which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" which-module@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== +which-typed-array@^1.1.16, which-typed-array@^1.1.18: + version "1.1.19" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"