From 5aad1b443459950c7e8a000dd9634d515a41c22c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 13 Jan 2025 17:31:53 +0100 Subject: [PATCH 001/164] Feature/improve language localization for de 20250112 (#4191) * Update translations * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.de.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.es.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.fr.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.it.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.nl.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.pl.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.pt.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.tr.xlf | 52 ++++++++++++++----------- apps/client/src/locales/messages.xlf | 51 +++++++++++++----------- apps/client/src/locales/messages.zh.xlf | 52 ++++++++++++++----------- 12 files changed, 330 insertions(+), 242 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63aef801b..d027ce501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Refactored various `lodash` functions with native JavaScript equivalents +- Improved the language localization for German (`de`) - Upgraded `prisma` from version `6.1.0` to `6.2.1` ### Fixed diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 1b7d0cbaf..70b11497b 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -575,7 +575,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -734,7 +734,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -879,7 +879,7 @@ Realment vol revocar aquest accés? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -2423,7 +2423,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -2439,7 +2439,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -3099,7 +3099,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -3119,7 +3119,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -3135,7 +3135,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -3151,7 +3151,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -3163,7 +3163,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -3179,7 +3179,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -3351,7 +3351,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -4211,7 +4211,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -5319,7 +5319,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -5335,7 +5335,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -5351,7 +5351,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -5367,7 +5367,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -5415,7 +5415,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -5423,7 +5423,7 @@ For ambitious investors who need the full picture of their financial assets. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -5431,7 +5431,7 @@ Email and Chat Support apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -5439,7 +5439,7 @@ One-time payment, no auto-renewal. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -5447,7 +5447,7 @@ It’s free. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -7652,6 +7652,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index d8f41758d..d679cea2f 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -74,7 +74,7 @@ Möchtest du diese Zugangsberechtigung wirklich widerrufen? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -1730,7 +1730,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3546,7 +3546,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -3562,7 +3562,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -3578,7 +3578,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -3594,7 +3594,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -3622,7 +3622,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3646,7 +3646,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -3662,7 +3662,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -3678,7 +3678,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -3718,7 +3718,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -3726,7 +3726,7 @@ Für ambitionierte Anleger, die den vollständigen Überblick über ihr Anlagevermögen benötigen. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -3734,7 +3734,7 @@ Einmalige Zahlung, keine automatische Erneuerung. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -3750,7 +3750,7 @@ Es ist kostenlos. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -3786,7 +3786,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -3810,7 +3810,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -3834,7 +3834,7 @@ E-Mail und Chat Support apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -3894,7 +3894,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -3918,7 +3918,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -4946,7 +4946,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -5304,7 +5304,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5586,7 +5586,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -7652,6 +7652,14 @@ 27 + + Link has been copied to the clipboard + Link wurde in die Zwischenablage kopiert + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 581d28818..2aa0cf657 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -75,7 +75,7 @@ ¿Quieres revocar el acceso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -1731,7 +1731,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3547,7 +3547,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -3563,7 +3563,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -3579,7 +3579,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -3595,7 +3595,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -3623,7 +3623,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3647,7 +3647,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -3663,7 +3663,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -3679,7 +3679,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -3719,7 +3719,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -3727,7 +3727,7 @@ Para inversores ambiciosos que necesitan una visión completa de sus activos financieros apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -3735,7 +3735,7 @@ Pago único, sin renovación automática. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -3751,7 +3751,7 @@ Es gratis. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -3787,7 +3787,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -3811,7 +3811,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -3835,7 +3835,7 @@ Soporte a Traves de Email y Chat apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -3895,7 +3895,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -3919,7 +3919,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -4947,7 +4947,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -5305,7 +5305,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5587,7 +5587,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -7653,6 +7653,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 8ae14e5d9..0bf951ccc 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -70,7 +70,7 @@ Voulez-vous vraiment révoquer cet accès ? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -1990,7 +1990,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3546,7 +3546,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -3562,7 +3562,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -3578,7 +3578,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -3594,7 +3594,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -3622,7 +3622,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3646,7 +3646,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -3662,7 +3662,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -3678,7 +3678,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -3718,7 +3718,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -3726,7 +3726,7 @@ Pour les investisseurs ambitieux qui ont besoin d’une vue complète de leurs actifs financiers. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -3734,7 +3734,7 @@ Paiement unique, sans auto-renouvellement. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -3750,7 +3750,7 @@ C’est gratuit. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -3786,7 +3786,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -3810,7 +3810,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -3834,7 +3834,7 @@ Support par E-mail et Tchat apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -3894,7 +3894,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -3918,7 +3918,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -4946,7 +4946,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -5304,7 +5304,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5586,7 +5586,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -7652,6 +7652,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index b2dc49ce6..9c7970eb0 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -75,7 +75,7 @@ Vuoi davvero revocare l’accesso concesso? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -1731,7 +1731,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3547,7 +3547,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -3563,7 +3563,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -3579,7 +3579,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -3595,7 +3595,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -3623,7 +3623,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3647,7 +3647,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -3663,7 +3663,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -3679,7 +3679,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -3719,7 +3719,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -3727,7 +3727,7 @@ Per gli investitori ambiziosi che hanno bisogno di un quadro completo dei propri asset finanziari. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -3735,7 +3735,7 @@ Pagamento una tantum, senza rinnovo automatico. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -3751,7 +3751,7 @@ È gratuito. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -3787,7 +3787,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -3811,7 +3811,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -3835,7 +3835,7 @@ Supporto via email e chat apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -3895,7 +3895,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -3919,7 +3919,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -4947,7 +4947,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -5305,7 +5305,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5587,7 +5587,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -7653,6 +7653,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index aef90c10c..7d653ac84 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -74,7 +74,7 @@ Wil je deze verleende toegang echt intrekken? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -1730,7 +1730,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3546,7 +3546,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -3562,7 +3562,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -3578,7 +3578,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -3594,7 +3594,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -3622,7 +3622,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3646,7 +3646,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -3662,7 +3662,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -3678,7 +3678,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -3718,7 +3718,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -3726,7 +3726,7 @@ Voor ambitieuze beleggers die een volledig beeld willen hebben van hun financiële assets. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -3734,7 +3734,7 @@ Eenmalige betaling, geen automatische verlenging. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -3750,7 +3750,7 @@ Het is gratis. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -3786,7 +3786,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -3810,7 +3810,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -3834,7 +3834,7 @@ Ondersteuning via e-mail en chat apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -3894,7 +3894,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -3918,7 +3918,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -4946,7 +4946,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -5304,7 +5304,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5586,7 +5586,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -7652,6 +7652,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index f17bd92c3..438e9510b 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -185,7 +185,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -378,7 +378,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -835,7 +835,7 @@ Czy na pewno chcesz cofnąć przyznany dostęp? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -2831,7 +2831,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -2851,7 +2851,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -2867,7 +2867,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -2883,7 +2883,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -2895,7 +2895,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -2911,7 +2911,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -2947,7 +2947,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3075,7 +3075,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3827,7 +3827,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -4867,7 +4867,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -4883,7 +4883,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -4899,7 +4899,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -4915,7 +4915,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -4963,7 +4963,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -4971,7 +4971,7 @@ Dla ambitnych inwestorów, którzy potrzebują pełnego obrazu swoich aktywów finansowych. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -4979,7 +4979,7 @@ Wsparcie przez E-mail i Czat apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -4995,7 +4995,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -5003,7 +5003,7 @@ Płatność jednorazowa, bez automatycznego odnawiania. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -5019,7 +5019,7 @@ Jest bezpłatny. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -7652,6 +7652,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 3455cef82..91c9747e4 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -70,7 +70,7 @@ Pretende realmente revogar este acesso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -1974,7 +1974,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3546,7 +3546,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -3562,7 +3562,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -3578,7 +3578,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -3594,7 +3594,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -3622,7 +3622,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3646,7 +3646,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -3662,7 +3662,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -3678,7 +3678,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -3718,7 +3718,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -3726,7 +3726,7 @@ Para investidores ambiciosos que precisam de ter uma visão completa de seus ativos financeiros. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -3734,7 +3734,7 @@ Pagamento único, sem renovação automática. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -3750,7 +3750,7 @@ É gratuito. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -3786,7 +3786,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -3810,7 +3810,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -3834,7 +3834,7 @@ Suporte por Email e Chat apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -3894,7 +3894,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -3918,7 +3918,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -4946,7 +4946,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -5304,7 +5304,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5586,7 +5586,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -7652,6 +7652,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index b45449ba4..a39d6456c 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -185,7 +185,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -378,7 +378,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -811,7 +811,7 @@ Bu erişim iznini geri almayı gerçekten istiyor musunuz? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -2675,7 +2675,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -2695,7 +2695,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -2711,7 +2711,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -2727,7 +2727,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -2739,7 +2739,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -2755,7 +2755,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -2791,7 +2791,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3367,7 +3367,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -4339,7 +4339,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -4355,7 +4355,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -4371,7 +4371,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -4387,7 +4387,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -4435,7 +4435,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -4443,7 +4443,7 @@ Finansal varlıklarının tamamını görmeye ihtiyaç duyan hırslı yatırımcılar için. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -4451,7 +4451,7 @@ E-posta ve Sohbet Desteği apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -4467,7 +4467,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -4475,7 +4475,7 @@ Tek seferlik ödeme, otomatik yenileme yok. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -4491,7 +4491,7 @@ Ücretsiz. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -5007,7 +5007,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -7652,6 +7652,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 47ca44e51..d8bc38648 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -183,7 +183,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -371,7 +371,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -806,7 +806,7 @@ Do you really want to revoke this granted access? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -2648,7 +2648,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -2667,7 +2667,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -2682,7 +2682,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -2697,7 +2697,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -2708,7 +2708,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -2723,7 +2723,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -2756,7 +2756,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -2871,7 +2871,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3546,7 +3546,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -4471,7 +4471,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -4486,7 +4486,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -4501,7 +4501,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -4516,7 +4516,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -4559,21 +4559,21 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 For ambitious investors who need the full picture of their financial assets. apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 Email and Chat Support apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -4588,14 +4588,14 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 One-time payment, no auto-renewal. apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -4609,7 +4609,7 @@ It’s free. apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -6922,6 +6922,13 @@ 149 + + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index aacb0049c..b26a73fb6 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -186,7 +186,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 42 + 43 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -379,7 +379,7 @@ apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + 44 @@ -836,7 +836,7 @@ 您真的要撤销此授予的访问权限吗? apps/client/src/app/components/access-table/access-table.component.ts - 68 + 78 @@ -2848,7 +2848,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 213 + 218 @@ -2868,7 +2868,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 217 + 222 @@ -2884,7 +2884,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 221 + 226 @@ -2900,7 +2900,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 225 + 230 @@ -2912,7 +2912,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 240 + 245 @@ -2928,7 +2928,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 252 + 257 @@ -2964,7 +2964,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 288 + 293 @@ -3092,7 +3092,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 274 + 279 @@ -3844,7 +3844,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 324 + 329 @@ -4884,7 +4884,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 201 + 206 @@ -4900,7 +4900,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 205 + 210 @@ -4916,7 +4916,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 209 + 214 @@ -4932,7 +4932,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 229 + 234 @@ -4980,7 +4980,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 261 + 266 @@ -4988,7 +4988,7 @@ 适合需要全面了解其金融资产的雄心勃勃的投资者。 apps/client/src/app/pages/pricing/pricing-page.html - 194 + 199 @@ -4996,7 +4996,7 @@ 电子邮件和聊天支持 apps/client/src/app/pages/pricing/pricing-page.html - 257 + 262 @@ -5012,7 +5012,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 294 + 299 @@ -5020,7 +5020,7 @@ 一次性付款,无自动续订。 apps/client/src/app/pages/pricing/pricing-page.html - 298 + 303 @@ -5036,7 +5036,7 @@ 免费。 apps/client/src/app/pages/pricing/pricing-page.html - 327 + 332 @@ -7653,6 +7653,14 @@ 27 + + Link has been copied to the clipboard + Link has been copied to the clipboard + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + From 9fe19868b996bddfc1317cde933cd6177bde4324 Mon Sep 17 00:00:00 2001 From: Serhii Serdiuk <130998461+SerhiiSerdiukDev@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:55:03 +0200 Subject: [PATCH 002/164] Feature/set up language localization for Ukrainian (#4190) * Set up language localization for Ukrainian * Update changelog --- CHANGELOG.md | 4 + apps/api/src/assets/sitemap.xml | 6 + apps/client/project.json | 12 + apps/client/src/app/app.component.html | 5 + .../user-account-settings.component.ts | 1 + .../user-account-settings.html | 6 + .../src/app/pages/features/features-page.html | 4 +- apps/client/src/locales/messages.ca.xlf | 54 +- apps/client/src/locales/messages.de.xlf | 56 +- apps/client/src/locales/messages.es.xlf | 54 +- apps/client/src/locales/messages.fr.xlf | 54 +- apps/client/src/locales/messages.it.xlf | 58 +- apps/client/src/locales/messages.nl.xlf | 54 +- apps/client/src/locales/messages.pl.xlf | 54 +- apps/client/src/locales/messages.pt.xlf | 54 +- apps/client/src/locales/messages.tr.xlf | 54 +- apps/client/src/locales/messages.uk.xlf | 7669 +++++++++++++++++ apps/client/src/locales/messages.xlf | 54 +- apps/client/src/locales/messages.zh.xlf | 54 +- libs/common/src/lib/config.ts | 1 + libs/common/src/lib/helper.ts | 6 +- 21 files changed, 8033 insertions(+), 281 deletions(-) create mode 100644 apps/client/src/locales/messages.uk.xlf diff --git a/CHANGELOG.md b/CHANGELOG.md index d027ce501..059e444ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Set up the language localization for Українська (`uk`) + ### Changed - Refactored various `lodash` functions with native JavaScript equivalents diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index 5a49f6710..9fd989f4e 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -583,6 +583,12 @@ ${currentDate}T00:00:00+00:00 + Dutch, French, German, Italian, - Portuguese, Spanish and Turkish are currently supported. + Portuguese, Spanish and Turkish + + are currently supported.

diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 70b11497b..35cdf2a8c 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -344,9 +344,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -354,7 +358,7 @@ El risc d’assumir pèrdues en les inversions és substancial. No és recomanable invertir diners que pugui necessitar a curt termini. apps/client/src/app/app.component.html - 200 + 205 @@ -2511,7 +2515,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -2827,7 +2831,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3299,7 +3303,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -3383,7 +3387,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -3391,7 +3395,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -3399,7 +3403,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 @@ -3455,7 +3459,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -3463,7 +3467,7 @@ Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -3471,7 +3475,7 @@ Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -3479,7 +3483,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -3487,7 +3491,7 @@ Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -3495,7 +3499,7 @@ Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -3503,7 +3507,7 @@ Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -3515,7 +3519,7 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3523,7 +3527,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -3531,7 +3535,7 @@ Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -3539,7 +3543,7 @@ Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -3547,7 +3551,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -3555,7 +3559,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -3563,7 +3567,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -3571,7 +3575,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -4083,7 +4087,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -4091,7 +4095,7 @@ Get Started apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index d679cea2f..b0dd8d4f4 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -22,7 +22,7 @@ Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst. apps/client/src/app/app.component.html - 200 + 205 @@ -1026,7 +1026,7 @@ Registrieren apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -1054,7 +1054,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -1090,7 +1090,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1694,7 +1694,7 @@ Möchtest du diese Anmeldemethode wirklich löschen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -1770,7 +1770,7 @@ Lokalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -1778,7 +1778,7 @@ Datums- und Zahlenformat apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -1786,7 +1786,7 @@ Zen Modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -1798,7 +1798,7 @@ Einloggen mit Fingerabdruck apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -1810,7 +1810,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -2910,7 +2910,7 @@ Experimentelle Funktionen apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -2958,7 +2958,7 @@ Aussehen apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -2966,7 +2966,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -2974,7 +2974,7 @@ Hell apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -2982,7 +2982,7 @@ Dunkel apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -3280,9 +3280,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -3514,7 +3518,7 @@ Unbeschwertes Erlebnis für turbulente Zeiten apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3522,7 +3526,7 @@ Vorschau auf kommende Funktionalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -4354,7 +4358,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -4762,7 +4766,7 @@ Biometrische Authentifizierung apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -4846,7 +4850,7 @@ Daten exportieren apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -6647,7 +6651,7 @@ Möchtest du dieses Ghostfolio Konto wirklich schliessen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6655,7 +6659,7 @@ Gefahrenzone apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6663,7 +6667,7 @@ Konto schliessen apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6695,7 +6699,7 @@ Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 @@ -7092,7 +7096,7 @@ Change with currency effect Change - Änderung mit Währungseffekt Change + Änderung mit Währungseffekt Änderung apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 50 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 2aa0cf657..9277735af 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -23,7 +23,7 @@ El riesgo de pérdida en trading puede ser sustancial. No es aconsejable invertir dinero que puedas necesitar a corto plazo. apps/client/src/app/app.component.html - 200 + 205 @@ -1027,7 +1027,7 @@ Empezar apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -1055,7 +1055,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -1091,7 +1091,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1695,7 +1695,7 @@ ¿Estás seguro de eliminar este método de acceso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -1771,7 +1771,7 @@ Ubicación apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -1779,7 +1779,7 @@ Formato de fecha y número apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -1787,7 +1787,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -1799,7 +1799,7 @@ Iniciar sesión con huella digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -1811,7 +1811,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -2911,7 +2911,7 @@ Funcionalidades experimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -2959,7 +2959,7 @@ Apariencia apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -2967,7 +2967,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -2975,7 +2975,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -2983,7 +2983,7 @@ Oscuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -3281,9 +3281,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -3515,7 +3519,7 @@ Experiencia sin distracciones para tiempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3523,7 +3527,7 @@ Un adelanto de las próximas funciones apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -4355,7 +4359,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -4763,7 +4767,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -4847,7 +4851,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -6648,7 +6652,7 @@ ¿Estás seguro de querer borrar tu cuenta de Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6656,7 +6660,7 @@ Zona peligrosa apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6664,7 +6668,7 @@ Eliminar cuenta apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6696,7 +6700,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 0bf951ccc..245337d67 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -6,7 +6,7 @@ Le risque de perte en investissant peut être important. Il est déconseillé d’investir de l’argent dont vous pourriez avoir besoin à court terme. apps/client/src/app/app.component.html - 200 + 205 @@ -1374,7 +1374,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -1450,7 +1450,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1954,7 +1954,7 @@ Voulez-vous vraiment supprimer cette méthode de connexion ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -2076,9 +2076,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -2086,7 +2090,7 @@ Paramètres régionaux apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -2094,7 +2098,7 @@ Format de date et d’heure apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -2102,7 +2106,7 @@ Apparence apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -2110,7 +2114,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -2118,7 +2122,7 @@ Clair apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -2126,7 +2130,7 @@ Sombre apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -2134,7 +2138,7 @@ Mode Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -2146,7 +2150,7 @@ Se connecter avec empreinte apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -2154,7 +2158,7 @@ Fonctionnalités expérimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -2166,7 +2170,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -2906,7 +2910,7 @@ Démarrer apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -3514,7 +3518,7 @@ Expérience sans distraction pour les périodes tumultueuses apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3522,7 +3526,7 @@ Avant-première de fonctionnalités futures apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -4354,7 +4358,7 @@ Logiciel Open Source apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -4762,7 +4766,7 @@ Authentication biométrique apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -4846,7 +4850,7 @@ Exporter les Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -6647,7 +6651,7 @@ Confirmer la suppresion de votre compte Ghostfolio ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6655,7 +6659,7 @@ Zone de danger apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6663,7 +6667,7 @@ Supprimer le compte apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6695,7 +6699,7 @@ Oops! Une erreur s'est produite lors de la configuration de l'authentification biométrique. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 9c7970eb0..acb9b8e44 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -23,7 +23,7 @@ Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine. apps/client/src/app/app.component.html - 200 + 205 @@ -1027,7 +1027,7 @@ Inizia apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -1055,7 +1055,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -1091,7 +1091,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1695,7 +1695,7 @@ Vuoi davvero rimuovere questo metodo di accesso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -1771,7 +1771,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -1779,7 +1779,7 @@ Formato data e numero apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -1787,7 +1787,7 @@ Modalità Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -1799,7 +1799,7 @@ Accesso con impronta digitale apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -1811,7 +1811,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -2911,7 +2911,7 @@ Funzionalità sperimentali apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -2959,7 +2959,7 @@ Aspetto apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -2967,7 +2967,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -2975,7 +2975,7 @@ Chiaro apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -2983,7 +2983,7 @@ Scuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -3281,9 +3281,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -3515,7 +3519,7 @@ Esperienza priva di distrazioni per i periodi più turbolenti apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3523,7 +3527,7 @@ Un’anteprima delle funzionalità in arrivo apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -4355,7 +4359,7 @@ Software open source apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -4763,7 +4767,7 @@ Autenticazione biometrica apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -4847,7 +4851,7 @@ Esporta dati apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -6648,7 +6652,7 @@ Confermi di voler chiudere il tuo account Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6656,7 +6660,7 @@ Zona di Pericolo apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6664,7 +6668,7 @@ Chiudi l'account apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6696,7 +6700,7 @@ Ops! C'è stato un errore impostando l'autenticazione biometrica. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 @@ -7093,7 +7097,7 @@ Change with currency effect Change - Cambio con effetto valuta Cambia + Cambio con effetto valuta Cambia apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 50 @@ -7101,7 +7105,7 @@ Performance with currency effect Performance - Prestazioni con effetto valuta Prestazioni + Prestazioni con effetto valuta Prestazioni apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 69 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 7d653ac84..92da1fbca 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -22,7 +22,7 @@ Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft. apps/client/src/app/app.component.html - 200 + 205 @@ -1026,7 +1026,7 @@ Aan de slag apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -1054,7 +1054,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -1090,7 +1090,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1694,7 +1694,7 @@ Wil je deze aanmeldingsmethode echt verwijderen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -1770,7 +1770,7 @@ Locatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -1778,7 +1778,7 @@ Datum- en getalnotatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -1786,7 +1786,7 @@ Zen-modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -1798,7 +1798,7 @@ Aanmelden met vingerafdruk apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -1810,7 +1810,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -2910,7 +2910,7 @@ Experimentele functies apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -2958,7 +2958,7 @@ Weergave apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -2966,7 +2966,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -2974,7 +2974,7 @@ Licht apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -2982,7 +2982,7 @@ Donker apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -3280,9 +3280,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -3514,7 +3518,7 @@ Afleidingsvrije ervaring voor roerige tijden apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3522,7 +3526,7 @@ Voorproefje van nieuwe functionaliteit apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -4354,7 +4358,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -4762,7 +4766,7 @@ Biometrische authenticatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -4846,7 +4850,7 @@ Exporteer Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -6647,7 +6651,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6655,7 +6659,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6663,7 +6667,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6695,7 +6699,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 438e9510b..2935020dd 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -761,9 +761,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -771,7 +775,7 @@ Ryzyko strat na rynku może być znaczne. Nie jest zalecane inwestowanie pieniędzy, które mogą być potrzebne w krótkim okresie. apps/client/src/app/app.component.html - 200 + 205 @@ -2315,7 +2319,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -2475,7 +2479,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3107,7 +3111,7 @@ Czy na pewno chcesz usunąć tą metode logowania? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -3155,7 +3159,7 @@ Ustawienia Regionalne apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -3163,7 +3167,7 @@ Format daty i liczb apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -3171,7 +3175,7 @@ Wygląd (tryb) apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -3179,7 +3183,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -3187,7 +3191,7 @@ Jasny apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -3195,7 +3199,7 @@ Ciemny apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -3203,7 +3207,7 @@ Tryb Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -3215,7 +3219,7 @@ Doświadczenie bez zakłóceń w niespokojnych czasach apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3223,7 +3227,7 @@ Uwierzytelnianie Biometryczne apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -3231,7 +3235,7 @@ Logowanie za pomocą linii papilarnych apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -3239,7 +3243,7 @@ Funkcje Eksperymentalne apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -3247,7 +3251,7 @@ Podgląd nadchodzących funkcjonalności apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -3259,7 +3263,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -3267,7 +3271,7 @@ Eksportuj Dane apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -3707,7 +3711,7 @@ Oprogramowanie Open Source apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -3715,7 +3719,7 @@ Rozpocznij apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -6647,7 +6651,7 @@ Czy na pewno chcesz zamknąć swoje konto Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6655,7 +6659,7 @@ Strefa Zagrożenia apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6663,7 +6667,7 @@ Zamknij Konto apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6695,7 +6699,7 @@ Ups! Wystąpił błąd podczas konfigurowania uwierzytelniania biometrycznego. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 91c9747e4..3aa493ece 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6,7 +6,7 @@ O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo. apps/client/src/app/app.component.html - 200 + 205 @@ -1242,7 +1242,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -1326,7 +1326,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1938,7 +1938,7 @@ Deseja realmente remover este método de início de sessão? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -2034,7 +2034,7 @@ Localidade apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -2042,7 +2042,7 @@ Formato de números e datas apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -2050,7 +2050,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -2062,7 +2062,7 @@ Aparência apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -2070,7 +2070,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -2078,7 +2078,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -2086,7 +2086,7 @@ Escuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -2094,7 +2094,7 @@ Iniciar sessão com impressão digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -2102,7 +2102,7 @@ Funcionalidades Experimentais apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -2114,7 +2114,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -2806,7 +2806,7 @@ Começar apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -3324,9 +3324,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -3514,7 +3518,7 @@ Experiência sem distrações para tempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3522,7 +3526,7 @@ Acesso antecipado a funcionalidades futuras apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -4354,7 +4358,7 @@ Software de código aberto apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -4762,7 +4766,7 @@ Autenticação biométrica apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -4846,7 +4850,7 @@ Exportar dados apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -6647,7 +6651,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6655,7 +6659,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6663,7 +6667,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6695,7 +6699,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index a39d6456c..7734dae5b 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -737,9 +737,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -747,7 +751,7 @@ Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. apps/client/src/app/app.component.html - 200 + 205 @@ -2167,7 +2171,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -2327,7 +2331,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3235,7 +3239,7 @@ Zen Modu apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -3271,7 +3275,7 @@ Açık Kaynak Yazılım apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -3279,7 +3283,7 @@ Başla apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -4975,7 +4979,7 @@ Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -5063,7 +5067,7 @@ Yerel Ayarlar apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -5071,7 +5075,7 @@ Tarih ve Sayı Formatları apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -5079,7 +5083,7 @@ Görünüm apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -5087,7 +5091,7 @@ Otomatik apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -5095,7 +5099,7 @@ Açık apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -5103,7 +5107,7 @@ Koyu apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -5111,7 +5115,7 @@ Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -5119,7 +5123,7 @@ Biyometrik Kimlik Doğrulama apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -5127,7 +5131,7 @@ Parmak iziyle oturum aç apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -5135,7 +5139,7 @@ Deneysel Özellikler apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -5143,7 +5147,7 @@ Gelecek özelliklere göz atın apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -5155,7 +5159,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -5163,7 +5167,7 @@ Verileri Dışa Aktar apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -6647,7 +6651,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6655,7 +6659,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6663,7 +6667,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6695,7 +6699,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf new file mode 100644 index 000000000..5988b6e7c --- /dev/null +++ b/apps/client/src/locales/messages.uk.xlf @@ -0,0 +1,7669 @@ + + + + + Features + Функції + + apps/client/src/app/app-routing.module.ts + 74 + + + + Internationalization + Інтернаціоналізація + + apps/client/src/app/app-routing.module.ts + 88 + + + + Sign in + Увійти + + apps/client/src/app/app-routing.module.ts + 150 + + + apps/client/src/app/components/header/header.component.ts + 231 + + + + You are using the Live Demo. + Ви використовуєте демо-версію. + + apps/client/src/app/app.component.html + 12 + + + + Create Account + Створити обліковий запис + + apps/client/src/app/app.component.html + 13 + + + apps/client/src/app/pages/register/register-page.html + 27 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 + + + + Personal Finance + Особисті фінанси + + apps/client/src/app/app.component.html + 57 + + + + Markets + Ринки + + apps/client/src/app/app.component.html + 61 + + + apps/client/src/app/components/header/header.component.html + 398 + + + apps/client/src/app/components/home-market/home-market.html + 2 + + + apps/client/src/app/pages/resources/markets/resources-markets.component.html + 2 + + + + Resources + Ресурси + + apps/client/src/app/app.component.html + 64 + + + apps/client/src/app/components/header/header.component.html + 82 + + + apps/client/src/app/components/header/header.component.html + 291 + + + apps/client/src/app/pages/resources/overview/resources-overview.component.html + 4 + + + + About + Про нас + + apps/client/src/app/app.component.html + 70 + + + apps/client/src/app/components/header/header.component.html + 117 + + + apps/client/src/app/components/header/header.component.html + 364 + + + + Blog + Блог + + apps/client/src/app/app.component.html + 73 + + + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 + + + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 + + + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 + + + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 + + + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 + + + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 + + + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 + + + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 + + + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 + + + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 + + + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 + + + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 + + + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 + + + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 + + + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 + + + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 181 + + + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 + + + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 + + + apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html + 187 + + + apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html + 167 + + + apps/client/src/app/pages/blog/blog-page.html + 5 + + + + Changelog + Журнал змін + + apps/client/src/app/app.component.html + 77 + + + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + + Features + Функції + + apps/client/src/app/app.component.html + 79 + + + apps/client/src/app/components/header/header.component.html + 351 + + + apps/client/src/app/pages/features/features-page.html + 5 + + + + Frequently Asked Questions (FAQ) + Часті запитання (FAQ) + + apps/client/src/app/app.component.html + 83 + + + apps/client/src/app/pages/about/overview/about-overview-page.html + 146 + + + + License + Ліцензія + + apps/client/src/app/app.component.html + 88 + + + apps/client/src/app/pages/about/license/license-page.html + 4 + + + + Pricing + Ціни + + apps/client/src/app/app.component.html + 97 + + + apps/client/src/app/components/header/header.component.html + 99 + + + apps/client/src/app/components/header/header.component.html + 303 + + + apps/client/src/app/components/header/header.component.html + 379 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 287 + + + + Privacy Policy + Політика конфіденційності + + apps/client/src/app/app.component.html + 103 + + + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 + + + + Community + Спільнота + + apps/client/src/app/app.component.html + 121 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 83 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 88 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 96 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 100 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 105 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + + + apps/client/src/app/pages/features/features-page.html + 261 + + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + Ризик втрат у торгівлі може бути суттєвим. Не рекомендується інвестувати гроші, які можуть знадобитися в короткостроковій перспективі. + + apps/client/src/app/app.component.html + 205 + + + + about + about + snake-case + + apps/client/src/app/app.component.ts + 65 + + + apps/client/src/app/app.component.ts + 67 + + + apps/client/src/app/app.component.ts + 71 + + + apps/client/src/app/app.component.ts + 75 + + + apps/client/src/app/components/header/header.component.ts + 82 + + + apps/client/src/app/components/header/header.component.ts + 87 + + + apps/client/src/app/core/paths.ts + 2 + + + apps/client/src/app/pages/about/about-page.component.ts + 46 + + + apps/client/src/app/pages/about/about-page.component.ts + 51 + + + apps/client/src/app/pages/about/about-page.component.ts + 56 + + + apps/client/src/app/pages/about/about-page.component.ts + 64 + + + apps/client/src/app/pages/about/about-page.component.ts + 75 + + + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 14 + + + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts + 12 + + + apps/client/src/app/pages/landing/landing-page.component.ts + 27 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 19 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 23 + + + + license + license + snake-case + + apps/client/src/app/app.component.ts + 72 + + + apps/client/src/app/core/paths.ts + 5 + + + apps/client/src/app/pages/about/about-page.component.ts + 56 + + + + privacy-policy + privacy-policy + snake-case + + apps/client/src/app/app.component.ts + 76 + + + apps/client/src/app/core/paths.ts + 8 + + + apps/client/src/app/pages/about/about-page.component.ts + 64 + + + + faq + faq + snake-case + + apps/client/src/app/app.component.ts + 78 + + + apps/client/src/app/core/paths.ts + 3 + + + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 + + + apps/client/src/app/pages/faq/faq-page.component.ts + 38 + + + apps/client/src/app/pages/faq/faq-page.component.ts + 43 + + + apps/client/src/app/pages/faq/faq-page.component.ts + 49 + + + apps/client/src/app/pages/resources/overview/resources-overview.component.ts + 15 + + + + features + features + snake-case + + apps/client/src/app/app.component.ts + 79 + + + apps/client/src/app/components/header/header.component.ts + 83 + + + apps/client/src/app/components/header/header.component.ts + 88 + + + apps/client/src/app/core/paths.ts + 4 + + + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 21 + + + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 14 + + + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 17 + + + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 14 + + + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts + 14 + + + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 15 + + + apps/client/src/app/pages/pricing/pricing-page.component.ts + 43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + + markets + markets + snake-case + + apps/client/src/app/app.component.ts + 80 + + + apps/client/src/app/components/header/header.component.ts + 84 + + + apps/client/src/app/components/header/header.component.ts + 89 + + + apps/client/src/app/core/paths.ts + 6 + + + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 18 + + + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 + + + apps/client/src/app/pages/resources/overview/resources-overview.component.ts + 32 + + + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 35 + + + + pricing + pricing + snake-case + + apps/client/src/app/app.component.ts + 81 + + + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 74 + + + apps/client/src/app/components/header/header.component.ts + 85 + + + apps/client/src/app/components/header/header.component.ts + 90 + + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 17 + + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 43 + + + apps/client/src/app/core/http-response.interceptor.ts + 72 + + + apps/client/src/app/core/paths.ts + 7 + + + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 + + + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 + + + apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts + 15 + + + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 + + + libs/ui/src/lib/membership-card/membership-card.component.ts + 30 + + + + register + register + snake-case + + apps/client/src/app/app.component.ts + 82 + + + apps/client/src/app/components/header/header.component.ts + 91 + + + apps/client/src/app/core/auth.guard.ts + 55 + + + apps/client/src/app/core/paths.ts + 9 + + + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 17 + + + apps/client/src/app/pages/features/features-page.component.ts + 28 + + + apps/client/src/app/pages/landing/landing-page.component.ts + 28 + + + apps/client/src/app/pages/pricing/pricing-page.component.ts + 44 + + + + resources + resources + snake-case + + apps/client/src/app/app.component.ts + 83 + + + apps/client/src/app/components/header/header.component.ts + 86 + + + apps/client/src/app/components/header/header.component.ts + 92 + + + apps/client/src/app/core/paths.ts + 10 + + + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts + 12 + + + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 + + + apps/client/src/app/pages/features/features-page.component.ts + 29 + + + apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts + 17 + + + apps/client/src/app/pages/resources/overview/resources-overview.component.ts + 22 + + + apps/client/src/app/pages/resources/overview/resources-overview.component.ts + 31 + + + apps/client/src/app/pages/resources/overview/resources-overview.component.ts + 40 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 15 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 26 + + + + Alias + Псевдонім + + apps/client/src/app/components/access-table/access-table.component.html + 4 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 + + + + Grantee + Одержувач + + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + + Permission + Дозвіл + + apps/client/src/app/components/access-table/access-table.component.html + 18 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 + + + + View + Перегляд + + apps/client/src/app/components/access-table/access-table.component.html + 23 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + + Restricted view + Обмежений перегляд + + apps/client/src/app/components/access-table/access-table.component.html + 26 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 + + + + Details + Деталі + + apps/client/src/app/components/access-table/access-table.component.html + 33 + + + + Copy link to clipboard + Скопіювати посилання в буфер обміну + + apps/client/src/app/components/access-table/access-table.component.html + 70 + + + + Revoke + Відкликати + + apps/client/src/app/components/access-table/access-table.component.html + 75 + + + + Link has been copied to the clipboard + Посилання скопійовано в буфер обміну + + apps/client/src/app/components/access-table/access-table.component.ts + 64 + + + + Do you really want to revoke this granted access? + Ви дійсно хочете відкликати цей наданий доступ? + + apps/client/src/app/components/access-table/access-table.component.ts + 78 + + + + Cash Balance + Баланс готівки + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 47 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + + Equity + Капітал + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 58 + + + + Activities + Діяльність + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 63 + + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 92 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 131 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 58 + + + apps/client/src/app/components/admin-users/admin-users.html + 135 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 209 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 319 + + + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + + Platform + Платформа + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 67 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + + Holdings + Активи + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 79 + + + apps/client/src/app/components/home-holdings/home-holdings.html + 4 + + + apps/client/src/app/pages/public/public-page.html + 70 + + + libs/ui/src/lib/assistant/assistant.html + 46 + + + + Cash Balances + Баланс готівки + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + + Transfer Cash Balance + Перевести баланс готівки + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Name + Назва + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 60 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 207 + + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 30 + + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 30 + + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 138 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 138 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 16 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + + Total + Загалом + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + + Currency + Валюта + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 111 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 46 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 144 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 276 + + + + Value + Вартість + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 204 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 207 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 210 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 274 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 277 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 280 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 283 + + + libs/ui/src/lib/account-balances/account-balances.component.html + 34 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 257 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 293 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 25 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 102 + + + + Edit + Редагувати + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 + + + apps/client/src/app/components/admin-overview/admin-overview.html + 78 + + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 92 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 85 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 430 + + + + Delete + Видалити + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 289 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 253 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 65 + + + apps/client/src/app/components/admin-overview/admin-overview.html + 89 + + + apps/client/src/app/components/admin-overview/admin-overview.html + 206 + + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 103 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 96 + + + libs/ui/src/lib/account-balances/account-balances.component.html + 80 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 457 + + + + Do you really want to delete this account? + Ви дійсно хочете видалити цей обліковий запис? + + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 107 + + + + Type + Тип + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 161 + + + + Asset Profile + Профіль активу + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + + Historical Market Data + Історичні ринкові дані + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 + + + + Portfolio Snapshot + Знімок портфеля + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 + + + + Symbol + Символ + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 46 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 46 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 96 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 39 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 289 + + + + Data Source + Джерело даних + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 55 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 77 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 106 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 154 + + + + Priority + Пріоритет + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 + + + + Attempts + Спроби + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 83 + + + + Created + Створено + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 92 + + + + Finished + Завершено + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 101 + + + + Status + Статус + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 110 + + + + Delete Jobs + Видалити завдання + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 151 + + + + View Data + Переглянути дані + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 166 + + + + View Stacktrace + Переглянути трасування + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 173 + + + + Execute Job + Виконати завдання + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 + + + + Delete Job + Видалити завдання + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 180 + + + + Benchmarks + Порівняльні показники + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 + + + + Currencies + Валюти + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 86 + + + + ETFs without Countries + ETF без країн + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 91 + + + + ETFs without Sectors + ETF без секторів + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 96 + + + + Filter by... + Фільтрувати за... + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 329 + + + + Asset Class + Клас активу + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 86 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 140 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 224 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 216 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 354 + + + libs/ui/src/lib/assistant/assistant.html + 166 + + + + Asset Sub Class + Підклас активу + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 95 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 149 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 237 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 225 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 370 + + + + Market Price + Ринкова ціна + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 104 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 98 + + + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 26 + + + + First Activity + Перша активність + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 119 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 122 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 197 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 + + + + Activities Count + Кількість активностей + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 128 + + + + Historical Data + Історичні дані + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 137 + + + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 44 + + + + Sectors Count + Кількість секторів + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 146 + + + + Countries Count + Кількість країн + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 155 + + + + Gather Recent Data + Зібрати недавні дані + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 192 + + + + Gather All Data + Зібрати всі дані + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 195 + + + + Gather Profile Data + Зібрати дані профілю + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 198 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 45 + + + + Delete Profiles + Видалити профілі + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 206 + + + + Do you really want to delete this asset profile? + Ви дійсно хочете видалити цей профіль активу? + + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 36 + + + + Oops! Could not delete profiles. + Упс! Не вдалося видалити профілі. + + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 55 + + + + Do you really want to delete these profiles? + Ви дійсно хочете видалити ці профілі? + + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 67 + + + + Error + Помилка + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 317 + + + + The current market price is + Поточна ринкова ціна + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 326 + + + + Refresh + Оновити + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + + Gather Historical Data + Зібрати історичні дані + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 32 + + + + Sector + Сектор + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 166 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 242 + + + + Country + Країна + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 177 + + + apps/client/src/app/components/admin-users/admin-users.html + 77 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 252 + + + + Sectors + Сектори + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 308 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 258 + + + apps/client/src/app/pages/public/public-page.html + 106 + + + + Countries + Країни + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 193 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 319 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 270 + + + + Benchmark + Порівняльний показник + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 265 + + + + Symbol Mapping + Зіставлення символів + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 271 + + + + Scraper Configuration + Конфігурація скребка + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 283 + + + + Test + Тест + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 301 + + + + Url + URL + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 331 + + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 51 + + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 + + + + Note + Примітка + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 344 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 339 + + + + Cancel + Скасувати + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 357 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 56 + + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 42 + + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 65 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 427 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 46 + + + + Save + Зберегти + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 364 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 63 + + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 49 + + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 + + + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 135 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 434 + + + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 48 + + + + Add Asset Profile + Додати профіль активу + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 + + + + Search + Пошук + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Додати вручну + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Add Currency + Додати валюту + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 22 + + + apps/client/src/app/components/admin-overview/admin-overview.html + 105 + + + + Name, symbol or ISIN + Назва, символ або ISIN + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 29 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + + Oops! Invalid currency. + Упс! Невірна валюта. + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 + + + + Please add a currency: + Будь ласка, додайте валюту: + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 126 + + + + is an invalid currency! + є недопустимою валютою! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 137 + + + + Do you really want to delete this coupon? + Ви дійсно хочете видалити цей купон? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 156 + + + + Do you really want to delete this currency? + Ви дійсно хочете видалити цю валюту? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 169 + + + + Do you really want to delete this system message? + Ви дійсно хочете видалити це системне повідомлення? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 182 + + + + Do you really want to flush the cache? + Ви дійсно хочете очистити кеш? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 206 + + + + Please set your system message: + Будь ласка, встановіть ваше системне повідомлення: + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 226 + + + + Version + Версія + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + User Count + Кількість користувачів + + apps/client/src/app/components/admin-overview/admin-overview.html + 13 + + + + Activity Count + Кількість активностей + + apps/client/src/app/components/admin-overview/admin-overview.html + 19 + + + + per User + на користувача + + apps/client/src/app/components/admin-overview/admin-overview.html + 28 + + + + Exchange Rates + Обмінні курси + + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + + User Signup + Реєстрація користувача + + apps/client/src/app/components/admin-overview/admin-overview.html + 111 + + + + Read-only Mode + Режим лише для читання + + apps/client/src/app/components/admin-overview/admin-overview.html + 125 + + + + Data Gathering + Збір даних + + apps/client/src/app/components/admin-overview/admin-overview.html + 137 + + + + System Message + Системне повідомлення + + apps/client/src/app/components/admin-overview/admin-overview.html + 149 + + + + Set Message + Встановити повідомлення + + apps/client/src/app/components/admin-overview/admin-overview.html + 171 + + + + Coupons + Купони + + apps/client/src/app/components/admin-overview/admin-overview.html + 179 + + + + Add + Додати + + apps/client/src/app/components/admin-overview/admin-overview.html + 239 + + + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + + Housekeeping + Прибирання + + apps/client/src/app/components/admin-overview/admin-overview.html + 247 + + + + Flush Cache + Очистити кеш + + apps/client/src/app/components/admin-overview/admin-overview.html + 251 + + + + Add Platform + Додати платформу + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 11 + + + + Accounts + Рахунки + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 65 + + + apps/client/src/app/components/admin-users/admin-users.html + 114 + + + apps/client/src/app/components/header/header.component.html + 54 + + + apps/client/src/app/components/header/header.component.html + 263 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 352 + + + apps/client/src/app/pages/accounts/accounts-page.html + 4 + + + + Do you really want to delete this platform? + Ви дійсно хочете видалити цю платформу? + + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 87 + + + + Update platform + Оновити платформу + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 + + + + Add platform + Додати платформу + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 + + + + Data Providers + Постачальники даних + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 + + + + NEW + НОВИЙ + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 + + + + Valid until + Дійсне до + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 26 + + + libs/ui/src/lib/membership-card/membership-card.component.html + 42 + + + + of + з + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 40 + + + + daily requests + щоденних запитів + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 42 + + + + Remove API key + Вилучити ключ API + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 56 + + + + Set API key + Встановити ключ API + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 68 + + + + Platforms + Платформи + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 79 + + + + Tags + Теги + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 85 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 377 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 414 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 383 + + + + Do you really want to delete the API key? + Ви дійсно хочете видалити ключ API? + + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 93 + + + + Please enter your Ghostfolio API key. + Будь ласка, введіть ваш ключ API Ghostfolio. + + apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts + 59 + + + + Want to stay updated? Click below to get notified as soon as it’s available. + Хочете залишатися в курсі? Натисніть нижче, щоб отримати сповіщення, як тільки це буде доступно. + + apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html + 23 + + + + Notify me + Сповістіть мене + + apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html + 32 + + + + or + або + + apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html + 36 + + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 + + + apps/client/src/app/pages/landing/landing-page.html + 47 + + + apps/client/src/app/pages/landing/landing-page.html + 450 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 + + + apps/client/src/app/pages/register/register-page.html + 30 + + + apps/client/src/app/pages/webauthn/webauthn-page.html + 29 + + + + I have an API key + У мене є ключ API + + apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html + 43 + + + + Add Tag + Додати тег + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + + User + Користувач + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 44 + + + apps/client/src/app/components/header/header.component.html + 229 + + + + Do you really want to delete this tag? + Ви дійсно хочете видалити цей тег? + + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 87 + + + + Update tag + Оновити тег + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + + Add tag + Додати тег + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + + Do you really want to delete this user? + Ви дійсно хочете видалити цього користувача? + + apps/client/src/app/components/admin-users/admin-users.component.ts + 139 + + + + User + Користувач + + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + + Registration + Реєстрація + + apps/client/src/app/components/admin-users/admin-users.html + 97 + + + + Engagement per Day + Взаємодія за день + + apps/client/src/app/components/admin-users/admin-users.html + 157 + + + + API Requests Today + Запити API сьогодні + + apps/client/src/app/components/admin-users/admin-users.html + 178 + + + + Last Request + Останній запит + + apps/client/src/app/components/admin-users/admin-users.html + 202 + + + + Impersonate User + Видавати себе за користувача + + apps/client/src/app/components/admin-users/admin-users.html + 239 + + + + Delete User + Видалити користувача + + apps/client/src/app/components/admin-users/admin-users.html + 251 + + + + Performance + Продуктивність + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 + + + + Compare with... + Порівняти з... + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 + + + + Manage Benchmarks + Управляти порівняльними показниками + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 + + + + Portfolio + Портфель + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 117 + + + apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts + 46 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 + + + + Benchmark + Порівняльний показник + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 129 + + + + Current Market Mood + Поточний ринковий настрій + + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 + + + + Overview + Огляд + + apps/client/src/app/components/header/header.component.html + 28 + + + apps/client/src/app/components/header/header.component.html + 245 + + + + Portfolio + Портфель + + apps/client/src/app/components/header/header.component.html + 41 + + + apps/client/src/app/components/header/header.component.html + 255 + + + + Admin Control + Управління адміністратором + + apps/client/src/app/components/header/header.component.html + 68 + + + apps/client/src/app/components/header/header.component.html + 279 + + + + Upgrade Plan + Оновити план + + apps/client/src/app/components/header/header.component.html + 185 + + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 61 + + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 18 + + + apps/client/src/app/pages/pricing/pricing-page.html + 293 + + + + Renew Plan + Поновити план + + apps/client/src/app/components/header/header.component.html + 191 + + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 24 + + + apps/client/src/app/pages/pricing/pricing-page.html + 299 + + + + Me + Я + + apps/client/src/app/components/header/header.component.html + 211 + + + + My Ghostfolio + Мій Ghostfolio + + apps/client/src/app/components/header/header.component.html + 270 + + + + About Ghostfolio + Про Ghostfolio + + apps/client/src/app/components/header/header.component.html + 316 + + + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + + Sign in + Увійти + + apps/client/src/app/components/header/header.component.html + 412 + + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 + + + + Get started + Почати + + apps/client/src/app/components/header/header.component.html + 422 + + + + Oops! Incorrect Security Token. + Упс! Неправильний Секретний Токен. + + apps/client/src/app/components/header/header.component.ts + 246 + + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 + + + + Change with currency effect Change + Зміна з урахуванням валютного ефекту Змінити + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 50 + + + + Performance with currency effect Performance + Продуктивність з урахуванням валютного ефекту валюти Продуктивність + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 69 + + + + Average Unit Price + Середня ціна за одиницю + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 87 + + + + Minimum Price + Мінімальна ціна + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 114 + + + + Maximum Price + Максимальна ціна + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 130 + + + + Quantity + Кількість + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 140 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 188 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 186 + + + + Investment + Інвестиція + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 152 + + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 58 + + + + Dividend + Дивіденд + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 165 + + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 319 + + + apps/client/src/app/pages/features/features-page.html + 63 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 201 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 271 + + + + Dividend Yield + Дохідність дивіденду + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 175 + + + + Fees + Комісії + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 187 + + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 84 + + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + + + Activity + Активність + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 207 + + + + Report Data Glitch + Повідомити про збій даних + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 433 + + + + Active + Активний + + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 36 + + + + Closed + Закритий + + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 + + + + Table + Таблиця + + apps/client/src/app/components/home-holdings/home-holdings.html + 16 + + + + Chart + Графік + + apps/client/src/app/components/home-holdings/home-holdings.html + 19 + + + + Manage Activities + Керування діяльністю + + apps/client/src/app/components/home-holdings/home-holdings.html + 63 + + + + Fear + Страх + + apps/client/src/app/components/home-market/home-market.component.ts + 28 + + + libs/ui/src/lib/i18n.ts + 98 + + + + Greed + Жадібність + + apps/client/src/app/components/home-market/home-market.component.ts + 29 + + + libs/ui/src/lib/i18n.ts + 99 + + + + Last Days + Останні днів + + apps/client/src/app/components/home-market/home-market.html + 7 + + + + Welcome to Ghostfolio + Ласкаво просимо в Ghostfolio + + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + + Ready to take control of your personal finances? + Готові взяти під контроль ваші особисті фінанси? + + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + + Setup your accounts + Налаштуйте ваші рахунки + + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Отримайте комплексний фінансовий огляд, додавши ваші банківські та брокерські рахунки. + + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + + Capture your activities + Фіксуйте свою діяльність + + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + + Record your investment activities to keep your portfolio up to date. + Записуйте ваші інвестиційні активності, щоб підтримувати актуальність вашого портфеля. + + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + + Monitor and analyze your portfolio + Відстежуйте та аналізуйте свій портфель + + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + + Track your progress in real-time with comprehensive analysis and insights. + Відстежуйте свій прогрес в режимі реального часу за допомогою всебічного аналізу та інсайтів + + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + + Setup accounts + Налаштувати рахунки + + apps/client/src/app/components/home-overview/home-overview.html + 44 + + + + Add activity + Додати активність + + apps/client/src/app/components/home-overview/home-overview.html + 52 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 8 + + + + Summary + Резюме + + apps/client/src/app/components/home-summary/home-summary.html + 2 + + + + Total Amount + Загальна сума + + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 + + + + Savings Rate + Ставка заощаджень + + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 200 + + + + Security Token + Секретний Токен + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 257 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Sign in with Internet Identity + Увійти з Інтернет-Ідентичністю + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 + + + + Sign in with Google + Увійти з Google + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 + + + + Stay signed in + Залишатися в системі + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 + + + + Oops! A data provider is experiencing the hiccups. + Упс! У постачальника даних виникають проблеми. + + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + + Market data is delayed for + Ринкові дані затримуються для + + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 + + + + Time in Market + Час на ринку + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 + + + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {актив} other {активи}} + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 + + + + Buy + Купити + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 + + + + Sell + Продати + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 + + + + Absolute Gross Performance + Абсолютна валова продуктивність + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 + + + + Absolute Net Performance + Абсолютна чиста продуктивність + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 102 + + + + Net Performance + Чиста продуктивність + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 117 + + + + Total Assets + Загальні активи + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 143 + + + + Valuables + Цінності + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 156 + + + + Emergency Fund + Резервний фонд + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 168 + + + apps/client/src/app/pages/features/features-page.html + 89 + + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 34 + + + + Cash + Готівка + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 202 + + + + Assets + Активи + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 215 + + + + Buying Power + Купівельна спроможність + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 228 + + + + Excluded from Analysis + Виключено з аналізу + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 240 + + + + Liabilities + Зобов'язання + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 255 + + + apps/client/src/app/pages/features/features-page.html + 102 + + + + Net Worth + Чистий капітал + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 273 + + + + Annualized Performance + Річна продуктивність + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 285 + + + + Interest + Відсотки + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 + + + + Save + Зберегти + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 + + + + Please set the amount of your emergency fund. + Будь ласка, встановіть суму вашого резервного фонду. + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 64 + + + + Threshold range + Діапазон порогу + + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 + + + + Threshold Min + Мінімальний поріг + + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 + + + + Threshold Max + Максимальний поріг + + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 + + + + Close + Закрити + + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 + + + + Customize + Налаштувати + + apps/client/src/app/components/rule/rule.component.html + 67 + + + + Deactivate + Деактивувати + + apps/client/src/app/components/rule/rule.component.html + 72 + + + + Activate + Активувати + + apps/client/src/app/components/rule/rule.component.html + 74 + + + + Are you an ambitious investor who needs the full picture? + Ви амбітний інвестор, якому потрібна повна картина? + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 14 + + + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Оновіть до Ghostfolio Premium сьогодні та отримайте доступ до ексклюзивних функцій, щоб покращити ваш інвестиційний досвід: + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 17 + + + + Portfolio Summary + Резюме портфеля + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 24 + + + apps/client/src/app/pages/pricing/pricing-page.html + 57 + + + apps/client/src/app/pages/pricing/pricing-page.html + 218 + + + + Portfolio Allocations + Розподіли портфеля + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 28 + + + apps/client/src/app/pages/features/features-page.html + 161 + + + apps/client/src/app/pages/pricing/pricing-page.html + 61 + + + apps/client/src/app/pages/pricing/pricing-page.html + 222 + + + + Performance Benchmarks + Порівняльні показники продуктивності + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 32 + + + apps/client/src/app/pages/pricing/pricing-page.html + 65 + + + apps/client/src/app/pages/pricing/pricing-page.html + 226 + + + + FIRE Calculator + Калькулятор FIRE + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 36 + + + apps/client/src/app/pages/pricing/pricing-page.html + 69 + + + apps/client/src/app/pages/pricing/pricing-page.html + 230 + + + + Professional Data Provider + Професійний постачальник даних + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 40 + + + apps/client/src/app/pages/pricing/pricing-page.html + 245 + + + + and more Features... + і більше функцій... + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 44 + + + apps/client/src/app/pages/pricing/pricing-page.html + 85 + + + apps/client/src/app/pages/pricing/pricing-page.html + 257 + + + + Get the tools to effectively manage your finances and refine your personal investment strategy. + Отримайте інструменти для ефективного управління фінансами та вдосконалення вашої особистої інвестиційної стратегії. + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 47 + + + + Skip + Пропустити + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 54 + + + + Skip + Пропустити + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 83 + + + + Join now + Приєднуйтесь + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 93 + + + + Today + Сьогодні + + apps/client/src/app/components/toggle/toggle.component.ts + 22 + + + libs/ui/src/lib/assistant/assistant.component.ts + 220 + + + + YTD + З початку року + + apps/client/src/app/components/toggle/toggle.component.ts + 23 + + + libs/ui/src/lib/assistant/assistant.component.ts + 230 + + + + 1Y + 1 рік + + apps/client/src/app/components/toggle/toggle.component.ts + 24 + + + libs/ui/src/lib/assistant/assistant.component.ts + 234 + + + + 5Y + 5 років + + apps/client/src/app/components/toggle/toggle.component.ts + 25 + + + libs/ui/src/lib/assistant/assistant.component.ts + 256 + + + + Max + Максимум + + apps/client/src/app/components/toggle/toggle.component.ts + 26 + + + libs/ui/src/lib/assistant/assistant.component.ts + 259 + + + + Oops! Could not grant access. + Упс! Не вдалося надати доступ. + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + + Grant access + Надати доступ + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 + + + + Private + Приватний + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + + Public + Публічний + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 + + + + User ID + ID користувача + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 230 + + + + Me + Я + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 135 + + + + Received Access + Отриманий доступ + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + + Granted Access + Наданий доступ + + apps/client/src/app/components/user-account-access/user-account-access.html + 7 + + + + Could not generate an API key + Не вдалося згенерувати ключ API + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 139 + + + + Okay + ОК + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 152 + + + apps/client/src/app/core/http-response.interceptor.ts + 81 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 144 + + + + Set this API key in your self-hosted environment: + Встановіть цей ключ API у вашому self-hosted середовищі: + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 154 + + + + Ghostfolio Premium Data Provider API Key + Ключ API Ghostfolio Premium Data Provider + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 157 + + + + Do you really want to generate a new API key? + Ви дійсно хочете згенерувати новий ключ API? + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 162 + + + + Could not redeem coupon code + Не вдалося обміняти код купона + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 177 + + + + Coupon code has been redeemed + Код купона був обміняний + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 190 + + + + Reload + Перезавантажити + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 191 + + + + Please enter your coupon code. + Будь ласка, введіть ваш код купона. + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 213 + + + + per year + на рік + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 36 + + + apps/client/src/app/pages/pricing/pricing-page.html + 279 + + + + Try Premium + Спробуйте Premium + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 53 + + + + Redeem Coupon + Обміняти купон + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 67 + + + + No auto-renewal. + Без автоматичного поновлення. + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 74 + + + + Auto + Автоматичний + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 39 + + + + Do you really want to close your Ghostfolio account? + Ви дійсно хочете закрити ваш обліковий запис Ghostfolio? + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + + Do you really want to remove this sign in method? + Ви дійсно хочете вилучити цей спосіб входу? + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 248 + + + + Oops! There was an error setting up biometric authentication. + Упс! Виникла помилка під час налаштування біометричної автентифікації. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 + + + + Settings + Налаштування + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + Presenter View + Режим доповідача + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 + + + + Protection for sensitive information like absolute performances and quantity values + Захист конфіденційної інформації, такої як абсолютні показники та кількісні значення + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 + + + + Base Currency + Базова валюта + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 + + + + Language + Мова + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 + + + + If a translation is missing, kindly support us in extending it here. + Якщо переклад відсутній, будь ласка, підтримайте нас у його розширенні тут. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + + Locale + Локалізація + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 129 + + + + Date and number format + Формат дати та чисел + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 131 + + + + Appearance + Зовнішній вигляд + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 154 + + + + Auto + Автоматичний + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 168 + + + + Light + Світлий + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 + + + + Dark + Темний + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170 + + + + Zen Mode + Режим дзен + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 179 + + + apps/client/src/app/pages/features/features-page.html + 191 + + + + Distraction-free experience for turbulent times + Досвід без відволікань для неспокійних часів + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 180 + + + + Biometric Authentication + Біометрична аутентифікація + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 196 + + + + Sign in with fingerprint + Увійти з відбитком пальця + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 197 + + + + Experimental Features + Експериментальні функції + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 213 + + + + Sneak peek at upcoming functionality + Попередній перегляд майбутніх функцій + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 214 + + + + Export Data + Експортувати дані + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 238 + + + + Danger Zone + Зона небезпеки + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 250 + + + + Close Account + Закрити обліковий запис + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 285 + + + + This feature is currently unavailable. + Ця функція наразі недоступна. + + apps/client/src/app/core/http-response.interceptor.ts + 53 + + + + Please try again later. + Спробуйте ще раз пізніше. + + apps/client/src/app/core/http-response.interceptor.ts + 55 + + + apps/client/src/app/core/http-response.interceptor.ts + 80 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 143 + + + + This action is not allowed. + Ця дія заборонена. + + apps/client/src/app/core/http-response.interceptor.ts + 61 + + + + Oops! Something went wrong. + Упс! Щось пішло не так. + + apps/client/src/app/core/http-response.interceptor.ts + 78 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 141 + + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Упс! Здається, ви робите занадто багато запитів. Будь ласка, пригальмуй трохи. + + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + + About + Про нас + + apps/client/src/app/pages/about/about-page-routing.module.ts + 51 + + + apps/client/src/app/pages/about/about-page.component.ts + 45 + + + apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts + 13 + + + + Changelog + Журнал змін + + apps/client/src/app/pages/about/about-page.component.ts + 50 + + + apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts + 13 + + + + License + Ліцензія + + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + apps/client/src/app/pages/about/license/license-page-routing.module.ts + 13 + + + + Privacy Policy + Політика конфіденційності + + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts + 13 + + + + Our + Наші + + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + + Discover other exciting Open Source Software projects + Відкрийте для себе інші захоплюючі проекти з відкритим кодом + + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + + Visit + Відвідати + + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + + Accounts + Рахунки + + apps/client/src/app/pages/accounts/accounts-page-routing.module.ts + 13 + + + + Oops, cash balance transfer has failed. + Упс, перенесення балансу готівки не вдалося. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 + + + + Update account + Оновити рахунок + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 + + + + Add account + Додати рахунок + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 10 + + + + Account ID + Ідентифікатор облікового запису + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 96 + + + + From + Від + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + До + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + + Transfer + Переказати + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + + Admin Control + Управління адміністратором + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 20 + + + + Job Queue + Черга завдань + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 + + + apps/client/src/app/pages/admin/admin-page.component.ts + 43 + + + + Market Data + Ринкові дані + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 30 + + + apps/client/src/app/pages/admin/admin-page.component.ts + 38 + + + + Settings + Налаштування + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 35 + + + apps/client/src/app/pages/admin/admin-page.component.ts + 33 + + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 18 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 36 + + + + Users + Користувачі + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 40 + + + apps/client/src/app/pages/admin/admin-page.component.ts + 48 + + + + Overview + Огляд + + apps/client/src/app/pages/admin/admin-page.component.ts + 28 + + + apps/client/src/app/pages/home/home-page.component.ts + 38 + + + apps/client/src/app/pages/resources/resources-page.component.ts + 17 + + + apps/client/src/app/pages/zen/zen-page-routing.module.ts + 19 + + + apps/client/src/app/pages/zen/zen-page.component.ts + 35 + + + + Please enter your Ghostfolio API key: + Будь ласка, введіть ваш ключ API Ghostfolio: + + apps/client/src/app/pages/api/api-page.component.ts + 40 + + + + Blog + Блог + + apps/client/src/app/pages/blog/blog-page-routing.module.ts + 13 + + + + Discover the latest Ghostfolio updates and insights on personal finance + Відкрийте для себе останні оновлення Ghostfolio та виявлення особистих фінансів + + apps/client/src/app/pages/blog/blog-page.html + 7 + + + + As you are already logged in, you cannot access the demo account. + Оскільки ви вже ввійшли, ви не можете отримати доступ до демонстраційного обліковий запис. + + apps/client/src/app/pages/demo/demo-page.component.ts + 35 + + + + Frequently Asked Questions (FAQ) + Часто задавані питання (FAQ) + + apps/client/src/app/pages/faq/faq-page-routing.module.ts + 34 + + + apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts + 13 + + + + General + Загальні + + apps/client/src/app/pages/faq/faq-page.component.ts + 37 + + + + Cloud + Хмара + + apps/client/src/app/pages/faq/faq-page.component.ts + 42 + + + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + + Self-Hosting + Самохостинг + + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + + self-hosting + самохостинг + + apps/client/src/app/pages/faq/faq-page.component.ts + 49 + + + + Frequently Asked Questions (FAQ) + Часто задавані питання (FAQ) + + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 + + + apps/client/src/app/pages/faq/saas/saas-page.html + 4 + + + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 + + + + FAQ + FAQ + + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + + Check out the numerous features of Ghostfolio to manage your wealth + Огляньте численні функції Ghostfolio для управління вашим багатством + + apps/client/src/app/pages/features/features-page.html + 6 + + + + Stocks + Акції + + apps/client/src/app/pages/features/features-page.html + 15 + + + + ETFs + ETF + + apps/client/src/app/pages/features/features-page.html + 25 + + + + Bonds + Облігації + + apps/client/src/app/pages/features/features-page.html + 38 + + + + Cryptocurrencies + Криптовалюти + + apps/client/src/app/pages/features/features-page.html + 51 + + + + Wealth Items + Предмети багатства + + apps/client/src/app/pages/features/features-page.html + 76 + + + + Import and Export + Імпорт та експорт + + apps/client/src/app/pages/features/features-page.html + 115 + + + + Multi-Accounts + Багатокористувацькі акаунти + + apps/client/src/app/pages/features/features-page.html + 127 + + + + Portfolio Calculations + Розрахунки портфеля + + apps/client/src/app/pages/features/features-page.html + 141 + + + + Dark Mode + Темний режим + + apps/client/src/app/pages/features/features-page.html + 178 + + + + Market Mood + Ринковий настрій + + apps/client/src/app/pages/features/features-page.html + 206 + + + + Static Analysis + Статичний аналіз + + apps/client/src/app/pages/features/features-page.html + 225 + + + + Multi-Language + Багатомовність + + apps/client/src/app/pages/features/features-page.html + 242 + + + + Open Source Software + Програмне забезпечення з відкритим кодом + + apps/client/src/app/pages/features/features-page.html + 280 + + + + Get Started + Почати + + apps/client/src/app/pages/features/features-page.html + 305 + + + apps/client/src/app/pages/public/public-page.html + 220 + + + + Holdings + Активи + + apps/client/src/app/pages/home/home-page-routing.module.ts + 23 + + + apps/client/src/app/pages/home/home-page-routing.module.ts + 28 + + + apps/client/src/app/pages/home/home-page.component.ts + 43 + + + apps/client/src/app/pages/zen/zen-page.component.ts + 40 + + + + Summary + Резюме + + apps/client/src/app/pages/home/home-page-routing.module.ts + 33 + + + apps/client/src/app/pages/home/home-page.component.ts + 48 + + + + Markets + Ринки + + apps/client/src/app/pages/home/home-page-routing.module.ts + 38 + + + apps/client/src/app/pages/home/home-page.component.ts + 53 + + + apps/client/src/app/pages/markets/markets-page-routing.module.ts + 13 + + + apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts + 10 + + + apps/client/src/app/pages/resources/resources-page.component.ts + 27 + + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio - це панель особистих фінансів для відстеження вашого чистого капіталу, включаючи готівку, акції, ETF та криптовалюти на різних платформах. + + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + додаток, актив, криптовалюта, панель, etf, фінанси, управління, продуктивність, портфель, програмне забезпечення, акція, торгівля, багатство, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + + My Account + Мій рахунок + + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + + Open Source Wealth Management Software + Програмне забезпечення управління багатством з відкритим кодом + + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + + Manage your wealth like a boss + Керуйте своїми фінансами як професіонал + + apps/client/src/app/pages/landing/landing-page.html + 5 + + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio - це інформаційна панель з відкритим кодом для управління вашими особистими фінансами, орієнтована насамперед на конфіденційність. Розподіліть свої активи, визначте чисту вартість свого майна та приймайте зважені інвестиційні рішення на основі даних. + + apps/client/src/app/pages/landing/landing-page.html + 9 + + + + Get Started + Почати + + apps/client/src/app/pages/landing/landing-page.html + 41 + + + apps/client/src/app/pages/pricing/pricing-page.html + 329 + + + + Live Demo + Жива демонстрація + + apps/client/src/app/pages/landing/landing-page.html + 49 + + + apps/client/src/app/pages/landing/landing-page.html + 451 + + + + Monthly Active Users + Щомісячні активні користувачі + + apps/client/src/app/pages/landing/landing-page.html + 70 + + + + Stars on GitHub + Зірки на GitHub + + apps/client/src/app/pages/landing/landing-page.html + 88 + + + apps/client/src/app/pages/open/open-page.html + 103 + + + + Pulls on Docker Hub + Завантаження на Docker Hub + + apps/client/src/app/pages/landing/landing-page.html + 106 + + + apps/client/src/app/pages/open/open-page.html + 117 + + + + As seen in + Як видно в + + apps/client/src/app/pages/landing/landing-page.html + 115 + + + + Protect your assets. Refine your personal investment strategy. + Захищайте свої активи. Вдосконалюйте власну інвестиційну стратегію. + + apps/client/src/app/pages/landing/landing-page.html + 225 + + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio допомагає зайнятим людям відстежувати акції, ETF або криптовалюти без ризику бути відстеженими. + + apps/client/src/app/pages/landing/landing-page.html + 229 + + + + 360° View + 360° огляд + + apps/client/src/app/pages/landing/landing-page.html + 240 + + + + Get the full picture of your personal finances across multiple platforms. + Отримайте повну картину ваших особистих фінансів на різних платформах. + + apps/client/src/app/pages/landing/landing-page.html + 242 + + + + Web3 Ready + Готовий до Web3 + + apps/client/src/app/pages/landing/landing-page.html + 251 + + + + Use Ghostfolio anonymously and own your financial data. + Використовуйте Ghostfolio анонімно та володійте своїми фінансовими даними. + + apps/client/src/app/pages/landing/landing-page.html + 253 + + + + Open Source + Відкритий код + + apps/client/src/app/pages/landing/landing-page.html + 261 + + + + Benefit from continuous improvements through a strong community. + Отримуйте користь від постійних покращень завдяки сильній спільноті. + + apps/client/src/app/pages/landing/landing-page.html + 263 + + + + Why Ghostfolio? + Чому Ghostfolio? + + apps/client/src/app/pages/landing/landing-page.html + 272 + + + + Ghostfolio is for you if you are... + Ghostfolio для вас, якщо ви... + + apps/client/src/app/pages/landing/landing-page.html + 273 + + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + торгуєте акціями, ETF або криптовалютами на різних платформах + + apps/client/src/app/pages/landing/landing-page.html + 280 + + + + pursuing a buy & hold strategy + дотримуєтеся стратегії купівлі та утримання + + apps/client/src/app/pages/landing/landing-page.html + 286 + + + + interested in getting insights of your portfolio composition + вас цікавлять інсайти вашого складу портфеля + + apps/client/src/app/pages/landing/landing-page.html + 291 + + + + valuing privacy and data ownership + цінуєте конфіденційність і володіння даними + + apps/client/src/app/pages/landing/landing-page.html + 296 + + + + into minimalism + займаєтесь мінімалізмом + + apps/client/src/app/pages/landing/landing-page.html + 299 + + + + caring about diversifying your financial resources + піклуєтесь про диверсифікацію ваших фінансових ресурсів + + apps/client/src/app/pages/landing/landing-page.html + 303 + + + + interested in financial independence + цікавитесь фінансовою незалежністю + + apps/client/src/app/pages/landing/landing-page.html + 307 + + + + saying no to spreadsheets in + кажете ні таблицям у + + apps/client/src/app/pages/landing/landing-page.html + 311 + + + + still reading this list + все ще читаєте цей список + + apps/client/src/app/pages/landing/landing-page.html + 314 + + + + Learn more about Ghostfolio + Дізнайтеся більше про Ghostfolio + + apps/client/src/app/pages/landing/landing-page.html + 319 + + + + What our users are saying + Що говорять користувачі + + apps/client/src/app/pages/landing/landing-page.html + 327 + + + + Members from around the globe are using Ghostfolio Premium + Члени зі всього світу використовують Ghostfolio Premium + + apps/client/src/app/pages/landing/landing-page.html + 366 + + + + How does Ghostfolio work? + Як працює Ghostfolio? + + apps/client/src/app/pages/landing/landing-page.html + 383 + + + + Get started in only 3 steps + Почніть всього за 3 кроки + + apps/client/src/app/pages/landing/landing-page.html + 386 + + + + Sign up anonymously* + Зареєструйтеся анонімно* + + apps/client/src/app/pages/landing/landing-page.html + 392 + + + + * no e-mail address nor credit card required + * не потрібні електронна адреса та кредитна картка + + apps/client/src/app/pages/landing/landing-page.html + 394 + + + + Add any of your historical transactions + Додайте будь-які з ваших історичних транзакцій + + apps/client/src/app/pages/landing/landing-page.html + 405 + + + + Get valuable insights of your portfolio composition + Отримуйте цінні інсайти вашого складу портфеля + + apps/client/src/app/pages/landing/landing-page.html + 417 + + + + Are you ready? + Ви готові? + + apps/client/src/app/pages/landing/landing-page.html + 431 + + + + Join now or check out the example account + Приєднуйтесь зараз або перегляньте демонстраційний рахунок + + apps/client/src/app/pages/landing/landing-page.html + 434 + + + + Get Started + Почати + + apps/client/src/app/pages/landing/landing-page.html + 446 + + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + У Ghostfolio прозорість є основою наших цінностей. Ми публікуємо вихідний код як відкрите програмне забезпечення (OSS) під AGPL-3.0 ліцензією та відкрито ділимося агрегованими ключовими метриками операційного стану платформи. + + apps/client/src/app/pages/open/open-page.html + 6 + + + + (Last 24 hours) + (Останні 24 години) + + apps/client/src/app/pages/open/open-page.html + 37 + + + + Active Users + Активні користувачі + + apps/client/src/app/pages/open/open-page.html + 40 + + + apps/client/src/app/pages/open/open-page.html + 62 + + + + (Last 30 days) + (Останні 30 днів) + + apps/client/src/app/pages/open/open-page.html + 48 + + + apps/client/src/app/pages/open/open-page.html + 59 + + + + New Users + Нові користувачі + + apps/client/src/app/pages/open/open-page.html + 51 + + + + Users in Slack community + Користувачі в спільноті Slack + + apps/client/src/app/pages/open/open-page.html + 75 + + + + Contributors on GitHub + Учасники на GitHub + + apps/client/src/app/pages/open/open-page.html + 89 + + + + (Last 90 days) + (Останні 90 днів) + + apps/client/src/app/pages/open/open-page.html + 127 + + + + Uptime + Час безвідмовної роботи + + apps/client/src/app/pages/open/open-page.html + 132 + + + + Activities + Активності + + apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts + 13 + + + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 40 + + + + Update activity + Оновити активність + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 + + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Акції, ETF, облігації, криптовалюти, товари + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + + One-time fee, annual account fees + Одноразова комісія, щорічна комісія за обслуговування рахунку + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + + Distribution of corporate earnings + Розподіл корпоративних доходів + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + + Revenue for lending out money + Доходи за кредитування грошей + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + + Mortgages, personal loans, credit cards + Іпотека, особисті кредити, кредитні картки + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + + Luxury items, real estate, private companies + Предмети розкоші, нерухомість, приватні компанії + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + + Account + Рахунок + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 308 + + + libs/ui/src/lib/assistant/assistant.html + 107 + + + + Update Cash Balance + Оновити баланс готівки + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 + + + + Date + Дата + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 160 + + + libs/ui/src/lib/account-balances/account-balances.component.html + 12 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 170 + + + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 6 + + + + Unit Price + Ціна за одиницю + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 213 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 286 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 210 + + + + Oops! Could not get the historical exchange rate from + Упс! Не вдалося отримати історичний обмінний курс від + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 240 + + + + Fee + Комісія + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 330 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 234 + + + + Oops! Could not get the historical exchange rate from + Упс! Не вдалося отримати історичний обмінний курс від + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + + Import Activities + Імпортувати активності + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 46 + + + + Import Dividends + Імпорт дивідендів + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 87 + + + + Importing data... + Імпортуються дані... + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 125 + + + + Import has been completed + Імпорт завершено + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 133 + + + + Validating data... + Перевірка даних... + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 239 + + + + Select Holding + Вибрати актив + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 + + + + Select File + Вибрати файл + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 + + + + Holding + Актив + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 + + + libs/ui/src/lib/assistant/assistant.html + 127 + + + + Load Dividends + Завантажити дивіденди + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 + + + + Choose or drop a file here + Виберіть або перетягніть файл сюди + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 + + + + The following file formats are supported: + Підтримуються наступні формати файлів: + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 + + + + Select Dividends + Вибрати дивіденди + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 + + + + Select Activities + Виберіть активності + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 + + + + Back + Назад + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 + + + + Import + Імпорт + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 + + + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 70 + + + + Allocations + Розподіли + + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts + 13 + + + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 45 + + + + Allocations + Розподіли + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 + + + + Proportion of Net Worth + Частка чистої вартості + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 + + + + By Platform + За платформою + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 + + + + By Currency + За валютою + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 63 + + + + By Asset Class + За класом активів + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 + + + + By Holding + За активом + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 + + + + By Sector + За сектором + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 + + + + By Continent + За континентом + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 + + + + By Market + За ринком + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + + Regions + Регіони + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 + + + apps/client/src/app/pages/public/public-page.html + 143 + + + + Developed Markets + Розвиті ринки + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 + + + apps/client/src/app/pages/public/public-page.html + 160 + + + + Emerging Markets + Ринки, що розвиваються + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 231 + + + apps/client/src/app/pages/public/public-page.html + 169 + + + + Other Markets + Інші ринки + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 + + + apps/client/src/app/pages/public/public-page.html + 178 + + + + No data available + Дані недоступні + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 + + + apps/client/src/app/pages/public/public-page.html + 188 + + + libs/ui/src/lib/benchmark/benchmark.component.html + 137 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 181 + + + + By Country + За країною + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 + + + + By Account + За рахунком + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 + + + + By ETF Provider + За постачальником ETF + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 + + + + By ETF Holding + За активами ETF + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + + Approximation based on the top holdings of each ETF + Наближення на основі провідних активів кожного ETF + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 + + + + Analysis + Аналіз + + apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts + 13 + + + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 35 + + + + Dividend + Дивіденд + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 41 + + + libs/ui/src/lib/i18n.ts + 36 + + + + Investment + Інвестиція + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 46 + + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 60 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 + + + + Monthly + Щомісячно + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 54 + + + + Yearly + Щорічно + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 55 + + + + Analysis + Аналіз + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 + + + + Absolute Asset Performance + Абсолютна продуктивність активів + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 60 + + + + Asset Performance + Продуктивність активів + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 81 + + + + Absolute Currency Performance + Абсолютна продуктивність валюти + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 103 + + + + Currency Performance + Продуктивність валюти + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 127 + + + + Absolute Net Performance + Абсолютна чиста продуктивність + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 150 + + + + Net Performance + Чиста продуктивність + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 + + + + Top + Топ + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 197 + + + + Bottom + Низ + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 246 + + + + Portfolio Evolution + Еволюція портфеля + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 299 + + + + Investment Timeline + Інвестиційний графік + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 326 + + + + Current Streak + Поточна серія + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 347 + + + + Longest Streak + Найдовша серія + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 356 + + + + Dividend Timeline + Графік дивідендів + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 383 + + + + FIRE + Фінансова незалежність, достроковий вихід на пенсію (FIRE) + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 4 + + + + Calculator + Калькулятор + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 + + + + 4% Rule + Правило 4% + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 + + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Якщо ви вийдете на пенсію сьогодні, ви зможете знімати на рік або на місяць, виходячи з вашого загального капіталу в та ставкою виведення у 4%. + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray використовує статичний аналіз для виявлення потенційних проблем та ризиків у вашому портфелі. Налаштуйте правила нижче та встановіть індивідуальні пороги, щоб узгодити їх з вашою особистою інвестиційною стратегією. + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 + + + + out of + з + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 22 + + + + rules align with your portfolio. + правила узгоджуються з вашим портфелем. + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 24 + + + + Currency Cluster Risks + Ризики зосередження валюти + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 + + + + Asset Class Cluster Risks + Ризики зосередження класу активів + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 82 + + + + Account Cluster Risks + Ризики зосередження рахунків + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 106 + + + + Economic Market Cluster Risks + Ризики зосередження економічного ринку + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 130 + + + + Inactive + Неактивний + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 173 + + + + Pricing + Ціни + + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 + + + + Pricing Plans + Плани цін + + apps/client/src/app/pages/pricing/pricing-page.html + 4 + + + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + Наша офіційна хмарна пропозиція Ghostfolio Premium - це найпростіший спосіб почати роботу. Завдяки економії часу, це буде найкращим варіантом для більшості людей. Доходи використовуються для покриття витрат на хостинг-інфраструктуру та фінансування постійної розробки. + + apps/client/src/app/pages/pricing/pricing-page.html + 6 + + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Якщо ви віддаєте перевагу запускати Ghostfolio на власній інфраструктурі, перейдіть на GitHub для отримання вихідного коду та подальших інструкцій. + + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + Для технікознавих інвесторів, які віддають перевагу запуску Ghostfolio на власній інфраструктурі. + + apps/client/src/app/pages/pricing/pricing-page.html + 38 + + + + Unlimited Transactions + Необмежені транзакції + + apps/client/src/app/pages/pricing/pricing-page.html + 45 + + + apps/client/src/app/pages/pricing/pricing-page.html + 134 + + + apps/client/src/app/pages/pricing/pricing-page.html + 206 + + + + Unlimited Accounts + Необмежена кількість рахунків + + apps/client/src/app/pages/pricing/pricing-page.html + 49 + + + apps/client/src/app/pages/pricing/pricing-page.html + 138 + + + apps/client/src/app/pages/pricing/pricing-page.html + 210 + + + + Portfolio Performance + Продуктивність портфеля + + apps/client/src/app/pages/pricing/pricing-page.html + 53 + + + apps/client/src/app/pages/pricing/pricing-page.html + 142 + + + apps/client/src/app/pages/pricing/pricing-page.html + 214 + + + + Data Import and Export + Імпорт та експорт даних + + apps/client/src/app/pages/pricing/pricing-page.html + 73 + + + apps/client/src/app/pages/pricing/pricing-page.html + 146 + + + apps/client/src/app/pages/pricing/pricing-page.html + 234 + + + + Community Support + Підтримка спільноти + + apps/client/src/app/pages/pricing/pricing-page.html + 90 + + + + Self-hosted, update manually. + Самохостинг, оновлення вручну. + + apps/client/src/app/pages/pricing/pricing-page.html + 94 + + + + Free + Безкоштовно + + apps/client/src/app/pages/pricing/pricing-page.html + 95 + + + apps/client/src/app/pages/pricing/pricing-page.html + 158 + + + + For new investors who are just getting started with trading. + Для нових інвесторів, які тільки починають з торгівлі. + + apps/client/src/app/pages/pricing/pricing-page.html + 128 + + + + Fully managed Ghostfolio cloud offering. + Повністю керована хмарна пропозиція Ghostfolio. + + apps/client/src/app/pages/pricing/pricing-page.html + 157 + + + apps/client/src/app/pages/pricing/pricing-page.html + 266 + + + + For ambitious investors who need the full picture of their financial assets. + Для амбітних інвесторів, яким потрібна повна картина їхніх фінансових активів. + + apps/client/src/app/pages/pricing/pricing-page.html + 199 + + + + Email and Chat Support + Підтримка електронної пошти та чату + + apps/client/src/app/pages/pricing/pricing-page.html + 262 + + + + One-time payment, no auto-renewal. + Разова оплата, без автоматичного поновлення. + + apps/client/src/app/pages/pricing/pricing-page.html + 303 + + + + It’s free. + Це безкоштовно. + + apps/client/src/app/pages/pricing/pricing-page.html + 332 + + + + Hello, has shared a Portfolio with you! + Привіт, поділився з вами Портфелем! + + apps/client/src/app/pages/public/public-page.html + 4 + + + + Today + Сьогодні + + apps/client/src/app/pages/public/public-page.html + 24 + + + + This year + Цього року + + apps/client/src/app/pages/public/public-page.html + 42 + + + + From the beginning + З початку + + apps/client/src/app/pages/public/public-page.html + 60 + + + + Currencies + Валюти + + apps/client/src/app/pages/public/public-page.html + 88 + + + + Continents + Континенти + + apps/client/src/app/pages/public/public-page.html + 124 + + + + Would you like to refine your personal investment strategy? + Чи хотіли б ви удосконалити вашу особисту інвестиційну стратегію? + + apps/client/src/app/pages/public/public-page.html + 211 + + + + Ghostfolio empowers you to keep track of your wealth. + Ghostfolio надає можливість вам стежити за вашим багатством. + + apps/client/src/app/pages/public/public-page.html + 215 + + + + Registration + Реєстрація + + apps/client/src/app/pages/register/register-page-routing.module.ts + 13 + + + + Continue with Internet Identity + Продовжити з Інтернет-Ідентичністю + + apps/client/src/app/pages/register/register-page.html + 42 + + + + Continue with Google + Продовжити з Google + + apps/client/src/app/pages/register/register-page.html + 53 + + + + Copy to clipboard + Копіювати в буфер обміну + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 26 + + + + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. + Я погоджуюся зберігати свій Секретний Токен у безпечному місці. Якщо я його втрачу, я не зможу відновити свій акаунт. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 32 + + + + Agree and continue + Погоджуюся і продовжую + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 45 + + + + Glossary + Глосарій + + apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts + 10 + + + apps/client/src/app/pages/resources/resources-page.component.ts + 32 + + + + Glossary + Глосарій + + apps/client/src/app/pages/resources/glossary/resources-glossary.component.html + 4 + + + + Guides + Посібники + + apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts + 10 + + + apps/client/src/app/pages/resources/resources-page.component.ts + 22 + + + + Guides + Посібники + + apps/client/src/app/pages/resources/guides/resources-guides.component.html + 4 + + + + guides + guides + snake-case + + apps/client/src/app/pages/resources/overview/resources-overview.component.ts + 23 + + + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 28 + + + + glossary + glossary + snake-case + + apps/client/src/app/pages/resources/overview/resources-overview.component.ts + 41 + + + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 21 + + + + Personal Finance Tools + Інструменти особистих фінансів + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 14 + + + + open-source-alternative-to + відкритий-альтернативний-для + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 + + + + Open Source Alternative to + Альтернатива з відкритим кодом для + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + + Discover Open Source Alternatives for Personal Finance Tools + Відкрийте для себе альтернативи з відкритим кодом для інструментів особистих фінансів + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 + + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Ця сторінка огляду містить добірку інструментів особистих фінансів, порівняних з відкритою альтернативою Ghostfolio. Якщо ви цінуєте прозорість, конфіденційність даних та співпрацю в спільноті, Ghostfolio надає чудову можливість взяти під контроль ваше фінансове управління. + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Ознайомтеся з посиланнями нижче, щоб порівняти різні інструменти особистих фінансів з Ghostfolio. + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + + Open Source Alternative to + Відкрита альтернатива для + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + + Switzerland + Швейцарія + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 59 + + + libs/ui/src/lib/i18n.ts + 90 + + + + Global + Глобальний + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 + + + libs/ui/src/lib/i18n.ts + 16 + + + + Alternative + Альтернатива + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 + + + + App + Додаток + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 + + + + Budgeting + Бюджетування + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 + + + + Community + Спільнота + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 + + + + Family Office + Сімейний офіс + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 + + + + Investor + Інвестор + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + + Open Source + Відкритий код + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 + + + + Personal Finance + Особисті фінанси + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 + + + + Privacy + Конфіденційність + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 + + + + Software + Програмне забезпечення + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + + Tool + Інструмент + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 + + + + User Experience + Користувацький досвід + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 + + + + Wealth + Багатство + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 + + + + Wealth Management + Управління багатством + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 + + + + The Open Source Alternative to + Відкрита альтернатива до + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + + This page has been archived. + Цю сторінку було архівовано. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 + + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Ви шукаєте відкриту альтернативу для ? Ghostfolio є потужним інструментом управління портфелем, який надає індивідуумам комплексну платформу для відстеження, аналізу та оптимізації їхніх інвестицій. Незалежно від того, чи ви досвідчений інвестор, чи тільки починаєте, Ghostfolio пропонує зручний інтерфейс користувача та широкий спектр функціональностей для допомоги вам у прийнятті обґрунтованих рішень та взятті під контроль вашого фінансового майбутнього. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio є відкритим програмним забезпеченням (OSS), що надає економічно ефективну альтернативу для , роблячи його особливо підходящим для тих, хто обмежений у бюджеті, таких як прагнення до фінансової незалежності, раннього виходу на пенсію (FIRE). Використовуючи колективні зусилля спільноти розробників та ентузіастів особистих фінансів, Ghostfolio постійно покращує свої можливості, безпеку та користувацький досвід. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Давайте заглибимося у детальну порівняльну таблицю Ghostfolio проти нижче, щоб отримати повне розуміння того, як Ghostfolio позиціонує себе відносно . Ми дослідимо різні аспекти, такі як функції, конфіденційність даних, ціни тощо, що дозволить вам зробити добре обдуманий вибір для ваших особистих потреб. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + + Ghostfolio vs comparison table + Порівняльна таблиця Ghostfolio проти + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + + Founded + Засновано + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + + Origin + Походження + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + + Region + Регіон + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 87 + + + + Available in + Доступно в + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 108 + + + + is Open Source Software + є відкритим програмним забезпеченням + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 + + + + ✅ Yes + ✅ Так + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 196 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 235 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 257 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 274 + + + + is not Open Source Software + не є відкритим програмним забезпеченням + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 + + + + ❌ No + ❌ Ні + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 203 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 225 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 242 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 264 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 281 + + + + is Open Source Software + є відкритим програмним забезпеченням + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 + + + + is not Open Source Software + не є відкритим програмним забезпеченням + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 + + + + Self-Hosting + Самохостинг + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 170 + + + + can be self-hosted + може бути self-hosted + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 + + + + cannot be self-hosted + не може бути self-hosted + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 + + + + can be self-hosted + може бути self-hosted + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + + cannot be self-hosted + не може бути self-hosted + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + + Use anonymously + Використовувати анонімно + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + + can be used anonymously + може використовуватися анонімно + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + + cannot be used anonymously + не може використовуватися анонімно + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 + + + + can be used anonymously + може використовуватися анонімно + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 + + + + cannot be used anonymously + не може використовуватися анонімно + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 + + + + Free Plan + Безкоштовний план + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + + offers a free plan + пропонує безкоштовний план + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 + + + + does not offer a free plan + не пропонує безкоштовний план + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 + + + + offers a free plan + пропонує безкоштовний план + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 + + + + does not offer a free plan + не пропонує безкоштовний план + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 + + + + Starting from + Починаючи з + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 + + + + year + рік + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 + + + + Notes + Примітки + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 302 + + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Зазначаємо, що інформація, надана в порівняльній таблиці Ghostfolio проти базується на нашому незалежному дослідженні та аналізі. Цей веб-сайт не пов'язаний з або будь-яким іншим продуктом, згаданим у порівнянні. Оскільки ландшафт інструментів особистих фінансів еволюціонує, важливо перевіряти будь-які конкретні деталі або зміни безпосередньо на сторінці відповідного продукту. Потрібно оновити дані? Допоможіть нам підтримувати точні дані на GitHub. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + + Ready to take your investments to the next level? + Готові підняти ваші інвестиції на наступний рівень? + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Легко відстежуйте, аналізуйте та візуалізуйте ваше багатство з Ghostfolio. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 328 + + + + Get Started + Почати + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + + Personal Finance Tools + Інструменти особистих фінансів + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 351 + + + + Resources + Ресурси + + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 50 + + + + Membership + Членство + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 41 + + + + Access + Доступ + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 47 + + + + My Ghostfolio + Мій Ghostfolio + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 33 + + + + Oops, authentication has failed. + Упс, аутентифікація не вдалася. + + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 + + + + Try again + Спробуйте ще раз + + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 + + + + Go back to Home Page + Повернутися на головну сторінку + + apps/client/src/app/pages/webauthn/webauthn-page.html + 31 + + + + Do you really want to delete this account balance? + Ви дійсно хочете видалити цей рахунок? + + libs/ui/src/lib/account-balances/account-balances.component.ts + 109 + + + + Import Activities + Імпортувати активності + + libs/ui/src/lib/activities-table/activities-table.component.html + 9 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 371 + + + + Import Dividends + Імпорт дивідендів + + libs/ui/src/lib/activities-table/activities-table.component.html + 29 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 383 + + + + Export Activities + Експорт активності + + libs/ui/src/lib/activities-table/activities-table.component.html + 41 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 396 + + + + Export Drafts as ICS + Експортувати чернетки як ICS + + libs/ui/src/lib/activities-table/activities-table.component.html + 54 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 409 + + + + Delete Activities + Видалити активності + + libs/ui/src/lib/activities-table/activities-table.component.html + 67 + + + + Draft + Чернетка + + libs/ui/src/lib/activities-table/activities-table.component.html + 145 + + + + Clone + Клонувати + + libs/ui/src/lib/activities-table/activities-table.component.html + 436 + + + + Export Draft as ICS + Експортувати чернетку як ICS + + libs/ui/src/lib/activities-table/activities-table.component.html + 446 + + + + Do you really want to delete these activities? + Ви дійсно хочете видалити ці дії? + + libs/ui/src/lib/activities-table/activities-table.component.ts + 218 + + + + Do you really want to delete this activity? + Ви дійсно хочете видалити цю активність? + + libs/ui/src/lib/activities-table/activities-table.component.ts + 228 + + + + Find holding... + Знайти актив... + + libs/ui/src/lib/assistant/assistant.component.ts + 143 + + + + Week to date + Тиждень до дати + + libs/ui/src/lib/assistant/assistant.component.ts + 222 + + + + WTD + WTD + + libs/ui/src/lib/assistant/assistant.component.ts + 222 + + + + Month to date + Місяць до дати + + libs/ui/src/lib/assistant/assistant.component.ts + 226 + + + + MTD + MTD + + libs/ui/src/lib/assistant/assistant.component.ts + 226 + + + + Year to date + Рік до дати + + libs/ui/src/lib/assistant/assistant.component.ts + 230 + + + + year + рік + + libs/ui/src/lib/assistant/assistant.component.ts + 234 + + + + years + роки + + libs/ui/src/lib/assistant/assistant.component.ts + 256 + + + + No entries... + Немає записів... + + libs/ui/src/lib/assistant/assistant.html + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profiles + Профілі активів + + libs/ui/src/lib/assistant/assistant.html + 67 + + + + Date Range + Діапазон дат + + libs/ui/src/lib/assistant/assistant.html + 93 + + + + Tag + Тег + + libs/ui/src/lib/assistant/assistant.html + 155 + + + + Reset Filters + Скинути фільтри + + libs/ui/src/lib/assistant/assistant.html + 185 + + + + Apply Filters + Застосувати фільтри + + libs/ui/src/lib/assistant/assistant.html + 195 + + + + Index + Індекс + + libs/ui/src/lib/benchmark/benchmark.component.html + 3 + + + + 50-Day Trend + Тренд на 50 днів + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + Тренд на 200 днів + + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + + Last All Time High + Останній рекордний максимум + + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + + Change from All Time High + Зміна від рекордного максимуму + + libs/ui/src/lib/benchmark/benchmark.component.html + 81 + + + + from ATH + від РМ + + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + + Market data provided by + Ринкові дані надані + + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + + Savings Rate per Month + Ставка заощаджень на місяць + + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + + Annual Interest Rate + Річна процентна ставка + + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + + Retirement Date + Дата виходу на пенсію + + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + + Projected Total Amount + Прогнозована загальна сума + + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 + + + + Deposit + Депозит + + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 360 + + + + Interest + Відсотки + + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 370 + + + libs/ui/src/lib/i18n.ts + 38 + + + + Savings + Заощадження + + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 380 + + + + Details for + Деталі для + + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 2 + + + + Oops! Could not parse historical data. + Упс! Не вдалося отримати історичні дані. + + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 + + + + Allocation + Алоція + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 40 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 116 + + + + Change + Змінити + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 119 + + + + Show all + Показати все + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 + + + + Account + Рахунок + + libs/ui/src/lib/i18n.ts + 4 + + + + Asia-Pacific + Азія-Тихоокеанський регіон + + libs/ui/src/lib/i18n.ts + 5 + + + + Asset Class + Клас активів + + libs/ui/src/lib/i18n.ts + 6 + + + + Asset Sub Class + Підклас активів + + libs/ui/src/lib/i18n.ts + 7 + + + + Buy and sell + Купити та продати + + libs/ui/src/lib/i18n.ts + 8 + + + + Cancel + Скасувати + + libs/ui/src/lib/i18n.ts + 9 + + + + Core + Ядро + + libs/ui/src/lib/i18n.ts + 10 + + + + Close + Закрити + + libs/ui/src/lib/i18n.ts + 11 + + + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Переключитися на Ghostfolio Premium або Ghostfolio з відкритим вихідним кодом легко + + libs/ui/src/lib/i18n.ts + 12 + + + + Switch to Ghostfolio Premium easily + Переключитися на Ghostfolio Premium легко + + libs/ui/src/lib/i18n.ts + 13 + + + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Переключитися на Ghostfolio Open Source або Ghostfolio Basic легко + + libs/ui/src/lib/i18n.ts + 14 + + + + Emergency Fund + Резервний фонд + + libs/ui/src/lib/i18n.ts + 15 + + + + Grant + Грант + + libs/ui/src/lib/i18n.ts + 17 + + + + Higher Risk + Вищий ризик + + libs/ui/src/lib/i18n.ts + 18 + + + + This activity already exists. + Така активність вже існує. + + libs/ui/src/lib/i18n.ts + 19 + + + + Lower Risk + Нижчий ризик + + libs/ui/src/lib/i18n.ts + 20 + + + + Month + Місяць + + libs/ui/src/lib/i18n.ts + 21 + + + + Months + Місяців + + libs/ui/src/lib/i18n.ts + 22 + + + + Other + Інші + + libs/ui/src/lib/i18n.ts + 23 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 402 + + + + Get access to 100’000+ tickers from over 50 exchanges + Отримайте доступ до 100 000+ тікерів з понад 50 бірж + + libs/ui/src/lib/i18n.ts + 24 + + + + Preset + Пресет + + libs/ui/src/lib/i18n.ts + 25 + + + + Retirement Provision + Пенсійне накопичення + + libs/ui/src/lib/i18n.ts + 26 + + + + Satellite + Супутник + + libs/ui/src/lib/i18n.ts + 27 + + + + Symbol + Символ + + libs/ui/src/lib/i18n.ts + 28 + + + + Tag + Тег + + libs/ui/src/lib/i18n.ts + 29 + + + + Year + Рік + + libs/ui/src/lib/i18n.ts + 30 + + + + Years + Роки + + libs/ui/src/lib/i18n.ts + 31 + + + + Yes + Так + + libs/ui/src/lib/i18n.ts + 32 + + + + Buy + Купити + + libs/ui/src/lib/i18n.ts + 35 + + + + Fee + Комісія + + libs/ui/src/lib/i18n.ts + 37 + + + + Valuable + Цінний + + libs/ui/src/lib/i18n.ts + 39 + + + + Liability + Зобов'язання + + libs/ui/src/lib/i18n.ts + 40 + + + + Sell + Продати + + libs/ui/src/lib/i18n.ts + 41 + + + + Cash + Готівка + + libs/ui/src/lib/i18n.ts + 44 + + + + Commodity + Товар + + libs/ui/src/lib/i18n.ts + 45 + + + + Equity + Капітал + + libs/ui/src/lib/i18n.ts + 46 + + + + Fixed Income + Фіксований дохід + + libs/ui/src/lib/i18n.ts + 47 + + + + Liquidity + Ліквідність + + libs/ui/src/lib/i18n.ts + 48 + + + + Real Estate + Нерухомість + + libs/ui/src/lib/i18n.ts + 49 + + + + Bond + Облігація + + libs/ui/src/lib/i18n.ts + 52 + + + + Cryptocurrency + Криптовалюта + + libs/ui/src/lib/i18n.ts + 53 + + + + ETF + ETF + + libs/ui/src/lib/i18n.ts + 54 + + + + Mutual Fund + Взаємний фонд + + libs/ui/src/lib/i18n.ts + 55 + + + + Precious Metal + Дорогоцінний метал + + libs/ui/src/lib/i18n.ts + 56 + + + + Private Equity + Приватний капітал + + libs/ui/src/lib/i18n.ts + 57 + + + + Stock + Акція + + libs/ui/src/lib/i18n.ts + 58 + + + + Africa + Африка + + libs/ui/src/lib/i18n.ts + 65 + + + + Asia + Азія + + libs/ui/src/lib/i18n.ts + 66 + + + + Europe + Європа + + libs/ui/src/lib/i18n.ts + 67 + + + + North America + Північна Америка + + libs/ui/src/lib/i18n.ts + 68 + + + + Oceania + Океанія + + libs/ui/src/lib/i18n.ts + 69 + + + + South America + Південна Америка + + libs/ui/src/lib/i18n.ts + 70 + + + + Australia + Австралія + + libs/ui/src/lib/i18n.ts + 73 + + + + Austria + Австрія + + libs/ui/src/lib/i18n.ts + 74 + + + + Belgium + Бельгія + + libs/ui/src/lib/i18n.ts + 75 + + + + Bulgaria + Болгарія + + libs/ui/src/lib/i18n.ts + 76 + + + + Canada + Канада + + libs/ui/src/lib/i18n.ts + 77 + + + + Czech Republic + Чеська Республіка + + libs/ui/src/lib/i18n.ts + 78 + + + + Finland + Фінляндія + + libs/ui/src/lib/i18n.ts + 79 + + + + France + Франція + + libs/ui/src/lib/i18n.ts + 80 + + + + Germany + Німеччина + + libs/ui/src/lib/i18n.ts + 81 + + + + India + Індія + + libs/ui/src/lib/i18n.ts + 82 + + + + Italy + Італія + + libs/ui/src/lib/i18n.ts + 83 + + + + Japan + Японія + + libs/ui/src/lib/i18n.ts + 84 + + + + Netherlands + Нідерланди + + libs/ui/src/lib/i18n.ts + 85 + + + + New Zealand + Нова Зеландія + + libs/ui/src/lib/i18n.ts + 86 + + + + Poland + Польща + + libs/ui/src/lib/i18n.ts + 87 + + + + Romania + Румунія + + libs/ui/src/lib/i18n.ts + 88 + + + + South Africa + Південна Африка + + libs/ui/src/lib/i18n.ts + 89 + + + + Thailand + Таїланд + + libs/ui/src/lib/i18n.ts + 91 + + + + Ukraine + Україна + + libs/ui/src/lib/i18n.ts + 92 + + + + United States + Сполучені Штати + + libs/ui/src/lib/i18n.ts + 93 + + + + Extreme Fear + Екстремальний страх + + libs/ui/src/lib/i18n.ts + 96 + + + + Extreme Greed + Екстремальна жадібність + + libs/ui/src/lib/i18n.ts + 97 + + + + Neutral + Нейтрально + + libs/ui/src/lib/i18n.ts + 100 + + + + API Key + Ключ API + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + + + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Згенерувати ключ API для постачальника даних Ghostfolio Premium для self-hosted середовищ... + + libs/ui/src/lib/membership-card/membership-card.component.html + 26 + + + + Membership + Членство + + libs/ui/src/lib/membership-card/membership-card.component.html + 37 + + + + Time to add your first activity. + Час додати першу активність. + + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 + + + + No data available + Дані недоступні + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 404 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 417 + + + + Oops! Could not find any assets. + Упс! Не вдалося знайти жодного активу. + + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 + + + + Show more + Показати більше + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 + + + + AI prompt has been copied to the clipboard + Запит AI скопійовано в буфер обміну + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 149 + + + + Copy AI prompt to clipboard + Скопіюйте запит AI в буфер обміну + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 27 + + + + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index d8bc38648..bf686e325 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -739,16 +739,20 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. apps/client/src/app/app.component.html - 200 + 205 @@ -2184,7 +2188,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -2326,7 +2330,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -2899,7 +2903,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -2941,49 +2945,49 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -2994,35 +2998,35 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -3033,14 +3037,14 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -3436,14 +3440,14 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 278 + 280 Get Started apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -6040,21 +6044,21 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6082,7 +6086,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index b26a73fb6..451040520 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -762,9 +762,13 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html 114 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 119 + apps/client/src/app/pages/features/features-page.html - 259 + 261 @@ -772,7 +776,7 @@ 交易损失的风险可能很大。不建议将短期内可能需要的资金进行投资。 apps/client/src/app/app.component.html - 200 + 205 @@ -2332,7 +2336,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 158 + 159 @@ -2492,7 +2496,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 251 + 257 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3124,7 +3128,7 @@ 您确实要删除此登录方法吗? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 247 + 248 @@ -3172,7 +3176,7 @@ 语言环境 apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 129 @@ -3180,7 +3184,7 @@ 日期和数字格式 apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 131 @@ -3188,7 +3192,7 @@ 外貌 apps/client/src/app/components/user-account-settings/user-account-settings.html - 148 + 154 @@ -3196,7 +3200,7 @@ 自动 apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 168 @@ -3204,7 +3208,7 @@ 明亮 apps/client/src/app/components/user-account-settings/user-account-settings.html - 163 + 169 @@ -3212,7 +3216,7 @@ 黑暗 apps/client/src/app/components/user-account-settings/user-account-settings.html - 164 + 170 @@ -3220,7 +3224,7 @@ 极简模式 apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + 179 apps/client/src/app/pages/features/features-page.html @@ -3232,7 +3236,7 @@ 动荡时期的无干扰体验 apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + 180 @@ -3240,7 +3244,7 @@ 生物识别认证 apps/client/src/app/components/user-account-settings/user-account-settings.html - 190 + 196 @@ -3248,7 +3252,7 @@ 使用指纹登录 apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 197 @@ -3256,7 +3260,7 @@ 实验性功能 apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 213 @@ -3264,7 +3268,7 @@ 预览即将推出的功能 apps/client/src/app/components/user-account-settings/user-account-settings.html - 208 + 214 @@ -3276,7 +3280,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 224 + 230 @@ -3284,7 +3288,7 @@ 导出数据 apps/client/src/app/components/user-account-settings/user-account-settings.html - 232 + 238 @@ -3724,7 +3728,7 @@ 开源软件 apps/client/src/app/pages/features/features-page.html - 278 + 280 @@ -3732,7 +3736,7 @@ 立即开始 apps/client/src/app/pages/features/features-page.html - 303 + 305 apps/client/src/app/pages/public/public-page.html @@ -6648,7 +6652,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 173 + 174 @@ -6656,7 +6660,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 244 + 250 @@ -6664,7 +6668,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + 285 @@ -6696,7 +6700,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 301 + 302 diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 7608e43a8..edfe7fa69 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -164,6 +164,7 @@ export const SUPPORTED_LANGUAGE_CODES = [ 'pl', 'pt', 'tr', + 'uk', 'zh' ]; diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index a7cf59a10..dd07c23fa 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -1,6 +1,6 @@ import * as currencies from '@dinero.js/currencies'; import { NumberParser } from '@internationalized/number'; -import { DataSource, MarketData, Type as ActivityType } from '@prisma/client'; +import { Type as ActivityType, DataSource, MarketData } from '@prisma/client'; import { Big } from 'big.js'; import { getDate, @@ -11,7 +11,7 @@ import { parseISO, subDays } from 'date-fns'; -import { ca, de, es, fr, it, nl, pl, pt, tr, zhCN } from 'date-fns/locale'; +import { ca, de, es, fr, it, nl, pl, pt, tr, uk, zhCN } from 'date-fns/locale'; import { DEFAULT_CURRENCY, @@ -192,6 +192,8 @@ export function getDateFnsLocale(aLanguageCode: string) { return pt; } else if (aLanguageCode === 'tr') { return tr; + } else if (aLanguageCode === 'uk') { + return uk; } else if (aLanguageCode === 'zh') { return zhCN; } From ec79a9efb6c9ad40727872ef304d13c6deff7fe8 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:28:04 +0100 Subject: [PATCH 003/164] Bugfix/fix exception in scraper configuration (#4196) * Fix exception in scraper configuration * Update changelog --- CHANGELOG.md | 1 + .../data-provider/manual/manual.service.ts | 52 +++++++++---------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 059e444ec..1a0d392a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed an issue with the renaming of activities with type `FEE`, `INTEREST`, `ITEM` or `LIABILITY` +- Handled an exception in the scraper configuration introduced by the migration from `got` to `fetch` ## 2.133.1 - 2025-01-09 diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 9ba84d6d3..108ccbf89 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -273,38 +273,36 @@ export class ManualService implements DataProviderInterface { private async scrape( scraperConfiguration: ScraperConfiguration ): Promise { - try { - let locale = scraperConfiguration.locale; - const response = await fetch(scraperConfiguration.url, { - headers: scraperConfiguration.headers as HeadersInit, - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) - }); + let locale = scraperConfiguration.locale; - if (response.headers['content-type'].includes('application/json')) { - const data = await response.json(); - const value = String( - jsonpath.query(data, scraperConfiguration.selector)[0] - ); + const response = await fetch(scraperConfiguration.url, { + headers: scraperConfiguration.headers as HeadersInit, + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + }); - return extractNumberFromString({ locale, value }); - } else { - const $ = cheerio.load(await response.text()); + if (response.headers['content-type']?.includes('application/json')) { + const data = await response.json(); - if (!locale) { - try { - locale = $('html').attr('lang'); - } catch {} - } + const value = String( + jsonpath.query(data, scraperConfiguration.selector)[0] + ); - return extractNumberFromString({ - locale, - value: $(scraperConfiguration.selector).first().text() - }); + return extractNumberFromString({ locale, value }); + } else { + const $ = cheerio.load(await response.text()); + + if (!locale) { + try { + locale = $('html').attr('lang'); + } catch {} } - } catch (error) { - throw error; + + return extractNumberFromString({ + locale, + value: $(scraperConfiguration.selector).first().text() + }); } } } From e4968dbea7f2d1fe085704e9c4fe73b090b17c6c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:29:43 +0100 Subject: [PATCH 004/164] Feature/extend health check endpoint by database and cache operations (#4188) * Extend health check endpoint by database and cache operations * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/health/health.controller.ts | 20 +++++++++++--- apps/api/src/app/health/health.module.ts | 4 +++ apps/api/src/app/health/health.service.ts | 27 ++++++++++++++++++- .../app/redis-cache/redis-cache.service.ts | 21 +++++++++++++++ 5 files changed, 68 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a0d392a1..2e2ff3900 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Extended the health check endpoint to include database and cache operations (experimental) - Refactored various `lodash` functions with native JavaScript equivalents - Improved the language localization for German (`de`) - Upgraded `prisma` from version `6.1.0` to `6.2.1` diff --git a/apps/api/src/app/health/health.controller.ts b/apps/api/src/app/health/health.controller.ts index 62ee20419..6ff09825b 100644 --- a/apps/api/src/app/health/health.controller.ts +++ b/apps/api/src/app/health/health.controller.ts @@ -3,13 +3,14 @@ import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interce import { Controller, Get, - HttpCode, HttpException, HttpStatus, Param, + Res, UseInterceptors } from '@nestjs/common'; import { DataSource } from '@prisma/client'; +import { Response } from 'express'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { HealthService } from './health.service'; @@ -19,9 +20,20 @@ export class HealthController { public constructor(private readonly healthService: HealthService) {} @Get() - @HttpCode(HttpStatus.OK) - public getHealth() { - return { status: getReasonPhrase(StatusCodes.OK) }; + public async getHealth(@Res() response: Response) { + const databaseServiceHealthy = await this.healthService.isDatabaseHealthy(); + const redisCacheServiceHealthy = + await this.healthService.isRedisCacheHealthy(); + + if (databaseServiceHealthy && redisCacheServiceHealthy) { + return response + .status(HttpStatus.OK) + .json({ status: getReasonPhrase(StatusCodes.OK) }); + } else { + return response + .status(HttpStatus.SERVICE_UNAVAILABLE) + .json({ status: getReasonPhrase(StatusCodes.SERVICE_UNAVAILABLE) }); + } } @Get('data-enhancer/:name') diff --git a/apps/api/src/app/health/health.module.ts b/apps/api/src/app/health/health.module.ts index 6ed464401..b8c4d5810 100644 --- a/apps/api/src/app/health/health.module.ts +++ b/apps/api/src/app/health/health.module.ts @@ -1,6 +1,8 @@ +import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { DataEnhancerModule } from '@ghostfolio/api/services/data-provider/data-enhancer/data-enhancer.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; import { Module } from '@nestjs/common'; @@ -12,6 +14,8 @@ import { HealthService } from './health.service'; imports: [ DataEnhancerModule, DataProviderModule, + PropertyModule, + RedisCacheModule, TransformDataSourceInRequestModule ], providers: [HealthService] diff --git a/apps/api/src/app/health/health.service.ts b/apps/api/src/app/health/health.service.ts index b0c811392..f08f33a1e 100644 --- a/apps/api/src/app/health/health.service.ts +++ b/apps/api/src/app/health/health.service.ts @@ -1,5 +1,8 @@ +import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { DataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/data-enhancer.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { PROPERTY_CURRENCIES } from '@ghostfolio/common/config'; import { Injectable } from '@nestjs/common'; import { DataSource } from '@prisma/client'; @@ -8,7 +11,9 @@ import { DataSource } from '@prisma/client'; export class HealthService { public constructor( private readonly dataEnhancerService: DataEnhancerService, - private readonly dataProviderService: DataProviderService + private readonly dataProviderService: DataProviderService, + private readonly propertyService: PropertyService, + private readonly redisCacheService: RedisCacheService ) {} public async hasResponseFromDataEnhancer(aName: string) { @@ -18,4 +23,24 @@ export class HealthService { public async hasResponseFromDataProvider(aDataSource: DataSource) { return this.dataProviderService.checkQuote(aDataSource); } + + public async isDatabaseHealthy() { + try { + await this.propertyService.getByKey(PROPERTY_CURRENCIES); + + return true; + } catch { + return false; + } + } + + public async isRedisCacheHealthy() { + try { + const isHealthy = await this.redisCacheService.isHealthy(); + + return isHealthy; + } catch { + return false; + } + } } diff --git a/apps/api/src/app/redis-cache/redis-cache.service.ts b/apps/api/src/app/redis-cache/redis-cache.service.ts index c972c30a1..51db93ec6 100644 --- a/apps/api/src/app/redis-cache/redis-cache.service.ts +++ b/apps/api/src/app/redis-cache/redis-cache.service.ts @@ -7,6 +7,7 @@ import { Inject, Injectable, Logger } from '@nestjs/common'; import { Milliseconds } from 'cache-manager'; import { RedisCache } from 'cache-manager-redis-yet'; import { createHash } from 'crypto'; +import ms from 'ms'; @Injectable() export class RedisCacheService { @@ -59,6 +60,26 @@ export class RedisCacheService { return `quote-${getAssetProfileIdentifier({ dataSource, symbol })}`; } + public async isHealthy() { + try { + const client = this.cache.store.client; + + const isHealthy = await Promise.race([ + client.ping(), + new Promise((_, reject) => + setTimeout( + () => reject(new Error('Redis health check timeout')), + ms('2 seconds') + ) + ) + ]); + + return isHealthy === 'PONG'; + } catch (error) { + return false; + } + } + public async remove(key: string) { return this.cache.del(key); } From d5e64eaed41fedbf69b7c04c5c3a5fe7120fde24 Mon Sep 17 00:00:00 2001 From: Ivan Kruglov <4630547+ikruglov@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:34:03 +0100 Subject: [PATCH 005/164] Bugfix/fix issue with import of activities with type FEE (#4187) * Fix import of activity with type FEE * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/import/import.service.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e2ff3900..a20c76c39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed an issue with the import of activities with type `FEE` (where unit price is `0`) - Fixed an issue with the renaming of activities with type `FEE`, `INTEREST`, `ITEM` or `LIABILITY` - Handled an exception in the scraper configuration introduced by the migration from `got` to `fetch` diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 3b7290b43..eb1b841c4 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -30,7 +30,7 @@ import { Injectable } from '@nestjs/common'; import { DataSource, Prisma, SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; import { endOfToday, format, isAfter, isSameSecond, parseISO } from 'date-fns'; -import { uniqBy } from 'lodash'; +import { isNumber, uniqBy } from 'lodash'; import { v4 as uuidv4 } from 'uuid'; @Injectable() @@ -328,7 +328,7 @@ export class ImportService { date ); - if (!unitPrice) { + if (!isNumber(unitPrice)) { throw new Error( `activities.${index} historical exchange rate at ${format( date, From 996f7f3f40f08453facfd041060e2b1c62b0bc02 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:36:14 +0100 Subject: [PATCH 006/164] Release 2.134.0 (#4197) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a20c76c39..f97b8bc23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.134.0 - 2025-01-15 ### Added diff --git a/package-lock.json b/package-lock.json index 46231a7fd..53d23d932 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.133.1", + "version": "2.134.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.133.1", + "version": "2.134.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 7ee9dce20..8045097e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.133.1", + "version": "2.134.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 75f34101b81a353f6325b743722493fd6c5ef7e3 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sat, 18 Jan 2025 16:41:16 +0700 Subject: [PATCH 007/164] Feature/switch to ESLint flat config format (#4203) * Switch to ESLint flat config format * Update changelog --- .eslintrc.json | 151 ----- CHANGELOG.md | 7 + apps/api/.eslintrc.json | 22 - apps/api/eslint.config.cjs | 31 + apps/client/.eslintrc.json | 46 -- apps/client/eslint.config.cjs | 62 ++ apps/ui-e2e/.eslintrc.json | 20 - apps/ui-e2e/eslint.config.cjs | 33 + eslint.config.cjs | 196 ++++++ libs/common/.eslintrc.json | 21 - libs/common/eslint.config.cjs | 28 + libs/ui/.eslintrc.json | 40 -- libs/ui/eslint.config.cjs | 65 ++ nx.json | 1 + package-lock.json | 1087 ++++++++++----------------------- package.json | 14 +- 16 files changed, 759 insertions(+), 1065 deletions(-) delete mode 100644 .eslintrc.json delete mode 100644 apps/api/.eslintrc.json create mode 100644 apps/api/eslint.config.cjs delete mode 100644 apps/client/.eslintrc.json create mode 100644 apps/client/eslint.config.cjs delete mode 100644 apps/ui-e2e/.eslintrc.json create mode 100644 apps/ui-e2e/eslint.config.cjs create mode 100644 eslint.config.cjs delete mode 100644 libs/common/.eslintrc.json create mode 100644 libs/common/eslint.config.cjs delete mode 100644 libs/ui/.eslintrc.json create mode 100644 libs/ui/eslint.config.cjs diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 75e362465..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "root": true, - "ignorePatterns": ["**/*"], - "plugins": ["@nx"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": { - "@nx/enforce-module-boundaries": [ - "warn", - { - "enforceBuildableLibDependency": true, - "allow": [], - "depConstraints": [ - { - "sourceTag": "*", - "onlyDependOnLibsWithTags": ["*"] - } - ] - } - ], - "@typescript-eslint/no-extra-semi": "error", - "no-extra-semi": "off" - } - }, - { - "files": ["*.ts", "*.tsx"], - "extends": ["plugin:@nx/typescript"] - }, - { - "files": ["*.js", "*.jsx"], - "extends": ["plugin:@nx/javascript"] - }, - { - "files": ["*.ts"], - "plugins": ["eslint-plugin-import", "@typescript-eslint"], - "extends": [ - "plugin:@typescript-eslint/recommended-type-checked", - "plugin:@typescript-eslint/stylistic-type-checked" - ], - "rules": { - "@typescript-eslint/consistent-indexed-object-style": "off", - "@typescript-eslint/dot-notation": "off", - "@typescript-eslint/explicit-member-accessibility": [ - "off", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/member-ordering": "warn", - "@typescript-eslint/naming-convention": [ - "off", - { - "selector": "default", - "format": ["camelCase"], - "leadingUnderscore": "allow", - "trailingUnderscore": "allow" - }, - { - "selector": ["variable", "classProperty", "typeProperty"], - "format": ["camelCase", "UPPER_CASE"], - "leadingUnderscore": "allow", - "trailingUnderscore": "allow" - }, - { - "selector": "objectLiteralProperty", - "format": null - }, - { - "selector": "enumMember", - "format": ["camelCase", "UPPER_CASE", "PascalCase"] - }, - { - "selector": "typeLike", - "format": ["PascalCase"] - } - ], - "@typescript-eslint/no-empty-interface": "warn", - "@typescript-eslint/no-inferrable-types": [ - "warn", - { - "ignoreParameters": true - } - ], - "@typescript-eslint/no-non-null-assertion": "warn", - "@typescript-eslint/no-shadow": [ - "warn", - { - "hoist": "all" - } - ], - "@typescript-eslint/unified-signatures": "error", - "@typescript-eslint/no-loss-of-precision": "warn", - "@typescript-eslint/no-var-requires": "warn", - "@typescript-eslint/ban-types": "warn", - "arrow-body-style": "off", - "constructor-super": "error", - "eqeqeq": ["error", "smart"], - "guard-for-in": "warn", - "id-blacklist": "off", - "id-match": "off", - "import/no-deprecated": "warn", - "no-bitwise": "error", - "no-caller": "error", - "no-debugger": "error", - "no-empty": "off", - "no-eval": "error", - "no-fallthrough": "error", - "no-new-wrappers": "error", - "no-restricted-imports": ["error", "rxjs/Rx"], - "no-undef-init": "error", - "no-underscore-dangle": "off", - "no-var": "error", - "radix": "error", - "no-unsafe-optional-chaining": "warn", - "no-extra-boolean-cast": "warn", - "no-empty-pattern": "warn", - "no-useless-catch": "warn", - "no-unsafe-finally": "warn", - "no-prototype-builtins": "warn", - "no-async-promise-executor": "warn", - "no-constant-condition": "warn", - - // The following rules are part of @typescript-eslint/recommended-type-checked - // and can be remove once solved - "@typescript-eslint/await-thenable": "warn", - "@typescript-eslint/ban-ts-comment": "warn", - "@typescript-eslint/no-base-to-string": "warn", - "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/no-floating-promises": "warn", - "@typescript-eslint/no-misused-promises": "warn", - "@typescript-eslint/no-redundant-type-constituents": "warn", - "@typescript-eslint/no-unnecessary-type-assertion": "warn", - "@typescript-eslint/no-unsafe-argument": "warn", - "@typescript-eslint/no-unsafe-assignment": "warn", - "@typescript-eslint/no-unsafe-enum-comparison": "warn", - "@typescript-eslint/no-unsafe-member-access": "warn", - "@typescript-eslint/no-unsafe-return": "warn", - "@typescript-eslint/no-unsafe-call": "warn", - "@typescript-eslint/require-await": "warn", - "@typescript-eslint/restrict-template-expressions": "warn", - "@typescript-eslint/unbound-method": "warn", - - // The following rules are part of @typescript-eslint/stylistic-type-checked - // and can be remove once solved - "@typescript-eslint/prefer-nullish-coalescing": "warn" // TODO: Requires strictNullChecks: true - } - } - ], - "extends": ["plugin:storybook/recommended"] -} diff --git a/CHANGELOG.md b/CHANGELOG.md index f97b8bc23..f3598581f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Switched to _ESLint_’s flat config format +- Upgraded `eslint` dependencies + ## 2.134.0 - 2025-01-15 ### Added diff --git a/apps/api/.eslintrc.json b/apps/api/.eslintrc.json deleted file mode 100644 index 9263d0065..000000000 --- a/apps/api/.eslintrc.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../.eslintrc.json", - "ignorePatterns": ["!**/*"], - "rules": {}, - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "parserOptions": { - "project": ["apps/api/tsconfig.*?.json"] - }, - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/apps/api/eslint.config.cjs b/apps/api/eslint.config.cjs new file mode 100644 index 000000000..043802a0d --- /dev/null +++ b/apps/api/eslint.config.cjs @@ -0,0 +1,31 @@ +const baseConfig = require('../../eslint.config.cjs'); + +module.exports = [ + { + ignores: ['**/dist'] + }, + ...baseConfig, + { + rules: {} + }, + { + files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], + // Override or add rules here + rules: {}, + languageOptions: { + parserOptions: { + project: ['apps/api/tsconfig.*?.json'] + } + } + }, + { + files: ['**/*.ts', '**/*.tsx'], + // Override or add rules here + rules: {} + }, + { + files: ['**/*.js', '**/*.jsx'], + // Override or add rules here + rules: {} + } +]; diff --git a/apps/client/.eslintrc.json b/apps/client/.eslintrc.json deleted file mode 100644 index fdb4f84f1..000000000 --- a/apps/client/.eslintrc.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "parserOptions": { - "project": ["apps/client/tsconfig.*?.json"] - }, - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts"], - "rules": { - "@angular-eslint/prefer-standalone": "off" - } - } - ], - "plugins": ["@angular-eslint/eslint-plugin", "@typescript-eslint"], - "rules": { - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "gf", - "style": "kebab-case" - } - ], - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "gf", - "style": "camelCase" - } - ] - } -} diff --git a/apps/client/eslint.config.cjs b/apps/client/eslint.config.cjs new file mode 100644 index 000000000..3130e0024 --- /dev/null +++ b/apps/client/eslint.config.cjs @@ -0,0 +1,62 @@ +const baseConfig = require('../../eslint.config.cjs'); +const angularEslintPlugin = require('@angular-eslint/eslint-plugin'); +const typescriptEslintPlugin = require('@typescript-eslint/eslint-plugin'); + +module.exports = [ + { + ignores: ['**/dist'] + }, + ...baseConfig, + { + plugins: { + '@angular-eslint': angularEslintPlugin, + '@typescript-eslint': typescriptEslintPlugin + } + }, + { + rules: { + '@angular-eslint/component-selector': [ + 'error', + { + type: 'element', + prefix: 'gf', + style: 'kebab-case' + } + ], + '@angular-eslint/directive-selector': [ + 'error', + { + type: 'attribute', + prefix: 'gf', + style: 'camelCase' + } + ] + } + }, + { + files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], + // Override or add rules here + rules: {}, + languageOptions: { + parserOptions: { + project: ['apps/client/tsconfig.*?.json'] + } + } + }, + { + files: ['**/*.ts', '**/*.tsx'], + // Override or add rules here + rules: {} + }, + { + files: ['**/*.js', '**/*.jsx'], + // Override or add rules here + rules: {} + }, + { + files: ['**/*.ts'], + rules: { + '@angular-eslint/prefer-standalone': 'off' + } + } +]; diff --git a/apps/ui-e2e/.eslintrc.json b/apps/ui-e2e/.eslintrc.json deleted file mode 100644 index e1ff28793..000000000 --- a/apps/ui-e2e/.eslintrc.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "parserOptions": { - "project": ["apps/ui-e2e/tsconfig.json"] - }, - "rules": {} - }, - { - "files": ["src/plugins/index.js"], - "rules": { - "@typescript-eslint/no-var-requires": "off", - "no-undef": "off" - } - } - ] -} diff --git a/apps/ui-e2e/eslint.config.cjs b/apps/ui-e2e/eslint.config.cjs new file mode 100644 index 000000000..5e6707635 --- /dev/null +++ b/apps/ui-e2e/eslint.config.cjs @@ -0,0 +1,33 @@ +const { FlatCompat } = require('@eslint/eslintrc'); +const js = require('@eslint/js'); +const baseConfig = require('../../eslint.config.cjs'); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended +}); + +module.exports = [ + { + ignores: ['**/dist'] + }, + ...baseConfig, + ...compat.extends('plugin:cypress/recommended'), + { + files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], + // Override or add rules here + rules: {}, + languageOptions: { + parserOptions: { + project: ['apps/ui-e2e/tsconfig.json'] + } + } + }, + { + files: ['src/plugins/index.js'], + rules: { + '@typescript-eslint/no-var-requires': 'off', + 'no-undef': 'off' + } + } +]; diff --git a/eslint.config.cjs b/eslint.config.cjs new file mode 100644 index 000000000..c7e08821c --- /dev/null +++ b/eslint.config.cjs @@ -0,0 +1,196 @@ +const { FlatCompat } = require('@eslint/eslintrc'); +const js = require('@eslint/js'); +const nxEslintPlugin = require('@nx/eslint-plugin'); +const storybook = require('eslint-plugin-storybook'); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended +}); + +module.exports = [ + { + ignores: ['**/dist'] + }, + ...storybook.configs['flat/recommended'], + { plugins: { '@nx': nxEslintPlugin } }, + { + files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], + rules: { + '@nx/enforce-module-boundaries': [ + 'warn', + { + enforceBuildableLibDependency: true, + allow: [], + depConstraints: [ + { + sourceTag: '*', + onlyDependOnLibsWithTags: ['*'] + } + ] + } + ], + '@typescript-eslint/no-extra-semi': 'error', + 'no-extra-semi': 'off' + } + }, + ...compat + .config({ + extends: ['plugin:@nx/typescript'] + }) + .map((config) => ({ + ...config, + files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'], + rules: { + ...config.rules + } + })), + ...compat + .config({ + extends: ['plugin:@nx/javascript'] + }) + .map((config) => ({ + ...config, + files: ['**/*.js', '**/*.jsx', '**/*.cjs', '**/*.mjs'], + rules: { + ...config.rules + } + })), + ...compat + .config({ + plugins: ['eslint-plugin-import', '@typescript-eslint'], + extends: [ + 'plugin:@typescript-eslint/recommended-type-checked', + 'plugin:@typescript-eslint/stylistic-type-checked' + ] + }) + .map((config) => ({ + ...config, + files: ['**/*.ts'], + rules: { + ...config.rules, + '@typescript-eslint/consistent-indexed-object-style': 'off', + '@typescript-eslint/dot-notation': 'off', + '@typescript-eslint/explicit-member-accessibility': [ + 'off', + { + accessibility: 'explicit' + } + ], + '@typescript-eslint/member-ordering': 'warn', + '@typescript-eslint/naming-convention': [ + 'off', + { + selector: 'default', + format: ['camelCase'], + leadingUnderscore: 'allow', + trailingUnderscore: 'allow' + }, + { + selector: ['variable', 'classProperty', 'typeProperty'], + format: ['camelCase', 'UPPER_CASE'], + leadingUnderscore: 'allow', + trailingUnderscore: 'allow' + }, + { + selector: 'objectLiteralProperty', + format: null + }, + { + selector: 'enumMember', + format: ['camelCase', 'UPPER_CASE', 'PascalCase'] + }, + { + selector: 'typeLike', + format: ['PascalCase'] + } + ], + '@typescript-eslint/no-empty-interface': 'warn', + '@typescript-eslint/no-inferrable-types': [ + 'warn', + { + ignoreParameters: true + } + ], + '@typescript-eslint/no-non-null-assertion': 'warn', + '@typescript-eslint/no-shadow': [ + 'warn', + { + hoist: 'all' + } + ], + '@typescript-eslint/unified-signatures': 'error', + '@typescript-eslint/no-loss-of-precision': 'warn', + '@typescript-eslint/no-var-requires': 'warn', + 'arrow-body-style': 'off', + 'constructor-super': 'error', + eqeqeq: ['error', 'smart'], + 'guard-for-in': 'warn', + 'id-blacklist': 'off', + 'id-match': 'off', + 'import/no-deprecated': 'warn', + 'no-bitwise': 'error', + 'no-caller': 'error', + 'no-debugger': 'error', + 'no-empty': 'off', + 'no-eval': 'error', + 'no-fallthrough': 'error', + 'no-new-wrappers': 'error', + 'no-restricted-imports': ['error', 'rxjs/Rx'], + 'no-undef-init': 'error', + 'no-underscore-dangle': 'off', + 'no-var': 'error', + radix: 'error', + 'no-unsafe-optional-chaining': 'warn', + 'no-extra-boolean-cast': 'warn', + 'no-empty-pattern': 'warn', + 'no-useless-catch': 'warn', + 'no-unsafe-finally': 'warn', + 'no-prototype-builtins': 'warn', + 'no-async-promise-executor': 'warn', + 'no-constant-condition': 'warn', + + // The following rules are part of eslint:recommended + // and can be remove once solved + 'no-constant-binary-expression': 'warn', + 'no-loss-of-precision': 'warn', + + // The following rules are part of @typescript-eslint/recommended-type-checked + // and can be remove once solved + '@typescript-eslint/await-thenable': 'warn', + '@typescript-eslint/ban-ts-comment': 'warn', + '@typescript-eslint/no-base-to-string': 'warn', + '@typescript-eslint/no-empty-object-type': 'warn', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-misused-promises': 'warn', + '@typescript-eslint/no-redundant-type-constituents': 'warn', + '@typescript-eslint/no-require-imports': 'warn', + '@typescript-eslint/no-unnecessary-type-assertion': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + '@typescript-eslint/no-unsafe-assignment': 'warn', + '@typescript-eslint/no-unsafe-enum-comparison': 'warn', + '@typescript-eslint/no-unsafe-function-type': 'warn', + '@typescript-eslint/no-unsafe-member-access': 'warn', + '@typescript-eslint/no-unsafe-return': 'warn', + '@typescript-eslint/no-unsafe-call': 'warn', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + caughtErrors: 'none' + } + ], + '@typescript-eslint/no-wrapper-object-types': 'warn', + '@typescript-eslint/only-throw-error': 'warn', + '@typescript-eslint/prefer-promise-reject-errors': 'warn', + '@typescript-eslint/require-await': 'warn', + '@typescript-eslint/restrict-template-expressions': 'warn', + '@typescript-eslint/unbound-method': 'warn', + + // The following rules are part of @typescript-eslint/stylistic-type-checked + // and can be remove once solved + '@typescript-eslint/prefer-nullish-coalescing': 'warn', // TODO: Requires strictNullChecks: true + '@typescript-eslint/prefer-regexp-exec': 'warn' + } + })) +]; diff --git a/libs/common/.eslintrc.json b/libs/common/.eslintrc.json deleted file mode 100644 index 69cfc2050..000000000 --- a/libs/common/.eslintrc.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "parserOptions": { - "project": ["libs/common/tsconfig.*?.json"] - }, - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - } - ] -} diff --git a/libs/common/eslint.config.cjs b/libs/common/eslint.config.cjs new file mode 100644 index 000000000..a78dde897 --- /dev/null +++ b/libs/common/eslint.config.cjs @@ -0,0 +1,28 @@ +const baseConfig = require('../../eslint.config.cjs'); + +module.exports = [ + { + ignores: ['**/dist'] + }, + ...baseConfig, + { + files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], + // Override or add rules here + rules: {}, + languageOptions: { + parserOptions: { + project: ['libs/common/tsconfig.*?.json'] + } + } + }, + { + files: ['**/*.ts', '**/*.tsx'], + // Override or add rules here + rules: {} + }, + { + files: ['**/*.js', '**/*.jsx'], + // Override or add rules here + rules: {} + } +]; diff --git a/libs/ui/.eslintrc.json b/libs/ui/.eslintrc.json deleted file mode 100644 index edc969121..000000000 --- a/libs/ui/.eslintrc.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*", "**/*.stories.ts"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "parserOptions": { - "project": ["libs/ui/tsconfig.*?.json"] - }, - "extends": [ - "plugin:@nx/angular", - "plugin:@angular-eslint/template/process-inline-templates" - ], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "gf", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "gf", - "style": "kebab-case" - } - ], - "@angular-eslint/prefer-standalone": "off" - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/eslint.config.cjs b/libs/ui/eslint.config.cjs new file mode 100644 index 000000000..ceaf43ca2 --- /dev/null +++ b/libs/ui/eslint.config.cjs @@ -0,0 +1,65 @@ +const { FlatCompat } = require('@eslint/eslintrc'); +const js = require('@eslint/js'); +const baseConfig = require('../../eslint.config.cjs'); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended +}); + +module.exports = [ + { + ignores: ['**/dist'] + }, + ...baseConfig, + ...compat + .config({ + extends: [ + 'plugin:@nx/angular', + 'plugin:@angular-eslint/template/process-inline-templates' + ] + }) + .map((config) => ({ + ...config, + files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], + rules: { + ...config.rules, + '@angular-eslint/directive-selector': [ + 'error', + { + type: 'attribute', + prefix: 'gf', + style: 'camelCase' + } + ], + '@angular-eslint/component-selector': [ + 'error', + { + type: 'element', + prefix: 'gf', + style: 'kebab-case' + } + ], + '@angular-eslint/prefer-standalone': 'off' + }, + languageOptions: { + parserOptions: { + project: ['libs/ui/tsconfig.*?.json'] + } + } + })), + ...compat + .config({ + extends: ['plugin:@nx/angular-template'] + }) + .map((config) => ({ + ...config, + files: ['**/*.html'], + rules: { + ...config.rules + } + })), + { + ignores: ['**/*.stories.ts'] + } +]; diff --git a/nx.json b/nx.json index e39b5dd23..785ffa781 100644 --- a/nx.json +++ b/nx.json @@ -63,6 +63,7 @@ "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", "!{projectRoot}/**/*.stories.@(js|jsx|ts|tsx|mdx)", "!{projectRoot}/.storybook/**/*", + "!{projectRoot}/eslint.config.cjs", "!{projectRoot}/jest.config.[jt]s", "!{projectRoot}/src/test-setup.[jt]s", "!{projectRoot}/tsconfig.storybook.json", diff --git a/package-lock.json b/package-lock.json index 53d23d932..34891a9b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -104,6 +104,8 @@ "@angular/language-service": "19.0.5", "@angular/localize": "19.0.5", "@angular/pwa": "19.0.6", + "@eslint/eslintrc": "3.2.0", + "@eslint/js": "9.18.0", "@nestjs/schematics": "10.0.1", "@nestjs/testing": "10.1.3", "@nx/angular": "20.3.0", @@ -133,15 +135,15 @@ "@types/node": "20.14.10", "@types/papaparse": "5.3.7", "@types/passport-google-oauth20": "2.0.16", - "@typescript-eslint/eslint-plugin": "6.21.0", - "@typescript-eslint/parser": "6.21.0", + "@typescript-eslint/eslint-plugin": "8.20.0", + "@typescript-eslint/parser": "8.20.0", "codelyzer": "6.0.1", "cypress": "6.2.1", - "eslint": "8.57.0", + "eslint": "9.18.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-cypress": "2.15.1", - "eslint-plugin-import": "2.29.1", - "eslint-plugin-storybook": "0.6.15", + "eslint-plugin-cypress": "3.2.0", + "eslint-plugin-import": "2.31.0", + "eslint-plugin-storybook": "0.10.2", "husky": "9.1.7", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", @@ -5215,17 +5217,45 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.5", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -5233,7 +5263,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -5256,17 +5286,45 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "type-fest": "^0.20.2" + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5292,27 +5350,38 @@ "dev": true, "license": "MIT" }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@eslint/js": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "node_modules/@eslint/object-schema": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@hexagon/base64": { @@ -5321,19 +5390,42 @@ "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==", "license": "MIT" }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -5350,12 +5442,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@inquirer/checkbox": { "version": "4.0.4", @@ -9386,6 +9485,13 @@ "node": ">=16.0.0" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@samverschueren/stream-to-observable": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", @@ -11949,178 +12055,72 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz", + "integrity": "sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/type-utils": "8.20.0", + "@typescript-eslint/utils": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^2.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.20.0.tgz", + "integrity": "sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz", + "integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -12128,16 +12128,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz", - "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz", + "integrity": "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.18.2", - "@typescript-eslint/utils": "8.18.2", + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/utils": "8.20.0", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12151,84 +12151,10 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz", - "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.18.2", - "@typescript-eslint/visitor-keys": "8.18.2", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz", - "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.18.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/types": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz", - "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", + "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", "dev": true, "license": "MIT", "engines": { @@ -12240,52 +12166,36 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz", + "integrity": "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { @@ -12299,16 +12209,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz", - "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz", + "integrity": "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.2", - "@typescript-eslint/types": "8.18.2", - "@typescript-eslint/typescript-estree": "8.18.2" + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/typescript-estree": "8.20.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12322,59 +12232,14 @@ "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz", - "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.18.2", - "@typescript-eslint/visitor-keys": "8.18.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz", - "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.18.2", - "@typescript-eslint/visitor-keys": "8.18.2", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz", - "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", + "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.2", + "@typescript-eslint/types": "8.20.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -12385,7 +12250,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", @@ -12398,61 +12263,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", - "dev": true, - "license": "ISC" - }, "node_modules/@vitejs/plugin-basic-ssl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", @@ -13151,16 +12961,6 @@ "dev": true, "license": "MIT" }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/array.prototype.findlastindex": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", @@ -13551,24 +13351,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.12", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", @@ -17759,59 +17541,63 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.10.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -17892,16 +17678,16 @@ "license": "MIT" }, "node_modules/eslint-plugin-cypress": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.1.tgz", - "integrity": "sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.2.0.tgz", + "integrity": "sha512-HaxMz6BoU4ay+K4WrG9ZJC1NdX06FqSlAwtRDStjM0ORFT7zCNPNuRJ+kUPc17Rt2AMUBSqeD9L0zTR3uZhPpw==", "dev": true, "license": "MIT", "dependencies": { "globals": "^13.20.0" }, "peerDependencies": { - "eslint": ">= 3.2.1" + "eslint": ">=7" } }, "node_modules/eslint-plugin-cypress/node_modules/globals": { @@ -17934,35 +17720,37 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@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.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "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.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "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" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -18019,139 +17807,23 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.6.15", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.15.tgz", - "integrity": "sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.10.2.tgz", + "integrity": "sha512-iOrFJfyLgRLIbWDLbbs3J4yrknvIB+uiZ8KGqGOEXTL7/BGuBMZLiIU9Q4Pm/VYJrHN4JqmMtwCSrAemHL2nFg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf": "^0.0.1", - "@typescript-eslint/utils": "^5.45.0", - "requireindex": "^1.1.0", + "@storybook/csf": "^0.1.11", + "@typescript-eslint/utils": "^8.8.1", "ts-dedent": "^2.2.0" }, "engines": { - "node": "12.x || 14.x || >= 16" + "node": ">= 18" }, "peerDependencies": { "eslint": ">=6" } }, - "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", - "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -18204,19 +17876,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -18231,9 +17890,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -18241,56 +17900,58 @@ "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/eslint/node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "type-fest": "^0.20.2" + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -18332,19 +17993,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -18963,16 +18611,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/filelist": { @@ -19215,34 +18863,17 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16" } }, "node_modules/flatted": { @@ -19956,27 +19587,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/good-listener": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", @@ -29086,16 +28696,6 @@ "node": ">=0.10.0" } }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.5" - } - }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -31142,13 +30742,6 @@ "node": ">=8" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/throttleit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", @@ -31337,16 +30930,16 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-dedent": { @@ -31515,10 +31108,9 @@ "license": "0BSD" }, "node_modules/tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -31531,10 +31123,10 @@ "glob": "^7.1.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", + "mkdirp": "^0.5.1", "resolve": "^1.3.2", "semver": "^5.3.0", - "tslib": "^1.13.0", + "tslib": "^1.8.0", "tsutils": "^2.29.0" }, "bin": { @@ -31544,7 +31136,7 @@ "node": ">=4.8.0" }, "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" } }, "node_modules/tslint/node_modules/ansi-styles": { @@ -31664,29 +31256,6 @@ "node": ">=0.6.x" } }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, "node_modules/tuf-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-3.0.1.tgz", diff --git a/package.json b/package.json index 8045097e3..660efb315 100644 --- a/package.json +++ b/package.json @@ -150,6 +150,8 @@ "@angular/language-service": "19.0.5", "@angular/localize": "19.0.5", "@angular/pwa": "19.0.6", + "@eslint/eslintrc": "3.2.0", + "@eslint/js": "9.18.0", "@nestjs/schematics": "10.0.1", "@nestjs/testing": "10.1.3", "@nx/angular": "20.3.0", @@ -179,15 +181,15 @@ "@types/node": "20.14.10", "@types/papaparse": "5.3.7", "@types/passport-google-oauth20": "2.0.16", - "@typescript-eslint/eslint-plugin": "6.21.0", - "@typescript-eslint/parser": "6.21.0", + "@typescript-eslint/eslint-plugin": "8.20.0", + "@typescript-eslint/parser": "8.20.0", "codelyzer": "6.0.1", "cypress": "6.2.1", - "eslint": "8.57.0", + "eslint": "9.18.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-cypress": "2.15.1", - "eslint-plugin-import": "2.29.1", - "eslint-plugin-storybook": "0.6.15", + "eslint-plugin-cypress": "3.2.0", + "eslint-plugin-import": "2.31.0", + "eslint-plugin-storybook": "0.10.2", "husky": "9.1.7", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", From 40b628e0e78136b67a98549b010c6a335441ded9 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 18 Jan 2025 10:50:52 +0100 Subject: [PATCH 008/164] Feature/extend search by isin in financial modeling prep service (#4204) * Extend search by ISIN * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/symbol/symbol.controller.ts | 2 +- .../financial-modeling-prep.service.ts | 69 +++++++++++++------ 3 files changed, 51 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3598581f..07b37e80b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Extended the search by `isin` in the _Financial Modeling Prep_ service - Switched to _ESLint_’s flat config format - Upgraded `eslint` dependencies diff --git a/apps/api/src/app/symbol/symbol.controller.ts b/apps/api/src/app/symbol/symbol.controller.ts index 89cdd416c..5d9a49a29 100644 --- a/apps/api/src/app/symbol/symbol.controller.ts +++ b/apps/api/src/app/symbol/symbol.controller.ts @@ -47,7 +47,7 @@ export class SymbolController { try { return this.symbolService.lookup({ includeIndices, - query: query.toLowerCase(), + query, user: this.request.user }); } catch { diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index ed55b3c2f..edde92cbb 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -20,12 +20,13 @@ import { import { Injectable, Logger } from '@nestjs/common'; import { DataSource, SymbolProfile } from '@prisma/client'; +import { isISIN } from 'class-validator'; import { format, isAfter, isBefore, isSameDay } from 'date-fns'; @Injectable() export class FinancialModelingPrepService implements DataProviderInterface { private apiKey: string; - private readonly URL = 'https://financialmodelingprep.com/api/v3'; + private readonly URL = this.getUrl({ version: 3 }); public constructor( private readonly configurationService: ConfigurationService @@ -161,25 +162,49 @@ export class FinancialModelingPrepService implements DataProviderInterface { let items: LookupItem[] = []; try { - const result = await fetch( - `${this.URL}/search?query=${query}&apikey=${this.apiKey}`, - { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) - } - ).then((res) => res.json()); - - items = result.map(({ currency, name, symbol }) => { - return { - // TODO: Add assetClass - // TODO: Add assetSubClass - currency, - name, - symbol, - dataSource: this.getName() - }; - }); + if (isISIN(query)) { + const result = await fetch( + `${this.getUrl({ version: 4 })}/search/isin?isin=${query}&apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + items = result.map(({ companyName, currency, symbol }) => { + return { + currency, + symbol, + assetClass: undefined, // TODO + assetSubClass: undefined, // TODO + dataProviderInfo: this.getDataProviderInfo(), + dataSource: this.getName(), + name: companyName + }; + }); + } else { + const result = await fetch( + `${this.URL}/search?query=${query}&apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + items = result.map(({ currency, name, symbol }) => { + return { + currency, + name, + symbol, + assetClass: undefined, // TODO + assetSubClass: undefined, // TODO + dataProviderInfo: this.getDataProviderInfo(), + dataSource: this.getName() + }; + }); + } } catch (error) { let message = error; @@ -194,4 +219,8 @@ export class FinancialModelingPrepService implements DataProviderInterface { return { items }; } + + private getUrl({ version }: { version: number }) { + return `https://financialmodelingprep.com/api/v${version}`; + } } From 511a2d6d0de16b7b2fbb6cdfcac94bdbc2da6c4f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 18 Jan 2025 18:48:32 +0100 Subject: [PATCH 009/164] Feature/extend asset profile data in financial modeling prep service (#4206) * Extend asset profile data * Update changelog --- CHANGELOG.md | 1 + .../financial-modeling-prep.service.ts | 182 +++++++++++++++++- 2 files changed, 178 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07b37e80b..bbcbeb7db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Extended the asset profile data in the _Financial Modeling Prep_ service - Extended the search by `isin` in the _Financial Modeling Prep_ service - Switched to _ESLint_’s flat config format - Upgraded `eslint` dependencies diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index edde92cbb..af8a9e9a2 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -1,4 +1,5 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; +import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { DataProviderInterface, GetDividendsParams, @@ -10,7 +11,6 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { DataProviderInfo, @@ -19,8 +19,14 @@ import { } from '@ghostfolio/common/interfaces'; import { Injectable, Logger } from '@nestjs/common'; -import { DataSource, SymbolProfile } from '@prisma/client'; +import { + AssetClass, + AssetSubClass, + DataSource, + SymbolProfile +} from '@prisma/client'; import { isISIN } from 'class-validator'; +import { countries } from 'countries-list'; import { format, isAfter, isBefore, isSameDay } from 'date-fns'; @Injectable() @@ -29,7 +35,8 @@ export class FinancialModelingPrepService implements DataProviderInterface { private readonly URL = this.getUrl({ version: 3 }); public constructor( - private readonly configurationService: ConfigurationService + private readonly configurationService: ConfigurationService, + private readonly cryptocurrencyService: CryptocurrencyService ) { this.apiKey = this.configurationService.get( 'API_KEY_FINANCIAL_MODELING_PREP' @@ -45,10 +52,152 @@ export class FinancialModelingPrepService implements DataProviderInterface { }: { symbol: string; }): Promise> { - return { + const response: Partial = { symbol, dataSource: this.getName() }; + + try { + if (this.cryptocurrencyService.isCryptocurrency(symbol)) { + const [quote] = await fetch( + `${this.URL}/quote/${symbol}?apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + response.assetClass = AssetClass.LIQUIDITY; + response.assetSubClass = AssetSubClass.CRYPTOCURRENCY; + response.currency = symbol.substring(symbol.length - 3); + response.name = quote.name; + } else { + const [assetProfile] = await fetch( + `${this.URL}/profile/${symbol}?apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + const { assetClass, assetSubClass } = + this.parseAssetClass(assetProfile); + + response.assetClass = assetClass; + response.assetSubClass = assetSubClass; + + if (assetSubClass === AssetSubClass.ETF) { + const etfCountryWeightings = await fetch( + `${this.URL}/etf-country-weightings/${symbol}?apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + response.countries = etfCountryWeightings.map( + ({ country: countryName, weightPercentage }) => { + let countryCode: string; + + for (const [code, country] of Object.entries(countries)) { + if (country.name === countryName) { + countryCode = code; + break; + } + } + + return { + code: countryCode, + weight: parseFloat(weightPercentage.slice(0, -1)) / 100 + }; + } + ); + + const [portfolioDate] = await fetch( + `${this.getUrl({ version: 4 })}/etf-holdings/portfolio-date?symbol=${symbol}&apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + if (portfolioDate) { + const etfHoldings = await fetch( + `${this.getUrl({ version: 4 })}/etf-holdings?date=${portfolioDate.date}&symbol=${symbol}&apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + const sortedTopHoldings = etfHoldings + .sort((a, b) => { + return b.pctVal - a.pctVal; + }) + .slice(0, 10); + + response.holdings = sortedTopHoldings.map(({ name, pctVal }) => { + return { name, weight: pctVal / 100 }; + }); + } + + const etfSectorWeightings = await fetch( + `${this.URL}/etf-sector-weightings/${symbol}?apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + response.sectors = etfSectorWeightings.map( + ({ sector, weightPercentage }) => { + return { + name: sector, + weight: parseFloat(weightPercentage.slice(0, -1)) / 100 + }; + } + ); + } else if (assetSubClass === AssetSubClass.STOCK) { + if (assetProfile.country) { + response.countries = [{ code: assetProfile.country, weight: 1 }]; + } + + if (assetProfile.sector) { + response.sectors = [{ name: assetProfile.sector, weight: 1 }]; + } + } + + response.currency = assetProfile.currency; + + if (assetProfile.isin) { + response.isin = assetProfile.isin; + } + + response.name = assetProfile.companyName; + + if (assetProfile.website) { + response.url = assetProfile.website; + } + } + } catch (error) { + let message = error; + + if (error?.name === 'AbortError') { + message = `RequestError: The operation to get the asset profile for ${symbol} was aborted because the request to the data provider took more than ${( + this.configurationService.get('REQUEST_TIMEOUT') / 1000 + ).toFixed(3)} seconds`; + } + + Logger.error(message, 'FinancialModelingPrepService'); + } + + return response; } public getDataProviderInfo(): DataProviderInfo { @@ -131,8 +280,10 @@ export class FinancialModelingPrepService implements DataProviderInterface { ).then((res) => res.json()); for (const { price, symbol } of quotes) { + const { currency } = await this.getAssetProfile({ symbol }); + response[symbol] = { - currency: DEFAULT_CURRENCY, + currency, dataProviderInfo: this.getDataProviderInfo(), dataSource: DataSource.FINANCIAL_MODELING_PREP, marketPrice: price, @@ -223,4 +374,25 @@ export class FinancialModelingPrepService implements DataProviderInterface { private getUrl({ version }: { version: number }) { return `https://financialmodelingprep.com/api/v${version}`; } + + public parseAssetClass(profile: any): { + assetClass: AssetClass; + assetSubClass: AssetSubClass; + } { + let assetClass: AssetClass; + let assetSubClass: AssetSubClass; + + if (profile.isEtf) { + assetClass = AssetClass.EQUITY; + assetSubClass = AssetSubClass.ETF; + } else if (profile.isFund) { + assetClass = AssetClass.EQUITY; + assetSubClass = AssetSubClass.MUTUALFUND; + } else { + assetClass = AssetClass.EQUITY; + assetSubClass = AssetSubClass.STOCK; + } + + return { assetClass, assetSubClass }; + } } From 59f84aa46f83d6a32b93d99bee7c5adece395b6d Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:32:14 +0700 Subject: [PATCH 010/164] Feature/upgrade chart.js dependencies to the latest versions (#4209) * chore(deps): bump chartjs-chart-treemap from 2.3.1 to 3.1.0 * chore(deps): bump chartjs-plugin-annotation from 2.1.2 to 3.1.0 * chore(deps): bump chart.js from 4.2.0 to 4.4.7 * fix(ts): reinforce chart type safety * Update changelog --- CHANGELOG.md | 3 ++ .../portfolio-proportion-chart.component.ts | 8 +++--- .../treemap-chart/treemap-chart.component.ts | 2 +- package-lock.json | 28 +++++++++---------- package.json | 6 ++-- 5 files changed, 25 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbcbeb7db..8d3a23dc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Extended the asset profile data in the _Financial Modeling Prep_ service - Extended the search by `isin` in the _Financial Modeling Prep_ service - Switched to _ESLint_’s flat config format +- Upgraded `chart.js` from version `4.2.0` to `4.4.7` +- Upgraded `chartjs-chart-treemap` from version `2.3.1` to `3.1.0` +- Upgraded `chartjs-plugin-annotation` from version `2.1.2` to `3.1.0` - Upgraded `eslint` dependencies ## 2.134.0 - 2025-01-15 diff --git a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts index 7f914870b..6319c3cd7 100644 --- a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts +++ b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -77,7 +77,7 @@ export class GfPortfolioProportionChartComponent @ViewChild('chartCanvas') chartCanvas: ElementRef; - public chart: Chart<'pie'>; + public chart: Chart<'doughnut'>; public isLoading = true; private readonly OTHER_KEY = 'OTHER'; @@ -257,7 +257,7 @@ export class GfPortfolioProportionChartComponent }); }); - const datasets: ChartConfiguration['data']['datasets'] = [ + const datasets: ChartConfiguration<'doughnut'>['data']['datasets'] = [ { backgroundColor: chartDataSorted.map(([, item]) => { return item.color; @@ -295,7 +295,7 @@ export class GfPortfolioProportionChartComponent datasets[1].data[1] = Number.MAX_SAFE_INTEGER; } - const data: ChartConfiguration['data'] = { + const data: ChartConfiguration<'doughnut'>['data'] = { datasets, labels }; @@ -308,7 +308,7 @@ export class GfPortfolioProportionChartComponent ) as unknown; this.chart.update(); } else { - this.chart = new Chart(this.chartCanvas.nativeElement, { + this.chart = new Chart<'doughnut'>(this.chartCanvas.nativeElement, { data, options: { animation: false, diff --git a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts index 11ee026f5..4c3167c9e 100644 --- a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts +++ b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts @@ -196,7 +196,7 @@ export class GfTreemapChartComponent min: Math.min(...negativeNetPerformancePercents) }; - const data: ChartConfiguration['data'] = { + const data: ChartConfiguration<'treemap'>['data'] = { datasets: [ { backgroundColor: (ctx) => { diff --git a/package-lock.json b/package-lock.json index 34891a9b9..3eeef5dac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,10 +50,10 @@ "bull": "4.16.2", "cache-manager": "5.7.6", "cache-manager-redis-yet": "5.1.4", - "chart.js": "4.2.0", + "chart.js": "4.4.7", "chartjs-adapter-date-fns": "3.0.0", - "chartjs-chart-treemap": "2.3.1", - "chartjs-plugin-annotation": "2.1.2", + "chartjs-chart-treemap": "3.1.0", + "chartjs-plugin-annotation": "3.1.0", "chartjs-plugin-datalabels": "2.2.0", "cheerio": "1.0.0", "class-transformer": "0.5.1", @@ -14308,15 +14308,15 @@ "license": "MIT" }, "node_modules/chart.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.2.0.tgz", - "integrity": "sha512-wbtcV+QKeH0F7gQZaCJEIpsNriFheacouJQTVIjITi3eQA8bTlIBoknz0+dgV79aeKLNMAX+nDslIVE/nJ3rzA==", + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.7.tgz", + "integrity": "sha512-pwkcKfdzTMAU/+jNosKhNL2bHtJc/sSmYgVbuGTEDhzkrhmyihmP7vUc/5ZK9WopidMDHNe3Wm7jOd/WhuHWuw==", "license": "MIT", "dependencies": { "@kurkle/color": "^0.3.0" }, "engines": { - "pnpm": "^7.0.0" + "pnpm": ">=8" } }, "node_modules/chartjs-adapter-date-fns": { @@ -14330,21 +14330,21 @@ } }, "node_modules/chartjs-chart-treemap": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/chartjs-chart-treemap/-/chartjs-chart-treemap-2.3.1.tgz", - "integrity": "sha512-GW+iODLICIJhNZtHbTtaOjCwRIxmXcquXRKDFMsrkXyqyDeSN1aiVfzNNj6Xjy55soopqRA+YfHqjT2S2zF7lQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/chartjs-chart-treemap/-/chartjs-chart-treemap-3.1.0.tgz", + "integrity": "sha512-0LJxj4J9sCTHmrXCFlqtoBKMJDcS7VzFeRgNBRZRwU1QSpCXJKTNk5TysPEs5/YW0XYvZoN8u44RqqLf0pAzQw==", "license": "MIT", "peerDependencies": { "chart.js": ">=3.0.0" } }, "node_modules/chartjs-plugin-annotation": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/chartjs-plugin-annotation/-/chartjs-plugin-annotation-2.1.2.tgz", - "integrity": "sha512-kmEp2WtpogwnKKnDPO3iO3mVwvVGtmG5BkZVtAEZm5YzJ9CYxojjYEgk7OTrFbJ5vU098b84UeJRe8kRfNcq5g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-annotation/-/chartjs-plugin-annotation-3.1.0.tgz", + "integrity": "sha512-EkAed6/ycXD/7n0ShrlT1T2Hm3acnbFhgkIEJLa0X+M6S16x0zwj1Fv4suv/2bwayCT3jGPdAtI9uLcAMToaQQ==", "license": "MIT", "peerDependencies": { - "chart.js": ">=3.7.0" + "chart.js": ">=4.0.0" } }, "node_modules/chartjs-plugin-datalabels": { diff --git a/package.json b/package.json index 660efb315..e903b334a 100644 --- a/package.json +++ b/package.json @@ -96,10 +96,10 @@ "bull": "4.16.2", "cache-manager": "5.7.6", "cache-manager-redis-yet": "5.1.4", - "chart.js": "4.2.0", + "chart.js": "4.4.7", "chartjs-adapter-date-fns": "3.0.0", - "chartjs-chart-treemap": "2.3.1", - "chartjs-plugin-annotation": "2.1.2", + "chartjs-chart-treemap": "3.1.0", + "chartjs-plugin-annotation": "3.1.0", "chartjs-plugin-datalabels": "2.2.0", "cheerio": "1.0.0", "class-transformer": "0.5.1", From 4d201acdbe8ce4b8b79c31ed065aad2937d475ae Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Jan 2025 09:39:05 +0100 Subject: [PATCH 011/164] Feature/extend get dividends in financial modeling prep service (#4210) * Extend get dividends * Update changelog --- CHANGELOG.md | 3 +- .../financial-modeling-prep.service.ts | 71 +++++++++++++++++-- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d3a23dc4..9b9c31586 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Extended the asset profile data in the _Financial Modeling Prep_ service -- Extended the search by `isin` in the _Financial Modeling Prep_ service +- Extended the _Financial Modeling Prep_ service - Switched to _ESLint_’s flat config format - Upgraded `chart.js` from version `4.2.0` to `4.4.7` - Upgraded `chartjs-chart-treemap` from version `2.3.1` to `3.1.0` diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index af8a9e9a2..386bcc8d4 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -11,6 +11,7 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; +import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { DataProviderInfo, @@ -27,7 +28,14 @@ import { } from '@prisma/client'; import { isISIN } from 'class-validator'; import { countries } from 'countries-list'; -import { format, isAfter, isBefore, isSameDay } from 'date-fns'; +import { + addDays, + format, + isAfter, + isBefore, + isSameDay, + parseISO +} from 'date-fns'; @Injectable() export class FinancialModelingPrepService implements DataProviderInterface { @@ -58,7 +66,10 @@ export class FinancialModelingPrepService implements DataProviderInterface { }; try { - if (this.cryptocurrencyService.isCryptocurrency(symbol)) { + if ( + symbol.endsWith(DEFAULT_CURRENCY) && + this.cryptocurrencyService.isCryptocurrency(symbol) + ) { const [quote] = await fetch( `${this.URL}/quote/${symbol}?apikey=${this.apiKey}`, { @@ -208,8 +219,54 @@ export class FinancialModelingPrepService implements DataProviderInterface { }; } - public async getDividends({}: GetDividendsParams) { - return {}; + public async getDividends({ + from, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), + symbol, + to + }: GetDividendsParams) { + if (isSameDay(from, to)) { + to = addDays(to, 1); + } + + try { + const response: { + [date: string]: IDataProviderHistoricalResponse; + } = {}; + + const { historical } = await fetch( + `${this.URL}/historical-price-full/stock_dividend/${symbol}?apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout(requestTimeout) + } + ).then((res) => res.json()); + + historical + .filter(({ date }) => { + return ( + (isSameDay(parseISO(date), from) || + isAfter(parseISO(date), from)) && + isBefore(parseISO(date), to) + ); + }) + .forEach(({ adjDividend, date }) => { + response[date] = { + marketPrice: adjDividend + }; + }); + + return response; + } catch (error) { + Logger.error( + `Could not get dividends for ${symbol} (${this.getName()}) from ${format( + from, + DATE_FORMAT + )} to ${format(to, DATE_FORMAT)}: [${error.name}] ${error.message}`, + 'FinancialModelingPrepService' + ); + + return {}; + } } public async getHistorical({ @@ -234,14 +291,14 @@ export class FinancialModelingPrepService implements DataProviderInterface { [symbol]: {} }; - for (const { close, date } of historical) { + for (const { adjClose, date } of historical) { if ( (isSameDay(parseDate(date), from) || isAfter(parseDate(date), from)) && isBefore(parseDate(date), to) ) { result[symbol][date] = { - marketPrice: close + marketPrice: adjClose }; } } @@ -375,7 +432,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { return `https://financialmodelingprep.com/api/v${version}`; } - public parseAssetClass(profile: any): { + private parseAssetClass(profile: any): { assetClass: AssetClass; assetSubClass: AssetSubClass; } { From e3633aaa30b982167432214845417272bf23a354 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Jan 2025 09:49:00 +0100 Subject: [PATCH 012/164] Feature/upgrade UUID to version 11.0.5 (#4201) * Upgrade uuid to version 11.0.5 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b9c31586..3179e16a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `chartjs-chart-treemap` from version `2.3.1` to `3.1.0` - Upgraded `chartjs-plugin-annotation` from version `2.1.2` to `3.1.0` - Upgraded `eslint` dependencies +- Upgraded `uuid` from version `11.0.2` to `11.0.5` ## 2.134.0 - 2025-01-15 diff --git a/package-lock.json b/package-lock.json index 3eeef5dac..58f10cb0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -88,7 +88,7 @@ "stripe": "17.3.0", "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", - "uuid": "11.0.2", + "uuid": "11.0.5", "yahoo-finance2": "2.11.3", "zone.js": "0.15.0" }, @@ -31809,9 +31809,9 @@ } }, "node_modules/uuid": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.2.tgz", - "integrity": "sha512-14FfcOJmqdjbBPdDjFQyk/SdT4NySW4eM0zcG+HqbHP5jzuH56xO3J1DGhgs/cEMCfwYi3HQI1gnTO62iaG+tQ==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", + "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" diff --git a/package.json b/package.json index e903b334a..bb9bcb1a8 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "stripe": "17.3.0", "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", - "uuid": "11.0.2", + "uuid": "11.0.5", "yahoo-finance2": "2.11.3", "zone.js": "0.15.0" }, From 4e51a973c782dcf31eab84689ef77146e256de38 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Jan 2025 09:57:54 +0100 Subject: [PATCH 013/164] Feature/refactor is cryptocurrency check (#4215) * Refactoring --- .../src/services/cryptocurrency/cryptocurrency.service.ts | 8 +++++++- .../financial-modeling-prep.service.ts | 6 +----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/api/src/services/cryptocurrency/cryptocurrency.service.ts b/apps/api/src/services/cryptocurrency/cryptocurrency.service.ts index db5cf0876..b814fc186 100644 --- a/apps/api/src/services/cryptocurrency/cryptocurrency.service.ts +++ b/apps/api/src/services/cryptocurrency/cryptocurrency.service.ts @@ -1,3 +1,5 @@ +import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; + import { Injectable } from '@nestjs/common'; const cryptocurrencies = require('../../assets/cryptocurrencies/cryptocurrencies.json'); @@ -9,7 +11,11 @@ export class CryptocurrencyService { public isCryptocurrency(aSymbol = '') { const cryptocurrencySymbol = aSymbol.substring(0, aSymbol.length - 3); - return this.getCryptocurrencies().includes(cryptocurrencySymbol); + + return ( + aSymbol.endsWith(DEFAULT_CURRENCY) && + this.getCryptocurrencies().includes(cryptocurrencySymbol) + ); } private getCryptocurrencies() { diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index 386bcc8d4..ac6b5822e 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -11,7 +11,6 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { DEFAULT_CURRENCY } from '@ghostfolio/common/config'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { DataProviderInfo, @@ -66,10 +65,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { }; try { - if ( - symbol.endsWith(DEFAULT_CURRENCY) && - this.cryptocurrencyService.isCryptocurrency(symbol) - ) { + if (this.cryptocurrencyService.isCryptocurrency(symbol)) { const [quote] = await fetch( `${this.URL}/quote/${symbol}?apikey=${this.apiKey}`, { From 6f16e0a650860d7267bdb5bba460505614103b96 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sun, 19 Jan 2025 16:08:45 +0700 Subject: [PATCH 014/164] Feature/upgrade to NestJS 10.4 (#4213) * chore(deps): bump nestjs packages to latest v10 * chore(deps): bump bull from 4.16.2 to 4.16.4 * chore(deps-dev): bump tslib from 2.6.0 to 2.8.1 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 1043 +++++++++------------------------------------ package.json | 28 +- 3 files changed, 216 insertions(+), 856 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3179e16a6..304478425 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `chartjs-chart-treemap` from version `2.3.1` to `3.1.0` - Upgraded `chartjs-plugin-annotation` from version `2.1.2` to `3.1.0` - Upgraded `eslint` dependencies +- Upgraded `nestjs` from version `10.1.3` to `10.4.15` - Upgraded `uuid` from version `11.0.2` to `11.0.5` ## 2.134.0 - 2025-01-15 diff --git a/package-lock.json b/package-lock.json index 58f10cb0c..0190bfeaf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,17 +29,17 @@ "@dfinity/principal": "0.15.7", "@dinero.js/currencies": "2.0.0-alpha.8", "@internationalized/number": "3.6.0", - "@nestjs/bull": "10.0.1", - "@nestjs/cache-manager": "2.2.2", - "@nestjs/common": "10.1.3", - "@nestjs/config": "3.0.0", - "@nestjs/core": "10.1.3", - "@nestjs/event-emitter": "2.0.4", - "@nestjs/jwt": "10.1.0", + "@nestjs/bull": "10.2.3", + "@nestjs/cache-manager": "2.3.0", + "@nestjs/common": "10.4.15", + "@nestjs/config": "3.3.0", + "@nestjs/core": "10.4.15", + "@nestjs/event-emitter": "2.1.1", + "@nestjs/jwt": "10.2.0", "@nestjs/passport": "10.0.3", - "@nestjs/platform-express": "10.1.3", - "@nestjs/schedule": "3.0.2", - "@nestjs/serve-static": "4.0.0", + "@nestjs/platform-express": "10.4.15", + "@nestjs/schedule": "4.1.2", + "@nestjs/serve-static": "4.0.2", "@prisma/client": "6.2.1", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", @@ -47,7 +47,7 @@ "alphavantage": "2.2.0", "big.js": "6.2.2", "bootstrap": "4.6.0", - "bull": "4.16.2", + "bull": "4.16.4", "cache-manager": "5.7.6", "cache-manager-redis-yet": "5.1.4", "chart.js": "4.4.7", @@ -106,8 +106,8 @@ "@angular/pwa": "19.0.6", "@eslint/eslintrc": "3.2.0", "@eslint/js": "9.18.0", - "@nestjs/schematics": "10.0.1", - "@nestjs/testing": "10.1.3", + "@nestjs/schematics": "10.2.3", + "@nestjs/testing": "10.4.15", "@nx/angular": "20.3.0", "@nx/cypress": "20.3.0", "@nx/eslint-plugin": "20.3.0", @@ -159,7 +159,7 @@ "storybook": "8.4.7", "ts-jest": "29.1.0", "ts-node": "10.9.2", - "tslib": "2.6.0", + "tslib": "2.8.1", "typescript": "5.6.3", "webpack-bundle-analyzer": "4.10.2" }, @@ -1274,12 +1274,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular-devkit/build-angular/node_modules/tslib": { - "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/@angular-devkit/build-angular/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -1550,12 +1544,6 @@ "@angular/core": "19.0.5" } }, - "node_modules/@angular/animations/node_modules/tslib": { - "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/@angular/build": { "version": "19.0.6", "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.0.6.tgz", @@ -2094,12 +2082,6 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular/cdk/node_modules/tslib": { - "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/@angular/cli": { "version": "19.0.6", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.0.6.tgz", @@ -2191,12 +2173,6 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular/common/node_modules/tslib": { - "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/@angular/compiler": { "version": "19.0.5", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.0.5.tgz", @@ -2257,18 +2233,6 @@ "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "license": "Apache-2.0" }, - "node_modules/@angular/compiler-cli/node_modules/tslib": { - "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/@angular/compiler/node_modules/tslib": { - "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/@angular/core": { "version": "19.0.5", "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.0.5.tgz", @@ -2285,12 +2249,6 @@ "zone.js": "~0.15.0" } }, - "node_modules/@angular/core/node_modules/tslib": { - "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/@angular/forms": { "version": "19.0.5", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.0.5.tgz", @@ -2309,12 +2267,6 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular/forms/node_modules/tslib": { - "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/@angular/language-service": { "version": "19.0.5", "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-19.0.5.tgz", @@ -2368,12 +2320,6 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular/material/node_modules/tslib": { - "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/@angular/platform-browser": { "version": "19.0.5", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.0.5.tgz", @@ -2414,18 +2360,6 @@ "@angular/platform-browser": "19.0.5" } }, - "node_modules/@angular/platform-browser-dynamic/node_modules/tslib": { - "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/@angular/platform-browser/node_modules/tslib": { - "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/@angular/pwa": { "version": "19.0.6", "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-19.0.6.tgz", @@ -2469,12 +2403,6 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular/router/node_modules/tslib": { - "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/@angular/service-worker": { "version": "19.0.5", "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-19.0.5.tgz", @@ -2494,12 +2422,6 @@ "@angular/core": "19.0.5" } }, - "node_modules/@angular/service-worker/node_modules/tslib": { - "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/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -4722,13 +4644,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@emnapi/core/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@emnapi/runtime": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", @@ -4739,13 +4654,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@emnapi/runtime/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@emnapi/wasi-threads": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", @@ -4756,13 +4664,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@emnapi/wasi-threads/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.24.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", @@ -6740,13 +6641,13 @@ } }, "node_modules/@nestjs/bull": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-10.0.1.tgz", - "integrity": "sha512-1GcJ8BkHDgQdBMZ7SqAqgUHiFnISXmpGvewFeTc8wf87JLk2PweiKv9j9/KQKU+NI237pCe82XB0bXzTnsdxSw==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-10.2.3.tgz", + "integrity": "sha512-Gy90JjFCfYhWFBeoBSidc7rEEf2BNhkJ3RfK8ym589POOldwAra2xcnFBi0ZuhhOV60GcrCJBBkdrUbAMM670w==", "license": "MIT", "dependencies": { - "@nestjs/bull-shared": "^10.0.1", - "tslib": "2.6.0" + "@nestjs/bull-shared": "^10.2.3", + "tslib": "2.8.1" }, "peerDependencies": { "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", @@ -6767,16 +6668,10 @@ "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0" } }, - "node_modules/@nestjs/bull-shared/node_modules/tslib": { - "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/@nestjs/cache-manager": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-2.2.2.tgz", - "integrity": "sha512-+n7rpU1QABeW2WV17Dl1vZCG3vWjJU1MaamWgZvbGxYE9EeCM0lVLfw3z7acgDTNwOy+K68xuQPoIMxD0bhjlA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-2.3.0.tgz", + "integrity": "sha512-pxeBp9w/s99HaW2+pezM1P3fLiWmUEnTUoUMLa9UYViCtjj0E0A19W/vaT5JFACCzFIeNrwH4/16jkpAhQ25Vw==", "license": "MIT", "peerDependencies": { "@nestjs/common": "^9.0.0 || ^10.0.0", @@ -6786,13 +6681,13 @@ } }, "node_modules/@nestjs/common": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.1.3.tgz", - "integrity": "sha512-xSyXBwgcmiFwQqek1Urw/AL3pRPq9bp/tpgfTxmnJg3gP6XNUbx1fDr0de50irXgZYzFKfVFo9ptC3b2du5YKA==", + "version": "10.4.15", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.4.15.tgz", + "integrity": "sha512-vaLg1ZgwhG29BuLDxPA9OAcIlgqzp9/N8iG0wGapyUNTf4IY4O6zAHgN6QalwLhFxq7nOI021vdRojR1oF3bqg==", "license": "MIT", "dependencies": { "iterare": "1.2.1", - "tslib": "2.6.1", + "tslib": "2.8.1", "uid": "2.0.2" }, "funding": { @@ -6802,7 +6697,7 @@ "peerDependencies": { "class-transformer": "*", "class-validator": "*", - "reflect-metadata": "^0.1.12", + "reflect-metadata": "^0.1.12 || ^0.2.0", "rxjs": "^7.1.0" }, "peerDependenciesMeta": { @@ -6814,61 +6709,45 @@ } } }, - "node_modules/@nestjs/common/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "license": "0BSD" - }, "node_modules/@nestjs/config": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.0.0.tgz", - "integrity": "sha512-fzASk1Uv6AjdE6uA1na8zpqRCXAhRpcfgpCVv3SAKlgJ3VR3bEjcI4G17WHLgLBsmPzI1ofdkSI451WLD1F1Rw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.3.0.tgz", + "integrity": "sha512-pdGTp8m9d0ZCrjTpjkUbZx6gyf2IKf+7zlkrPNMsJzYZ4bFRRTpXrnj+556/5uiI6AfL5mMrJc2u7dB6bvM+VA==", "license": "MIT", "dependencies": { - "dotenv": "16.1.4", + "dotenv": "16.4.5", "dotenv-expand": "10.0.0", - "lodash": "4.17.21", - "uuid": "9.0.0" + "lodash": "4.17.21" }, "peerDependencies": { "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "reflect-metadata": "^0.1.13" + "rxjs": "^7.1.0" } }, "node_modules/@nestjs/config/node_modules/dotenv": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz", - "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "license": "BSD-2-Clause", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/@nestjs/config/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==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "url": "https://dotenvx.com" } }, "node_modules/@nestjs/core": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.1.3.tgz", - "integrity": "sha512-VzK54TuacC3Vmq3b5xTyMVTlDNJeKbjpKfV9fNqm4TbIBm8ZPo3FC0osJAbAK4XwbVvv2Flq1yA3CutasupVjw==", + "version": "10.4.15", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.15.tgz", + "integrity": "sha512-UBejmdiYwaH6fTsz2QFBlC1cJHM+3UDeLZN+CiP9I1fRv2KlBZsmozGLbV5eS1JAVWJB4T5N5yQ0gjN8ZvcS2w==", "hasInstallScript": true, "license": "MIT", "dependencies": { "@nuxtjs/opencollective": "0.3.2", "fast-safe-stringify": "2.1.1", "iterare": "1.2.1", - "path-to-regexp": "3.2.0", - "tslib": "2.6.1", + "path-to-regexp": "3.3.0", + "tslib": "2.8.1", "uid": "2.0.2" }, "funding": { @@ -6880,7 +6759,7 @@ "@nestjs/microservices": "^10.0.0", "@nestjs/platform-express": "^10.0.0", "@nestjs/websockets": "^10.0.0", - "reflect-metadata": "^0.1.12", + "reflect-metadata": "^0.1.12 || ^0.2.0", "rxjs": "^7.1.0" }, "peerDependenciesMeta": { @@ -6896,21 +6775,15 @@ } }, "node_modules/@nestjs/core/node_modules/path-to-regexp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", - "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", "license": "MIT" }, - "node_modules/@nestjs/core/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "license": "0BSD" - }, "node_modules/@nestjs/event-emitter": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.0.4.tgz", - "integrity": "sha512-quMiw8yOwoSul0pp3mOonGz8EyXWHSBTqBy8B0TbYYgpnG1Ix2wGUnuTksLWaaBiiOTDhciaZ41Y5fJZsSJE1Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.1.1.tgz", + "integrity": "sha512-6L6fBOZTyfFlL7Ih/JDdqlCzZeCW0RjCX28wnzGyg/ncv5F/EOeT1dfopQr1loBRQ3LTgu8OWM7n4zLN4xigsg==", "license": "MIT", "dependencies": { "eventemitter2": "6.4.9" @@ -6921,13 +6794,13 @@ } }, "node_modules/@nestjs/jwt": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.1.0.tgz", - "integrity": "sha512-iLwCGS25ybUxGS7i5j/Mwuyzvp/WxJftHlm8aLEBv5GV92apz6L1QVjxLdZrqXbzo++C8gdJauhzil8qitY+6w==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz", + "integrity": "sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==", "license": "MIT", "dependencies": { - "@types/jsonwebtoken": "9.0.2", - "jsonwebtoken": "9.0.0" + "@types/jsonwebtoken": "9.0.5", + "jsonwebtoken": "9.0.2" }, "peerDependencies": { "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0" @@ -6944,16 +6817,16 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.1.3.tgz", - "integrity": "sha512-RSf7ooCrxiWJlWl3CLfpaYmAf3U0tRsN7pJakujWdvzVJU2EzVZTLcy1MtnSg/HBm9/Rvg98VI5QI6oOhOpt+A==", + "version": "10.4.15", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.15.tgz", + "integrity": "sha512-63ZZPkXHjoDyO7ahGOVcybZCRa7/Scp6mObQKjcX/fTEq1YJeU75ELvMsuQgc8U2opMGOBD7GVuc4DV0oeDHoA==", "license": "MIT", "dependencies": { - "body-parser": "1.20.2", + "body-parser": "1.20.3", "cors": "2.8.5", - "express": "4.18.2", + "express": "4.21.2", "multer": "1.4.4-lts.1", - "tslib": "2.6.1" + "tslib": "2.8.1" }, "funding": { "type": "opencollective", @@ -6964,209 +6837,44 @@ "@nestjs/core": "^10.0.0" } }, - "node_modules/@nestjs/platform-express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@nestjs/platform-express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@nestjs/platform-express/node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/@nestjs/platform-express/node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/@nestjs/platform-express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@nestjs/platform-express/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@nestjs/platform-express/node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "license": "MIT" - }, - "node_modules/@nestjs/platform-express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/@nestjs/platform-express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "license": "MIT" - }, - "node_modules/@nestjs/platform-express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@nestjs/platform-express/node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/@nestjs/platform-express/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "license": "0BSD" - }, "node_modules/@nestjs/schedule": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-3.0.2.tgz", - "integrity": "sha512-INhpzkyquosLbVrXx4v+rfAnomwBTgKQvs7e9BZ2LSZdWQOqCQD2PmvWDiu8c4wdJIH6wcWQh98w5KxIcKuVBA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-4.1.2.tgz", + "integrity": "sha512-hCTQ1lNjIA5EHxeu8VvQu2Ed2DBLS1GSC6uKPYlBiQe6LL9a7zfE9iVSK+zuK8E2odsApteEBmfAQchc8Hx0Gg==", "license": "MIT", "dependencies": { - "cron": "2.4.0", - "uuid": "9.0.0" + "cron": "3.2.1", + "uuid": "11.0.3" }, "peerDependencies": { "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", - "reflect-metadata": "^0.1.12" + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0" } }, "node_modules/@nestjs/schedule/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==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz", + "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/@nestjs/schematics": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.1.tgz", - "integrity": "sha512-buxpYtSwOmWyf0nUJWJCkCkYITwbOfIEKHTnGS7sDbcfaajrOFXb5pPAGD2E1CUb3C1+NkQIURPKzs0IouZTQg==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz", + "integrity": "sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "16.1.0", - "@angular-devkit/schematics": "16.1.0", - "comment-json": "4.2.3", - "jsonc-parser": "3.2.0", + "@angular-devkit/core": "17.3.11", + "@angular-devkit/schematics": "17.3.11", + "comment-json": "4.2.5", + "jsonc-parser": "3.3.1", "pluralize": "8.0.0" }, "peerDependencies": { @@ -7174,20 +6882,21 @@ } }, "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.0.tgz", - "integrity": "sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q==", + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz", + "integrity": "sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", + "jsonc-parser": "3.2.1", + "picomatch": "4.0.1", "rxjs": "7.8.1", "source-map": "0.7.4" }, "engines": { - "node": "^16.14.0 || >=18.10.0", + "node": "^18.13.0 || >=20.9.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, @@ -7200,25 +6909,39 @@ } } }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core/node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true, + "license": "MIT" + }, "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.0.tgz", - "integrity": "sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A==", + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.11.tgz", + "integrity": "sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "16.1.0", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.0", + "@angular-devkit/core": "17.3.11", + "jsonc-parser": "3.2.1", + "magic-string": "0.30.8", "ora": "5.4.1", "rxjs": "7.8.1" }, "engines": { - "node": "^16.14.0 || >=18.10.0", + "node": "^18.13.0 || >=20.9.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics/node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true, + "license": "MIT" + }, "node_modules/@nestjs/schematics/node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -7278,16 +7001,34 @@ "node": ">= 6" } }, + "node_modules/@nestjs/schematics/node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nestjs/schematics/node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@nestjs/schematics/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -7308,6 +7049,21 @@ "node": ">=8.10.0" } }, + "node_modules/@nestjs/schematics/node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@nestjs/schematics/node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -7329,15 +7085,15 @@ } }, "node_modules/@nestjs/serve-static": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-4.0.0.tgz", - "integrity": "sha512-8cTrNV2ngdHIjiLNsXePnw0+KY1ThrZGz/WeyAG5gIvmZNDbnZBOrPoYlKL+MOzlXlQStxR5jKLYmn+nJeoncQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-4.0.2.tgz", + "integrity": "sha512-cT0vdWN5ar7jDI2NKbhf4LcwJzU4vS5sVpMkVrHuyLcltbrz6JdGi1TfIMMatP2pNiq5Ie/uUdPSFDVaZX/URQ==", "license": "MIT", "dependencies": { "path-to-regexp": "0.2.5" }, "peerDependencies": { - "@fastify/static": "^6.5.0", + "@fastify/static": "^6.5.0 || ^7.0.0", "@nestjs/common": "^9.0.0 || ^10.0.0", "@nestjs/core": "^9.0.0 || ^10.0.0", "express": "^4.18.1", @@ -7362,13 +7118,13 @@ "license": "MIT" }, "node_modules/@nestjs/testing": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.1.3.tgz", - "integrity": "sha512-zMrO9xLPYnKtC6q1diWubuMshIp0v2aGHa58jcIfZaAlJlU/6RKsgCOiFQ42aFzxUEBRWF0LBF0aiwt04LKMyQ==", + "version": "10.4.15", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.15.tgz", + "integrity": "sha512-eGlWESkACMKti+iZk1hs6FUY/UqObmMaa8HAN9JLnaYkoLf1Jeh+EuHlGnfqo/Rq77oznNLIyaA3PFjrFDlNUg==", "dev": true, "license": "MIT", "dependencies": { - "tslib": "2.6.1" + "tslib": "2.8.1" }, "funding": { "type": "opencollective", @@ -7389,13 +7145,6 @@ } } }, - "node_modules/@nestjs/testing/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -7730,13 +7479,6 @@ "@napi-rs/nice": "^1.0.1" } }, - "node_modules/@nx/angular/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/angular/node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", @@ -7775,13 +7517,6 @@ } } }, - "node_modules/@nx/cypress/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/devkit": { "version": "20.3.0", "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-20.3.0.tgz", @@ -7818,13 +7553,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nx/devkit/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/eslint": { "version": "20.3.0", "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-20.3.0.tgz", @@ -7889,20 +7617,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nx/eslint-plugin/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@nx/eslint/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/jest": { "version": "20.3.0", "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-20.3.0.tgz", @@ -7943,13 +7657,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nx/jest/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/js": { "version": "20.3.0", "resolved": "https://registry.npmjs.org/@nx/js/-/js-20.3.0.tgz", @@ -8159,13 +7866,6 @@ } } }, - "node_modules/@nx/js/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/js/node_modules/validate-npm-package-name": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", @@ -8361,13 +8061,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/@nx/module-federation/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/module-federation/node_modules/webpack": { "version": "5.88.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz", @@ -8602,13 +8295,6 @@ "node": ">= 8" } }, - "node_modules/@nx/nest/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/node": { "version": "20.3.0", "resolved": "https://registry.npmjs.org/@nx/node/-/node-20.3.0.tgz", @@ -8623,13 +8309,6 @@ "tslib": "^2.3.0" } }, - "node_modules/@nx/node/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/nx-darwin-arm64": { "version": "20.3.0", "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.3.0.tgz", @@ -8663,13 +8342,6 @@ "tslib": "^2.3.0" } }, - "node_modules/@nx/storybook/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/web": { "version": "20.3.0", "resolved": "https://registry.npmjs.org/@nx/web/-/web-20.3.0.tgz", @@ -8685,13 +8357,6 @@ "tslib": "^2.3.0" } }, - "node_modules/@nx/web/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/webpack": { "version": "20.3.0", "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-20.3.0.tgz", @@ -8917,13 +8582,6 @@ "node": ">=10.13.0" } }, - "node_modules/@nx/webpack/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nx/webpack/node_modules/webpack-dev-server": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.0.tgz", @@ -9021,13 +8679,6 @@ "yargs-parser": "21.1.1" } }, - "node_modules/@nx/workspace/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@parcel/watcher": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", @@ -9095,12 +8746,6 @@ "tslib": "^2.8.1" } }, - "node_modules/@peculiar/asn1-android/node_modules/tslib": { - "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/@peculiar/asn1-ecc": { "version": "2.3.15", "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.15.tgz", @@ -9113,12 +8758,6 @@ "tslib": "^2.8.1" } }, - "node_modules/@peculiar/asn1-ecc/node_modules/tslib": { - "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/@peculiar/asn1-rsa": { "version": "2.3.15", "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.15.tgz", @@ -9131,12 +8770,6 @@ "tslib": "^2.8.1" } }, - "node_modules/@peculiar/asn1-rsa/node_modules/tslib": { - "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/@peculiar/asn1-schema": { "version": "2.3.15", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.15.tgz", @@ -9148,12 +8781,6 @@ "tslib": "^2.8.1" } }, - "node_modules/@peculiar/asn1-schema/node_modules/tslib": { - "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/@peculiar/asn1-x509": { "version": "2.3.15", "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.15.tgz", @@ -9166,12 +8793,6 @@ "tslib": "^2.8.1" } }, - "node_modules/@peculiar/asn1-x509/node_modules/tslib": { - "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/@peculiar/json-schema": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", @@ -9202,13 +8823,6 @@ "node": ">=10.12.0" } }, - "node_modules/@peculiar/webcrypto/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true - }, "node_modules/@phenomnomnominal/tsquery": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", @@ -10730,12 +10344,6 @@ "tslib": "^2.8.0" } }, - "node_modules/@swc/helpers/node_modules/tslib": { - "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/@testing-library/dom": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", @@ -11107,13 +10715,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@tybys/wasm-util/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -11582,30 +11183,15 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/jsonwebtoken/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@types/jsonwebtoken": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", + "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==", "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "@types/node": "*" } }, - "node_modules/@types/jsonwebtoken/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, "node_modules/@types/lodash": { "version": "4.17.7", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", @@ -11613,6 +11199,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/luxon": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", + "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", + "license": "MIT" + }, "node_modules/@types/mdast": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", @@ -12540,13 +12132,6 @@ "node": ">=18.12.0" } }, - "node_modules/@yarnpkg/parsers/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/@zkochan/js-yaml": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", @@ -13075,12 +12660,6 @@ "node": ">=12.0.0" } }, - "node_modules/asn1js/node_modules/tslib": { - "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/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -13663,9 +13242,9 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -13676,7 +13255,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -13915,16 +13494,16 @@ } }, "node_modules/bull": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/bull/-/bull-4.16.2.tgz", - "integrity": "sha512-VCy33UdPGiIoZHDTrslGXKXWxcIUHNH5Z82pihr8HicbIfAH4SHug1HxlwKEbibVv85hq8rJ9tKAW/cuxv2T0A==", + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/bull/-/bull-4.16.4.tgz", + "integrity": "sha512-CF+nGsJyfsCC9MJL8hFxqXzbwq+jGBXhaz1j15G+5N/XtKIPFUUy5O1mfWWKbKunfuH/x+UV4NYRQDHSkjCOgA==", "license": "MIT", "dependencies": { "cron-parser": "^4.2.1", "get-port": "^5.1.1", "ioredis": "^5.3.2", "lodash": "^4.17.21", - "msgpackr": "^1.10.1", + "msgpackr": "^1.11.2", "semver": "^7.5.2", "uuid": "^8.3.0" }, @@ -14176,13 +13755,6 @@ "tslib": "^2.0.3" } }, - "node_modules/camel-case/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "devOptional": true, - "license": "0BSD" - }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -14930,9 +14502,9 @@ "license": "MIT" }, "node_modules/comment-json": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", - "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", + "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", "dev": true, "license": "MIT", "dependencies": { @@ -15372,12 +14944,13 @@ "license": "MIT" }, "node_modules/cron": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cron/-/cron-2.4.0.tgz", - "integrity": "sha512-Cx77ic1TyIAtUggr0oAhtS8MLzPBUqGNIvdDM7jE3oFIxfe8LXWI9q3iQN/H2CebAiMir53LQKWOhEKnzkJTAQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cron/-/cron-3.2.1.tgz", + "integrity": "sha512-w2n5l49GMmmkBFEsH9FIDhjZ1n1QgTMOCMGuQtOXs5veNiosZmso6bQGuqOJSYAXXrG84WQFVneNk+Yt0Ua9iw==", "license": "MIT", "dependencies": { - "luxon": "^3.2.1" + "@types/luxon": "~3.4.0", + "luxon": "~3.5.0" } }, "node_modules/cron-parser": { @@ -16930,13 +16503,6 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-case/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "devOptional": true, - "license": "0BSD" - }, "node_modules/dotenv": { "version": "16.4.7", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", @@ -17091,6 +16657,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -18255,30 +17822,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -18297,39 +17840,12 @@ "node": ">= 0.8" } }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/express/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/express/node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -22808,15 +22324,21 @@ } }, "node_modules/jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "license": "MIT", "dependencies": { "jws": "^3.2.2", - "lodash": "^4.17.21", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">=12", @@ -23106,12 +22628,6 @@ "source-map": "~0.6.0" } }, - "node_modules/less/node_modules/tslib": { - "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/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -24138,13 +23654,6 @@ "tslib": "^2.0.3" } }, - "node_modules/lower-case/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "devOptional": true, - "license": "0BSD" - }, "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -25403,12 +24912,6 @@ "@angular/core": "^19.0.0" } }, - "node_modules/ngx-device-detector/node_modules/tslib": { - "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/ngx-markdown": { "version": "19.0.0", "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-19.0.0.tgz", @@ -25433,12 +24936,6 @@ "zone.js": "~0.15.0" } }, - "node_modules/ngx-markdown/node_modules/tslib": { - "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/ngx-skeleton-loader": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-9.0.0.tgz", @@ -25452,12 +24949,6 @@ "@angular/core": ">=16.0.0" } }, - "node_modules/ngx-skeleton-loader/node_modules/tslib": { - "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/ngx-stripe": { "version": "19.0.0", "resolved": "https://registry.npmjs.org/ngx-stripe/-/ngx-stripe-19.0.0.tgz", @@ -25472,12 +24963,6 @@ "@stripe/stripe-js": ">=5.0.0 <6.0.0" } }, - "node_modules/ngx-stripe/node_modules/tslib": { - "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/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -25489,13 +24974,6 @@ "tslib": "^2.0.3" } }, - "node_modules/no-case/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "devOptional": true, - "license": "0BSD" - }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", @@ -26092,13 +25570,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/nx/node_modules/yaml": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", @@ -26645,13 +26116,6 @@ "tslib": "^2.0.3" } }, - "node_modules/param-case/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "devOptional": true, - "license": "0BSD" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -26790,13 +26254,6 @@ "tslib": "^2.0.3" } }, - "node_modules/pascal-case/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "devOptional": true, - "license": "0BSD" - }, "node_modules/passport": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", @@ -26847,34 +26304,6 @@ "passport-strategy": "^1.0.0" } }, - "node_modules/passport-jwt/node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/passport-jwt/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, "node_modules/passport-oauth2": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz", @@ -28062,12 +27491,6 @@ "tslib": "^2.8.1" } }, - "node_modules/pvtsutils/node_modules/tslib": { - "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/pvutils": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", @@ -28078,12 +27501,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -28977,12 +28400,6 @@ "tslib": "^2.1.0" } }, - "node_modules/rxjs/node_modules/tslib": { - "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/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -29193,51 +28610,6 @@ "semver": "bin/semver" } }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -31102,9 +30474,9 @@ } }, "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "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/tslint": { @@ -32557,13 +31929,6 @@ "tslib": "^2.7.0" } }, - "node_modules/webcrypto-core/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -32822,12 +32187,6 @@ "tslib": "2" } }, - "node_modules/webpack-dev-middleware/node_modules/tslib": { - "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/webpack-dev-server": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.1.0.tgz", diff --git a/package.json b/package.json index bb9bcb1a8..c75b630c8 100644 --- a/package.json +++ b/package.json @@ -75,17 +75,17 @@ "@dfinity/principal": "0.15.7", "@dinero.js/currencies": "2.0.0-alpha.8", "@internationalized/number": "3.6.0", - "@nestjs/bull": "10.0.1", - "@nestjs/cache-manager": "2.2.2", - "@nestjs/common": "10.1.3", - "@nestjs/config": "3.0.0", - "@nestjs/core": "10.1.3", - "@nestjs/event-emitter": "2.0.4", - "@nestjs/jwt": "10.1.0", + "@nestjs/bull": "10.2.3", + "@nestjs/cache-manager": "2.3.0", + "@nestjs/common": "10.4.15", + "@nestjs/config": "3.3.0", + "@nestjs/core": "10.4.15", + "@nestjs/event-emitter": "2.1.1", + "@nestjs/jwt": "10.2.0", "@nestjs/passport": "10.0.3", - "@nestjs/platform-express": "10.1.3", - "@nestjs/schedule": "3.0.2", - "@nestjs/serve-static": "4.0.0", + "@nestjs/platform-express": "10.4.15", + "@nestjs/schedule": "4.1.2", + "@nestjs/serve-static": "4.0.2", "@prisma/client": "6.2.1", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", @@ -93,7 +93,7 @@ "alphavantage": "2.2.0", "big.js": "6.2.2", "bootstrap": "4.6.0", - "bull": "4.16.2", + "bull": "4.16.4", "cache-manager": "5.7.6", "cache-manager-redis-yet": "5.1.4", "chart.js": "4.4.7", @@ -152,8 +152,8 @@ "@angular/pwa": "19.0.6", "@eslint/eslintrc": "3.2.0", "@eslint/js": "9.18.0", - "@nestjs/schematics": "10.0.1", - "@nestjs/testing": "10.1.3", + "@nestjs/schematics": "10.2.3", + "@nestjs/testing": "10.4.15", "@nx/angular": "20.3.0", "@nx/cypress": "20.3.0", "@nx/eslint-plugin": "20.3.0", @@ -205,7 +205,7 @@ "storybook": "8.4.7", "ts-jest": "29.1.0", "ts-node": "10.9.2", - "tslib": "2.6.0", + "tslib": "2.8.1", "typescript": "5.6.3", "webpack-bundle-analyzer": "4.10.2" }, From 2e4ad7b0eadccb93bc4d026f82f6711e82638795 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Jan 2025 10:15:34 +0100 Subject: [PATCH 015/164] Feature/move language localization for Polski from experimental to general availability (#4200) * Move language localization for Polski from experimental to general availability * Update changelog --- CHANGELOG.md | 1 + apps/api/src/assets/sitemap.xml | 10 ++++------ .../user-account-settings/user-account-settings.html | 10 ++++------ apps/client/src/app/pages/features/features-page.html | 7 +++---- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 304478425..cced37c04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Moved the language localization for Polski (`pl`) from experimental to general availability - Extended the _Financial Modeling Prep_ service - Switched to _ESLint_’s flat config format - Upgraded `chart.js` from version `4.2.0` to `4.4.7` diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index 9fd989f4e..a422ff31a 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -504,12 +504,10 @@ https://ghostfol.io/pl/o-ghostfolio ${currentDate}T00:00:00+00:00 - + + https://ghostfol.io/pl/open + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/pl/rynki ${currentDate}T00:00:00+00:00 diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.html b/apps/client/src/app/components/user-account-settings/user-account-settings.html index b0b8c227e..8bd2efd1f 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.html +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -100,12 +100,10 @@ >Nederlands (Community) - @if (user?.settings?.isExperimentalFeatures) { - Polski (Community) - } + Polski (Community) Português (Community)Multi-Language

Use Ghostfolio in multiple languages: English, - + - Dutch, French, German, Italian, - - Portuguese, Spanish and Turkish + Dutch, French, German, Italian, Polish, Portuguese, Spanish + and Turkish are currently supported.

From 7481296e768ccfe16e1008b52533f0f250f6a3ad Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Jan 2025 10:27:11 +0100 Subject: [PATCH 016/164] Feature/upgrade nx to version 20.3.2 (#4208) * Upgrade nx to version 20.3.2 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 989 ++++++++++++++++++++++++++-------------------- package.json | 24 +- 3 files changed, 579 insertions(+), 435 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cced37c04..e7ceee5cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `chartjs-plugin-annotation` from version `2.1.2` to `3.1.0` - Upgraded `eslint` dependencies - Upgraded `nestjs` from version `10.1.3` to `10.4.15` +- Upgraded `Nx` from version `20.3.0` to `20.3.2` - Upgraded `uuid` from version `11.0.2` to `11.0.5` ## 2.134.0 - 2025-01-15 diff --git a/package-lock.json b/package-lock.json index 0190bfeaf..a1d2e16da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -108,17 +108,17 @@ "@eslint/js": "9.18.0", "@nestjs/schematics": "10.2.3", "@nestjs/testing": "10.4.15", - "@nx/angular": "20.3.0", - "@nx/cypress": "20.3.0", - "@nx/eslint-plugin": "20.3.0", - "@nx/jest": "20.3.0", - "@nx/js": "20.3.0", - "@nx/module-federation": "20.3.0", - "@nx/nest": "20.3.0", - "@nx/node": "20.3.0", - "@nx/storybook": "20.3.0", - "@nx/web": "20.3.0", - "@nx/workspace": "20.3.0", + "@nx/angular": "20.3.2", + "@nx/cypress": "20.3.2", + "@nx/eslint-plugin": "20.3.2", + "@nx/jest": "20.3.2", + "@nx/js": "20.3.2", + "@nx/module-federation": "20.3.2", + "@nx/nest": "20.3.2", + "@nx/node": "20.3.2", + "@nx/storybook": "20.3.2", + "@nx/web": "20.3.2", + "@nx/workspace": "20.3.2", "@schematics/angular": "19.0.6", "@simplewebauthn/types": "9.0.1", "@storybook/addon-essentials": "8.4.7", @@ -148,7 +148,7 @@ "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", - "nx": "20.3.0", + "nx": "20.3.2", "prettier": "3.4.2", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "6.2.1", @@ -6345,26 +6345,26 @@ } }, "node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.7.6.tgz", - "integrity": "sha512-eD1JZDQ+h5WLdA58MmAE1DzLwvFaGJeeam3Tswc/sEUb4QGT86X4Fme+dMTBRYRoAq/tRYql3DlVTFhdmrUVzg==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.8.9.tgz", + "integrity": "sha512-gM5fnWvFfTEfh5UjSmNod1H/np/pUUjvJnnN31ucKcZ21mL6wJo0A+Vfj8a5gv34S+1n5lWR1b6eVv9CofwgDQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.7.6", + "@module-federation/sdk": "0.8.9", "@types/semver": "7.5.8", "semver": "7.6.3" } }, "node_modules/@module-federation/data-prefetch": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.7.6.tgz", - "integrity": "sha512-AMpfnuIAK/Y5M682BUsnc13ARCEKhEvb0tXF4S+l7jfL08oE9gyo+G/nk0LIzZBO2mLDz5g2AydAERanM6gswQ==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.8.9.tgz", + "integrity": "sha512-doUzJ5uuLPrN5e/NMvKuyUE/lqiZFgGzFITwBF90/KKqOq7R2ZWh43R4RJgkUYfs/F119AYXZ9jxrSphIh+cjg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.7.6", - "@module-federation/sdk": "0.7.6", + "@module-federation/runtime": "0.8.9", + "@module-federation/sdk": "0.8.9", "fs-extra": "9.1.0" }, "peerDependencies": { @@ -6373,16 +6373,16 @@ } }, "node_modules/@module-federation/dts-plugin": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.7.6.tgz", - "integrity": "sha512-K8T8+Ip+fCQkTOxAQbAW47drphN36+WcvcOusn/fsIT+1exdhyvqxSCj8V7MLCtjA9kGDi0jHIGN6MN4p2cV0Q==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.8.9.tgz", + "integrity": "sha512-Q40yqdQvTV8QRoegjUquTejhLl2gZoPv623hc8MWmGuP2vXLBIJJ9iV849LkFLeE8xaUgtwmn2uCQeBh2aJNjg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.7.6", - "@module-federation/managers": "0.7.6", - "@module-federation/sdk": "0.7.6", - "@module-federation/third-party-dts-extractor": "0.7.6", + "@module-federation/error-codes": "0.8.9", + "@module-federation/managers": "0.8.9", + "@module-federation/sdk": "0.8.9", + "@module-federation/third-party-dts-extractor": "0.8.9", "adm-zip": "^0.5.10", "ansi-colors": "^4.1.3", "axios": "^1.7.4", @@ -6420,35 +6420,82 @@ "node": ">=8" } }, + "node_modules/@module-federation/enhanced": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.8.9.tgz", + "integrity": "sha512-feZUhznCyFkyivWNSFPN+FHMZmyrxlKBhWW8ldWsp/LlKIzWI75vMLimpiydBWnWTZgnOhQDBZGZVxSlfnfKHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "0.8.9", + "@module-federation/data-prefetch": "0.8.9", + "@module-federation/dts-plugin": "0.8.9", + "@module-federation/error-codes": "0.8.9", + "@module-federation/inject-external-runtime-core-plugin": "0.8.9", + "@module-federation/managers": "0.8.9", + "@module-federation/manifest": "0.8.9", + "@module-federation/rspack": "0.8.9", + "@module-federation/runtime-tools": "0.8.9", + "@module-federation/sdk": "0.8.9", + "btoa": "^1.2.1", + "upath": "2.0.1" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, "node_modules/@module-federation/error-codes": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.7.6.tgz", - "integrity": "sha512-XVzX/sRFj1h5JvOOVMoFppxq0t1t3o/AlEICHgWX+dybIwJgz9g4gihZOWVZfz5/xsKGcUwdH5X7Z2nkuYhJEw==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.9.tgz", + "integrity": "sha512-yUA3GZjOy8Ll6l193faXir2veexDaUiLdmptbzC9tIee/iSQiSwIlibdTafCfqaJ62cLZaytOUdmAFAKLv8QQw==", "dev": true, "license": "MIT" }, + "node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.8.9.tgz", + "integrity": "sha512-F3s/3Iny20c0Y0CaXgOZdgl7PzgXj6ftCiT5FO6QWmyhzfl2R0o3KFuv54BmwtoimSFky1ShuC/jPluz4EGG1g==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@module-federation/runtime-tools": "0.8.9" + } + }, "node_modules/@module-federation/managers": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.7.6.tgz", - "integrity": "sha512-NW0LJ6TL13oN004D9e50EalcGZyTYHHgyaeKOc90Omb/HMeHxjyhHx7wl1TLRwVN2E5Rk+IO0JrwgrdlNMfAzg==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.8.9.tgz", + "integrity": "sha512-Fb28sa2iAqwSSSgiPBoL5Kp0RB9ZKJvdwLAEwZBV2c2LyZUqJCdTjmYuB5Q2sWB9wsudd/ijV6WWNK/nVoJxdA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.7.6", + "@module-federation/sdk": "0.8.9", "find-pkg": "2.0.0", "fs-extra": "9.1.0" } }, "node_modules/@module-federation/manifest": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.7.6.tgz", - "integrity": "sha512-xBrFwLjDMUjKRnp+P4X29ZNyhgXSsp+SfrBxVsKJpEESOHalDoNClbo6gXvZAvkBZyo9sY3SJhAwduDwNkg04w==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.8.9.tgz", + "integrity": "sha512-48jIv50l0tTx+CVzs2JKMlTO0mcUvFRDxqO79nJaL1DLfpRQoCRQjCA8sXUp5PPIyJ8MHQqkHK/dnaal4NlR/A==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "0.7.6", - "@module-federation/managers": "0.7.6", - "@module-federation/sdk": "0.7.6", + "@module-federation/dts-plugin": "0.8.9", + "@module-federation/managers": "0.8.9", + "@module-federation/sdk": "0.8.9", "chalk": "3.0.0", "find-pkg": "2.0.0" } @@ -6467,21 +6514,55 @@ "node": ">=8" } }, + "node_modules/@module-federation/node": { + "version": "2.6.22", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.6.22.tgz", + "integrity": "sha512-KlBJXakBO0KMCLTv7622aQNQk3JLfUqXJtd28nUt7xJNV9OZclHvRmKS83zHGEV/6hBKuLtYlP/+S4LMoMKiOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/enhanced": "0.8.9", + "@module-federation/runtime": "0.8.9", + "@module-federation/sdk": "0.8.9", + "@module-federation/utilities": "3.1.40", + "btoa": "1.2.1", + "encoding": "^0.1.13", + "node-fetch": "2.7.0" + }, + "peerDependencies": { + "react": "^16||^17||^18", + "react-dom": "^16||^17||^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/@module-federation/rspack": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.7.6.tgz", - "integrity": "sha512-alfX85C+2AQLXGrtpa08ImwhHIGwFIkJ/6i/XhxpYL5iFu0mC0xRIJPJUw0tiBWdFpP4p+Ykij3hP3FqfvaiKg==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.8.9.tgz", + "integrity": "sha512-wuHRx+aUYhsrAQzU5yKQksaOJ8pwhuQJDl8I86xmzkEsnxcWsZcn49xIR4t7v1HcYAqjBXLNXSoQwkIMH9zu2w==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.7.6", - "@module-federation/dts-plugin": "0.7.6", - "@module-federation/managers": "0.7.6", - "@module-federation/manifest": "0.7.6", - "@module-federation/runtime-tools": "0.7.6", - "@module-federation/sdk": "0.7.6" + "@module-federation/bridge-react-webpack-plugin": "0.8.9", + "@module-federation/dts-plugin": "0.8.9", + "@module-federation/inject-external-runtime-core-plugin": "0.8.9", + "@module-federation/managers": "0.8.9", + "@module-federation/manifest": "0.8.9", + "@module-federation/runtime-tools": "0.8.9", + "@module-federation/sdk": "0.8.9" }, "peerDependencies": { + "@rspack/core": ">=0.7", "typescript": "^4.9.0 || ^5.0.0", "vue-tsc": ">=1.0.24" }, @@ -6495,41 +6576,53 @@ } }, "node_modules/@module-federation/runtime": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.7.6.tgz", - "integrity": "sha512-TEEDbGwaohZ2dMa+Sk/Igq8XpcyfjqJfbL20mdAZeifSFVZYRSCaTd/xIXP7pEw8+5BaCMc4YfCf/XcjFAUrVA==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.9.tgz", + "integrity": "sha512-i+a+/hoT/c+EE52mT+gJrbA6DhL86PY9cd/dIv/oKpLz9i+yYBlG+RA+puc7YsUEO4irbFLvnIMq6AGDUKVzYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.8.9", + "@module-federation/runtime-core": "0.6.17", + "@module-federation/sdk": "0.8.9" + } + }, + "node_modules/@module-federation/runtime-core": { + "version": "0.6.17", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.6.17.tgz", + "integrity": "sha512-PXFN/TT9f64Un6NQYqH1Z0QLhpytW15jkZvTEOV8W7Ed319BECFI0Rv4xAsAGa8zJGFoaM/c7QOQfdFXtKj5Og==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.7.6", - "@module-federation/sdk": "0.7.6" + "@module-federation/error-codes": "0.8.9", + "@module-federation/sdk": "0.8.9" } }, "node_modules/@module-federation/runtime-tools": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.7.6.tgz", - "integrity": "sha512-SvokF6gn2sNrTEPG51H0LrowHnf3iNfznO2PzKpxAhZOBdb1pm0wJPwWSMHYrjMdDpjr7bzaqAywnkHdA6lqeQ==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.8.9.tgz", + "integrity": "sha512-xBUGx1oOZNuxXjPGdTMrLtAIDrbrN6jE2Mgb9w1qr2mQ4AW9b5TOlxbARBoX4q98xt9oFCGU6Q0eW5XJpsl8AQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.7.6", - "@module-federation/webpack-bundler-runtime": "0.7.6" + "@module-federation/runtime": "0.8.9", + "@module-federation/webpack-bundler-runtime": "0.8.9" } }, "node_modules/@module-federation/sdk": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.7.6.tgz", - "integrity": "sha512-MFE+RtsHnutZOCp2eKpa3A/yzZ8tOPmjX7QRdVnB2qqR9JA2SH3ZP5+cYq76tzFQZvU1BCWAQVNMvqGOW2yVZQ==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.9.tgz", + "integrity": "sha512-QJ60itWC/SPjqduT7wDiF8UGwVU/yJ/Sz+QbnoxB9b7gNLzvI//swAXTo9eOtKsCy/V2BMwjt0F3eOcfnaqllA==", "dev": true, "license": "MIT", "dependencies": { - "isomorphic-rslog": "0.0.6" + "isomorphic-rslog": "0.0.7" } }, "node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.7.6.tgz", - "integrity": "sha512-JME76/rgr41AKXG6kUTQXdQJiMCypN3qHOgPv4VuIag10UdLo/0gdeN6PYronvYmvPOQMfYev80GcEwl4l531A==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.8.9.tgz", + "integrity": "sha512-53v6B5zfhGlAPpH0SrlJDp9B6kcOcZaUPi6J4L/7ie5F0YVe0vq/mJGOOzAStN9ggJjSrjBZLFT3gFmBYM3Z9A==", "dev": true, "license": "MIT", "dependencies": { @@ -6556,15 +6649,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@module-federation/utilities": { + "version": "3.1.40", + "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.40.tgz", + "integrity": "sha512-/Oa0jtNCEEfQhXIV0/H/pm+PEfYy4QUfCIcgTr5TJ1QB3OR1D+tBYRFGYYJaTeMRzS4PI4Rh1vv/egzQ9pbgSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/sdk": "0.8.9" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.7.6.tgz", - "integrity": "sha512-kB9hQ0BfwNAcQWGskDEOxYP2z2bB/1ABXKr8MDomCFl2mbW3vvfYMQrb8UhJmJvE3rbGI/iXhJUdgBLNREnjUg==", + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.9.tgz", + "integrity": "sha512-DYLvVi4b2MUYu/B4g5wIC5SHxiODboKHkYGHYapOhCcqOchca/N16gtiAI8eSNjJPc+fgUXUGIyGiB18IlFEeQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.7.6", - "@module-federation/sdk": "0.7.6" + "@module-federation/runtime": "0.8.9", + "@module-federation/sdk": "0.8.9" } }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { @@ -7412,24 +7531,24 @@ } }, "node_modules/@nx/angular": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-20.3.0.tgz", - "integrity": "sha512-QdgHkOza4f3brmyepHoMvpMKFyPXTGvp5R4zImq0hkwX4UguZyKgSEQV5ldOPsDxe9HOAgypXZnGo/CfQAdhmQ==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-20.3.2.tgz", + "integrity": "sha512-8waa4ZSu94us116+7e/qnRBzF8FcwXx91NLbWCz2YBidfuJ54hbs/nPABfJv6zcoWVNW2/j+kD1AZK5fXlObRA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.0", - "@nx/eslint": "20.3.0", - "@nx/js": "20.3.0", - "@nx/module-federation": "20.3.0", - "@nx/web": "20.3.0", - "@nx/webpack": "20.3.0", - "@nx/workspace": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/eslint": "20.3.2", + "@nx/js": "20.3.2", + "@nx/module-federation": "20.3.2", + "@nx/web": "20.3.2", + "@nx/webpack": "20.3.2", + "@nx/workspace": "20.3.2", "@phenomnomnominal/tsquery": "~5.0.1", "@typescript-eslint/type-utils": "^8.0.0", - "chalk": "^4.1.0", "magic-string": "~0.30.2", "minimatch": "9.0.3", + "picocolors": "^1.1.0", "piscina": "^4.4.0", "semver": "^7.5.3", "tslib": "^2.3.0", @@ -7495,15 +7614,15 @@ } }, "node_modules/@nx/cypress": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-20.3.0.tgz", - "integrity": "sha512-Fi4HOhz8JYPLrnmFDxgVK1lNTBb6ZZC0EiibFxqCeFdPOQFJx36VyzMNIdfGHI50TCBUsSzK5eWD/8NHSBuFUg==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-20.3.2.tgz", + "integrity": "sha512-rUPUGdZkt2XrlqEUJmbQkzXB741l+DD4foB8q/CDNaA99beE/TSalbiPdMe7dGvwfJWCQ7N7eoR7liHwvgwAIA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.0", - "@nx/eslint": "20.3.0", - "@nx/js": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/eslint": "20.3.2", + "@nx/js": "20.3.2", "@phenomnomnominal/tsquery": "~5.0.1", "detect-port": "^1.5.1", "tslib": "^2.3.0" @@ -7518,9 +7637,9 @@ } }, "node_modules/@nx/devkit": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-20.3.0.tgz", - "integrity": "sha512-u9oRd2F33DLNWPbzpYGW7xuMEYUAOwO9DLP9nGYpxbZXy6Z4AdoKeqhN+KBTyg8+DyQGuKUSEXcWriDyLLgcHw==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-20.3.2.tgz", + "integrity": "sha512-VhbxEsSTCZlOVgjuQC+6HQmb9Oz9VoHUeo4001Pw6BFBcSXZUi5q37C/lxbAgQPnMKLkFcLva3WKZ+fOLwhGIg==", "dev": true, "license": "MIT", "dependencies": { @@ -7554,14 +7673,14 @@ } }, "node_modules/@nx/eslint": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-20.3.0.tgz", - "integrity": "sha512-QhApF0HAcMm0tc7kXna4XuFUuO3oroWvGmvzGqBSa3GyuXbAz1VJ1RFWYkyQzjAsltaBcMUFCA+ORUM+PN1sWA==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-20.3.2.tgz", + "integrity": "sha512-vWvMmJ4aU/CjqomTVLuMlmhxKj/Q2wlhu9tQhZlDexDGfGF4QMidrbb25Rqog9NSeeI5hhBp57TQjfDyEF8HhQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.0", - "@nx/js": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/js": "20.3.2", "semver": "^7.5.3", "tslib": "^2.3.0", "typescript": "~5.6.2" @@ -7577,14 +7696,14 @@ } }, "node_modules/@nx/eslint-plugin": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-20.3.0.tgz", - "integrity": "sha512-U9DvbR7quyfnWk8ZCJlwKbIInZ5gd4be93X5gii966vM81n3lbWLc7y4avU4r3732X2pnpFGJqBgP8ov8JE/fw==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-20.3.2.tgz", + "integrity": "sha512-m3gWjOY9Cn4lujMZITfxuD+T7iPf0MOqfiTU8gnlybGpqxOL2F6roHtVRX3aas2cKtSTY/Kk+fIalIJVSxfSoQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.0", - "@nx/js": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/js": "20.3.2", "@typescript-eslint/type-utils": "^8.0.0", "@typescript-eslint/utils": "^8.0.0", "chalk": "^4.1.0", @@ -7618,23 +7737,23 @@ } }, "node_modules/@nx/jest": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-20.3.0.tgz", - "integrity": "sha512-szkmlq8Zgx1J04yq34HfbC1jGrELVXcJTfo76SnFonL9crnbBsLS2mPrvCe431Zm9Xs1PYNvxZLeIbxf6bVXcQ==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-20.3.2.tgz", + "integrity": "sha512-YW+KVoQEZi1Otm1wBAu0Bf3uq1Kp7ighPW73e8bL0SQPTdp6Afdn/52HZfrOGvBjdHLrZ50N817IJLUpApJ82g==", "dev": true, "license": "MIT", "dependencies": { "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", - "@nx/devkit": "20.3.0", - "@nx/js": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/js": "20.3.2", "@phenomnomnominal/tsquery": "~5.0.1", - "chalk": "^4.1.0", "identity-obj-proxy": "3.0.0", "jest-config": "^29.4.1", "jest-resolve": "^29.4.1", "jest-util": "^29.4.1", "minimatch": "9.0.3", + "picocolors": "^1.1.0", "resolve.exports": "2.0.3", "semver": "^7.5.3", "tslib": "^2.3.0", @@ -7658,9 +7777,9 @@ } }, "node_modules/@nx/js": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-20.3.0.tgz", - "integrity": "sha512-hnO1jzJUvO7+bBsC2uaUElpX9gpMiSA3wdt34V8nnPcIBWtdMrjKX7yRFSwZKimeNauesiX0uorTJf+z28R2bg==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-20.3.2.tgz", + "integrity": "sha512-t2mLCogVc/DWpkJ1SW4pFgeyWAmuy7EI4IPyShtF4s9mhqyIDfd29fGYsocuv84skX6y4JMOw3O+c+LXdQ9QWw==", "dev": true, "license": "MIT", "dependencies": { @@ -7671,8 +7790,8 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nx/devkit": "20.3.0", - "@nx/workspace": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/workspace": "20.3.2", "@zkochan/js-yaml": "0.0.7", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^2.8.0", @@ -7877,18 +7996,18 @@ } }, "node_modules/@nx/module-federation": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-20.3.0.tgz", - "integrity": "sha512-txb3Gs9BkxnCo0Xo0EYqs8dRyScue4p6AcIxHHaTne469JS1qKzr0rGSpkL3j6KH5PAjfDpp8XZHtQg4Yd3TsQ==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-20.3.2.tgz", + "integrity": "sha512-i7Ze1Sjk68eE5qgsvMPXZlJuLHvwp3s/nWlDmJzcEdbiq2szRGgZ/NOLrZJYvSTkIe0YosCQ0PtY6wfGXwWjbQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/enhanced": "0.7.6", - "@module-federation/node": "2.6.11", - "@module-federation/sdk": "0.7.6", - "@nx/devkit": "20.3.0", - "@nx/js": "20.3.0", - "@nx/web": "20.3.0", + "@module-federation/enhanced": "^0.8.8", + "@module-federation/node": "^2.6.21", + "@module-federation/sdk": "^0.8.8", + "@nx/devkit": "20.3.2", + "@nx/js": "20.3.2", + "@nx/web": "20.3.2", "@rspack/core": "^1.1.5", "express": "^4.19.2", "http-proxy-middleware": "^3.0.3", @@ -7897,99 +8016,6 @@ "webpack": "5.88.0" } }, - "node_modules/@nx/module-federation/node_modules/@module-federation/enhanced": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.7.6.tgz", - "integrity": "sha512-ivTVuRKhew/25fiblAW22RybYzyacQsvnQG3y9zSNsYbwcj+0u7THWMmsK8vNKxDUpjxuQulCK07BEycDjoB5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.7.6", - "@module-federation/data-prefetch": "0.7.6", - "@module-federation/dts-plugin": "0.7.6", - "@module-federation/managers": "0.7.6", - "@module-federation/manifest": "0.7.6", - "@module-federation/rspack": "0.7.6", - "@module-federation/runtime-tools": "0.7.6", - "@module-federation/sdk": "0.7.6", - "btoa": "^1.2.1", - "upath": "2.0.1" - }, - "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vue-tsc": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/@nx/module-federation/node_modules/@module-federation/node": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.6.11.tgz", - "integrity": "sha512-ytCNML9Q9dQ7Xi/pTYp4Y+yP/YUiFyyCa8BEKnSt5Ipiqtu4QMxj46EkOIgvLv0nSlK+xOVgAzqtXLI89SfhCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/enhanced": "0.7.6", - "@module-federation/runtime": "0.7.6", - "@module-federation/sdk": "0.7.6", - "@module-federation/utilities": "3.1.29", - "btoa": "1.2.1", - "encoding": "^0.1.13", - "node-fetch": "2.7.0" - }, - "peerDependencies": { - "react": "^16||^17||^18", - "react-dom": "^16||^17||^18", - "webpack": "^5.40.0" - }, - "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/@nx/module-federation/node_modules/@module-federation/utilities": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.29.tgz", - "integrity": "sha512-yhHOgm3mkZBvQzT4HoBJAVhGIa7Nfhpd4Zdc11g0vYEMapU6lfN5HHipUFdj6bLUzHhDyrY6CaF3syqTuabAfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/sdk": "0.7.6" - }, - "peerDependencies": { - "react": "^16 || ^17 || ^18", - "react-dom": "^16 || ^17 || ^18", - "webpack": "^5.40.0" - }, - "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, "node_modules/@nx/module-federation/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -8110,17 +8136,17 @@ } }, "node_modules/@nx/nest": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-20.3.0.tgz", - "integrity": "sha512-z7yjlS0Z0TNxEUU+pVkIRCFkrtRnvKjmOwIzj4DfHR8/SoF+0x06IPo+ZFHFOLe/DDjZuNOqjqzOQmQY1VhINw==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-20.3.2.tgz", + "integrity": "sha512-+/6xWf2Sdt0+8Bca1pBRDFT5XcGFBi5XUeHypJyoHPAxxoPsw3ZWQtKeSMDqVwghWvmz6GGGM6GynbHF9h8X6A==", "dev": true, "license": "MIT", "dependencies": { "@nestjs/schematics": "^9.1.0", - "@nx/devkit": "20.3.0", - "@nx/eslint": "20.3.0", - "@nx/js": "20.3.0", - "@nx/node": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/eslint": "20.3.2", + "@nx/js": "20.3.2", + "@nx/node": "20.3.2", "tslib": "^2.3.0" } }, @@ -8296,23 +8322,23 @@ } }, "node_modules/@nx/node": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/node/-/node-20.3.0.tgz", - "integrity": "sha512-6tHufkw92acIdcdLGARUJOTpjx7x4+Bu+rmM8rnugkZ4aGj62/IdI32rNBjSltYKcSo38HJyCSzmp0REdXsrbg==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/node/-/node-20.3.2.tgz", + "integrity": "sha512-JvYXPjoPho+RJKXgg2b0/hQ2SivccfGG+vkoQ4XcwBLW7qUjKUjxmkgSHD4XaAgf9Fe9L9Pqni58CriwzNfaFg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.0", - "@nx/eslint": "20.3.0", - "@nx/jest": "20.3.0", - "@nx/js": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/eslint": "20.3.2", + "@nx/jest": "20.3.2", + "@nx/js": "20.3.2", "tslib": "^2.3.0" } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.3.0.tgz", - "integrity": "sha512-9PqSe1Sh7qNqA4GL0cZH0t3S0EZzb2Xn14XY9au7yf0+eoxyag1oETjjULrxLeUmSoXW2hDxzNtoqKFE9zF07Q==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.3.2.tgz", + "integrity": "sha512-lQOXMIPmE9o36TuZ+SX6iq7PPWa3s1fjNRqCujlviExX69245NNCMxd754gXlLrsxC1onrx/zmJciKmmEWDIiw==", "cpu": [ "arm64" ], @@ -8326,31 +8352,184 @@ "node": ">= 10" } }, + "node_modules/@nx/nx-darwin-x64": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.3.2.tgz", + "integrity": "sha512-RvvSz4QYVOYOfC8sUE63b6dy8iHk2AEI0r1FF5FCQuqE1DdTeTjPETY2sY35tRqF+mO/6oLGp2+m9ti/ysRoTg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.3.2.tgz", + "integrity": "sha512-KBDTyGn1evlZ17pupwRUDh2wrCMuHhP2j8cOCdgF5cl7vRki8BOK9yyL6jD11d/d/6DgXzy1jmQEX4Xx+AGCug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.3.2.tgz", + "integrity": "sha512-mW+OcOnJEMvs7zD3aSwEG3z5M9bI4CuUU5Q/ePmnNzWIucRHpoAMNt/Sd+yu6L4+QttvoUf967uwcMsX8l4nrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.3.2.tgz", + "integrity": "sha512-hbXpZqUvGY5aeEWvh0SNsiYjP1ytSM30XOT6qN6faLO2CL/7j9D2UB69SKOqF3TJOvuNU6cweFgZCxyGfXBYIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.3.2.tgz", + "integrity": "sha512-HXthtN7adXCNVWs2F4wIqq2f7BcKTjsEnqg2LWV5lm4hRYvMfEvPftb0tECsEhcSQQYcvIJnLfv3vtu9HZSfVA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.3.2.tgz", + "integrity": "sha512-HhgHqOUT05H45zuQL+XPywQbRNFttd7Rkkr7dZnpCRdp4W8GDjfyKCoCS5qVyowAyNh9Vc7VEq9qmiLMlvf6Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.3.2.tgz", + "integrity": "sha512-NrZ8L9of2GmYEM8GMJX6QRrLJlAwM+ds2rhdY1bxwpiyCNcD3IO/gzJlBs+kG4ly05F1u/X4k/FI5dXPpjUSgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.3.2.tgz", + "integrity": "sha512-yLjacZND7C1XmsC0jfRLSgeLWZUw2Oz+u3nXNvj5JX6YHtYTVLFnRbTAcI+pG2Y6v0Otf2GKb3VT5d1mQb8JvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.3.2.tgz", + "integrity": "sha512-oDhcctfk0UB1V+Otp1161VKNMobzkFQxGyiEIjp0CjCBa2eRHC1r35L695F1Hj0bvLQPSni9XIe9evh2taeAkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nx/storybook": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-20.3.0.tgz", - "integrity": "sha512-H1ngnqg9JIwh1UB/PfPMHZS0L6YQbCPPL7gXr1NUcjbkXX2D+sZiBvqFwjIi0eglSM+1US7fy6/n2j3pwfQVQA==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-20.3.2.tgz", + "integrity": "sha512-gminOP6SssVZsHSBfpnmk9MDn1miMPF0zTO2KUx6V4pzQAC9yrV5MNv9ai6wNxTOfTzAAzr6uQCftjBs3kXaRQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/cypress": "20.3.0", - "@nx/devkit": "20.3.0", - "@nx/eslint": "20.3.0", - "@nx/js": "20.3.0", + "@nx/cypress": "20.3.2", + "@nx/devkit": "20.3.2", + "@nx/eslint": "20.3.2", + "@nx/js": "20.3.2", "@phenomnomnominal/tsquery": "~5.0.1", "semver": "^7.5.3", "tslib": "^2.3.0" } }, "node_modules/@nx/web": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-20.3.0.tgz", - "integrity": "sha512-MKmXI9uAX+fdLY0GfF/3rH4EXrEjyLI6FSt3kUuF1/UzAUUUqww6owoM+9EaC1mRcCYDd0nwN7piblVz/wIVLw==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-20.3.2.tgz", + "integrity": "sha512-Kw8is78c3zo4M2bPCVgF2XJev3oCPyl9wyTuexzc5y3praF/r0Dc1jlGiHqwdeGBKpNNDaZns4WZe5KUaIc/Qg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.0", - "@nx/js": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/js": "20.3.2", "detect-port": "^1.5.1", "http-server": "^14.1.0", "picocolors": "^1.1.0", @@ -8358,15 +8537,15 @@ } }, "node_modules/@nx/webpack": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-20.3.0.tgz", - "integrity": "sha512-KW04Ge8cQtv5RmezWV6bsIptLwXNhq5d6Ew3GigL5h6BKYPEmyMes5yMSUsNqNGC1SPI5nNPwzRkTxW18b+jnA==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-20.3.2.tgz", + "integrity": "sha512-/3N4cRCbwHSZsJDHukV0QrIBZxFJpGjZFEPLswkAn8B+9AQVkp8ZieZYgu08XixXVj/9oTK4sbOh143/eu+93g==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@nx/devkit": "20.3.0", - "@nx/js": "20.3.0", + "@nx/devkit": "20.3.2", + "@nx/js": "20.3.2", "@phenomnomnominal/tsquery": "~5.0.1", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", @@ -8443,27 +8622,6 @@ "source-map": "~0.6.0" } }, - "node_modules/@nx/webpack/node_modules/less-loader": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", - "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", - "dev": true, - "license": "MIT", - "dependencies": { - "klona": "^2.0.4" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" - } - }, "node_modules/@nx/webpack/node_modules/parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", @@ -8507,66 +8665,6 @@ "tslib": "^2.1.0" } }, - "node_modules/@nx/webpack/node_modules/sass": { - "version": "1.83.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz", - "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/@nx/webpack/node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, "node_modules/@nx/webpack/node_modules/tsconfig-paths-webpack-plugin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", @@ -8665,16 +8763,16 @@ } }, "node_modules/@nx/workspace": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.3.0.tgz", - "integrity": "sha512-z8NSAo5SiLEMPuwasDvLdCCtaTGdINh1cSZMCom8HeLbT8F7risbR0IlHVqVrKj9FPKqrAIsH+4knVb4dHHCnQ==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.3.2.tgz", + "integrity": "sha512-Dj2AbG9X8Uo6k3XhcuNOblDgR/U8u5+x41hMNKHSG9Pi3CyAJ24didtn1SMf78GElzPOV94KJZmioGHw3rKyCg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.0", + "@nx/devkit": "20.3.2", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "20.3.0", + "nx": "20.3.2", "tslib": "^2.3.0", "yargs-parser": "21.1.1" } @@ -12214,6 +12312,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "deprecated": "package has been renamed to acorn-import-attributes", "dev": true, "license": "MIT", "peerDependencies": { @@ -12546,6 +12645,19 @@ "dev": true, "license": "MIT" }, + "node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/array.prototype.findlastindex": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", @@ -14777,53 +14889,6 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/core-js-compat": { "version": "3.39.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", @@ -19103,6 +19168,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/good-listener": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", @@ -20924,9 +21023,9 @@ } }, "node_modules/isomorphic-rslog": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.6.tgz", - "integrity": "sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.7.tgz", + "integrity": "sha512-n6/XnKnZ5eLEj6VllG4XmamXG7/F69nls8dcynHyhcTpsPUYgcgx4ifEaCo4lQJ2uzwfmIT+F0KBGwBcMKmt5g==", "dev": true, "license": "MIT", "engines": { @@ -22628,6 +22727,27 @@ "source-map": "~0.6.0" } }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "license": "MIT", + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -25361,9 +25481,9 @@ "license": "MIT" }, "node_modules/nx": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/nx/-/nx-20.3.0.tgz", - "integrity": "sha512-Nzi4k7tV22zwO2iBLk+pHxorLEWPJpPrVCACtz0SQ63j/LiAgfhoqruJO+VU+V+E9qdyPsvmqIL/Iaf/GRQlqA==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/nx/-/nx-20.3.2.tgz", + "integrity": "sha512-VWUHX0uCn8ACFbpBTpgucDzwe4q/a/UU3AYOhzKCvTzb3kQiyvoxLjORSze93ZNEqgor0PMkCQgcoMBUjxJfzQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -25408,16 +25528,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "20.3.0", - "@nx/nx-darwin-x64": "20.3.0", - "@nx/nx-freebsd-x64": "20.3.0", - "@nx/nx-linux-arm-gnueabihf": "20.3.0", - "@nx/nx-linux-arm64-gnu": "20.3.0", - "@nx/nx-linux-arm64-musl": "20.3.0", - "@nx/nx-linux-x64-gnu": "20.3.0", - "@nx/nx-linux-x64-musl": "20.3.0", - "@nx/nx-win32-arm64-msvc": "20.3.0", - "@nx/nx-win32-x64-msvc": "20.3.0" + "@nx/nx-darwin-arm64": "20.3.2", + "@nx/nx-darwin-x64": "20.3.2", + "@nx/nx-freebsd-x64": "20.3.2", + "@nx/nx-linux-arm-gnueabihf": "20.3.2", + "@nx/nx-linux-arm64-gnu": "20.3.2", + "@nx/nx-linux-arm64-musl": "20.3.2", + "@nx/nx-linux-x64-gnu": "20.3.2", + "@nx/nx-linux-x64-musl": "20.3.2", + "@nx/nx-win32-arm64-msvc": "20.3.2", + "@nx/nx-win32-x64-msvc": "20.3.2" }, "peerDependencies": { "@swc-node/register": "^1.8.0", @@ -25571,9 +25691,9 @@ } }, "node_modules/nx/node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, "license": "ISC", "bin": { @@ -27542,9 +27662,9 @@ "license": "MIT" }, "node_modules/rambda": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.1.tgz", - "integrity": "sha512-awZe9AzmPI8XqizJz+NlaRbAdjhWKvuIaPikqRH6r41/ui9UTUQY5jTVdgQwnVrv1HnSMB6IBAAnNYs8HoVvZg==", + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.2.tgz", + "integrity": "sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==", "dev": true, "license": "MIT" }, @@ -28497,6 +28617,45 @@ "@parcel/watcher": "^2.4.1" } }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -30369,9 +30528,9 @@ } }, "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", + "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", "dev": true, "license": "MIT", "dependencies": { @@ -30941,22 +31100,6 @@ "node": ">= 0.8.0" } }, - "node_modules/union/node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/unique-filename": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", diff --git a/package.json b/package.json index c75b630c8..131324222 100644 --- a/package.json +++ b/package.json @@ -154,17 +154,17 @@ "@eslint/js": "9.18.0", "@nestjs/schematics": "10.2.3", "@nestjs/testing": "10.4.15", - "@nx/angular": "20.3.0", - "@nx/cypress": "20.3.0", - "@nx/eslint-plugin": "20.3.0", - "@nx/jest": "20.3.0", - "@nx/js": "20.3.0", - "@nx/module-federation": "20.3.0", - "@nx/nest": "20.3.0", - "@nx/node": "20.3.0", - "@nx/storybook": "20.3.0", - "@nx/web": "20.3.0", - "@nx/workspace": "20.3.0", + "@nx/angular": "20.3.2", + "@nx/cypress": "20.3.2", + "@nx/eslint-plugin": "20.3.2", + "@nx/jest": "20.3.2", + "@nx/js": "20.3.2", + "@nx/module-federation": "20.3.2", + "@nx/nest": "20.3.2", + "@nx/node": "20.3.2", + "@nx/storybook": "20.3.2", + "@nx/web": "20.3.2", + "@nx/workspace": "20.3.2", "@schematics/angular": "19.0.6", "@simplewebauthn/types": "9.0.1", "@storybook/addon-essentials": "8.4.7", @@ -194,7 +194,7 @@ "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", - "nx": "20.3.0", + "nx": "20.3.2", "prettier": "3.4.2", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "6.2.1", From 663cee9a05338d2a903f62375465278911338aac Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Jan 2025 10:39:05 +0100 Subject: [PATCH 017/164] Feature/change wording in data providers of admin settings (#4207) * Change wording --- .../components/admin-settings/admin-settings.component.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.html b/apps/client/src/app/components/admin-settings/admin-settings.component.html index f9a6084cc..305d6ce49 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.html +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.html @@ -12,7 +12,9 @@ [href]="pricingUrl" > @if (isGhostfolioApiKeyValid === false) { - NEW + Early Access } Ghostfolio Premium Date: Sun, 19 Jan 2025 10:48:49 +0100 Subject: [PATCH 018/164] Feature/upgrade reflect metadata to version 0.2.2 (#4202) * Upgrade reflect-metadata to version 0.2.2 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7ceee5cb..2262ce56a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `eslint` dependencies - Upgraded `nestjs` from version `10.1.3` to `10.4.15` - Upgraded `Nx` from version `20.3.0` to `20.3.2` +- Upgraded `reflect-metadata` from version `0.1.13` to `0.2.2` - Upgraded `uuid` from version `11.0.2` to `11.0.5` ## 2.134.0 - 2025-01-15 diff --git a/package-lock.json b/package-lock.json index a1d2e16da..07894898c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,7 +83,7 @@ "passport-google-oauth20": "2.0.0", "passport-headerapikey": "1.2.2", "passport-jwt": "4.0.1", - "reflect-metadata": "0.1.13", + "reflect-metadata": "0.2.2", "rxjs": "7.5.6", "stripe": "17.3.0", "svgmap": "2.6.0", @@ -27883,9 +27883,9 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "license": "Apache-2.0" }, "node_modules/reflect.getprototypeof": { diff --git a/package.json b/package.json index 131324222..a0f432b43 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "passport-google-oauth20": "2.0.0", "passport-headerapikey": "1.2.2", "passport-jwt": "4.0.1", - "reflect-metadata": "0.1.13", + "reflect-metadata": "0.2.2", "rxjs": "7.5.6", "stripe": "17.3.0", "svgmap": "2.6.0", From c72d2192460d5fb6f372da8a74985ee885a4b164 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Jan 2025 10:51:12 +0100 Subject: [PATCH 019/164] Release 2.135.0 (#4216) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2262ce56a..ce7dedbff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.135.0 - 2025-01-19 ### Changed diff --git a/package-lock.json b/package-lock.json index 07894898c..1969a8201 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.134.0", + "version": "2.135.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.134.0", + "version": "2.135.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index a0f432b43..1e2996761 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.134.0", + "version": "2.135.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From fc0f2e30c0f302d76316a998646179be83db0b0a Mon Sep 17 00:00:00 2001 From: Serhii Serdiuk <130998461+SerhiiSerdiukDev@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:20:14 +0200 Subject: [PATCH 020/164] Feature/improve language localization for Ukrainian (uk) (#4226) * Improve language localization for Ukrainian (uk) * Update changelog --- CHANGELOG.md | 6 ++ apps/client/src/locales/messages.ca.xlf | 78 +++++++------- apps/client/src/locales/messages.de.xlf | 78 +++++++------- apps/client/src/locales/messages.es.xlf | 78 +++++++------- apps/client/src/locales/messages.fr.xlf | 78 +++++++------- apps/client/src/locales/messages.it.xlf | 78 +++++++------- apps/client/src/locales/messages.nl.xlf | 78 +++++++------- apps/client/src/locales/messages.pl.xlf | 78 +++++++------- apps/client/src/locales/messages.pt.xlf | 78 +++++++------- apps/client/src/locales/messages.tr.xlf | 78 +++++++------- apps/client/src/locales/messages.uk.xlf | 136 ++++++++++++------------ apps/client/src/locales/messages.xlf | 76 ++++++------- apps/client/src/locales/messages.zh.xlf | 78 +++++++------- 13 files changed, 502 insertions(+), 496 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce7dedbff..a2cbf3cfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Improved the language localization for Ukrainian (`uk`) + ## 2.135.0 - 2025-01-19 ### Changed diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 35cdf2a8c..77636d9e8 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -334,23 +334,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260
@@ -2203,7 +2203,7 @@ Plataformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -2211,7 +2211,7 @@ Etiquetes apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -2831,7 +2831,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3303,7 +3303,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -3459,7 +3459,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -3467,7 +3467,7 @@ Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -3475,7 +3475,7 @@ Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -3483,7 +3483,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -3491,7 +3491,7 @@ Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -3499,7 +3499,7 @@ Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -3507,7 +3507,7 @@ Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -3519,7 +3519,7 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3527,7 +3527,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -3535,7 +3535,7 @@ Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -3543,7 +3543,7 @@ Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -3551,7 +3551,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -3559,7 +3559,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -3567,7 +3567,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -3575,7 +3575,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -4087,7 +4087,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -4095,7 +4095,7 @@ Get Started apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -6731,7 +6731,7 @@ Valid until apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -7334,20 +7334,12 @@ 4 - - NEW - NEW - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7469,7 +7461,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7477,7 +7469,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7485,7 +7477,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7664,6 +7656,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index b0dd8d4f4..343ae2f53 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1026,7 +1026,7 @@ Registrieren apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -1090,7 +1090,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1354,7 +1354,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1770,7 +1770,7 @@ Lokalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -1778,7 +1778,7 @@ Datums- und Zahlenformat apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -1786,7 +1786,7 @@ Zen Modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -1798,7 +1798,7 @@ Einloggen mit Fingerabdruck apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -1810,7 +1810,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -2910,7 +2910,7 @@ Experimentelle Funktionen apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -2958,7 +2958,7 @@ Aussehen apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -2966,7 +2966,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -2974,7 +2974,7 @@ Hell apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -2982,7 +2982,7 @@ Dunkel apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -3270,23 +3270,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -3450,7 +3450,7 @@ Gültig bis apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3518,7 +3518,7 @@ Unbeschwertes Erlebnis für turbulente Zeiten apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3526,7 +3526,7 @@ Vorschau auf kommende Funktionalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -4010,7 +4010,7 @@ Plattformen apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -4358,7 +4358,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -4766,7 +4766,7 @@ Biometrische Authentifizierung apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -4850,7 +4850,7 @@ Daten exportieren apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -6659,7 +6659,7 @@ Gefahrenzone apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6667,7 +6667,7 @@ Konto schliessen apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7334,20 +7334,12 @@ 4 - - NEW - NEU - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key API-Schlüssel setzen apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7469,7 +7461,7 @@ von apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7477,7 +7469,7 @@ täglichen Anfragen apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7485,7 +7477,7 @@ API-Schlüssel löschen apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7664,6 +7656,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 9277735af..f3ea374e3 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1027,7 +1027,7 @@ Empezar apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -1091,7 +1091,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1355,7 +1355,7 @@ Etiquetas apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1771,7 +1771,7 @@ Ubicación apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -1779,7 +1779,7 @@ Formato de fecha y número apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -1787,7 +1787,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -1799,7 +1799,7 @@ Iniciar sesión con huella digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -1811,7 +1811,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -2911,7 +2911,7 @@ Funcionalidades experimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -2959,7 +2959,7 @@ Apariencia apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -2967,7 +2967,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -2975,7 +2975,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -2983,7 +2983,7 @@ Oscuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -3271,23 +3271,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -3451,7 +3451,7 @@ Válido hasta apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3519,7 +3519,7 @@ Experiencia sin distracciones para tiempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3527,7 +3527,7 @@ Un adelanto de las próximas funciones apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -4011,7 +4011,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -4359,7 +4359,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -4767,7 +4767,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -4851,7 +4851,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -6660,7 +6660,7 @@ Zona peligrosa apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6668,7 +6668,7 @@ Eliminar cuenta apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7335,20 +7335,12 @@ 4 - - NEW - NEW - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7470,7 +7462,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7478,7 +7470,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7486,7 +7478,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7665,6 +7657,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 245337d67..c2ea4d6f7 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -966,7 +966,7 @@ Étiquettes apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1450,7 +1450,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -2066,23 +2066,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -2090,7 +2090,7 @@ Paramètres régionaux apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -2098,7 +2098,7 @@ Format de date et d’heure apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -2106,7 +2106,7 @@ Apparence apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -2114,7 +2114,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -2122,7 +2122,7 @@ Clair apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -2130,7 +2130,7 @@ Sombre apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -2138,7 +2138,7 @@ Mode Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -2150,7 +2150,7 @@ Se connecter avec empreinte apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -2158,7 +2158,7 @@ Fonctionnalités expérimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -2170,7 +2170,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -2910,7 +2910,7 @@ Démarrer apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -3450,7 +3450,7 @@ Valide jusqu’au apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3518,7 +3518,7 @@ Expérience sans distraction pour les périodes tumultueuses apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3526,7 +3526,7 @@ Avant-première de fonctionnalités futures apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -4010,7 +4010,7 @@ Platformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -4358,7 +4358,7 @@ Logiciel Open Source apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -4766,7 +4766,7 @@ Authentication biométrique apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -4850,7 +4850,7 @@ Exporter les Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -6659,7 +6659,7 @@ Zone de danger apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6667,7 +6667,7 @@ Supprimer le compte apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7334,20 +7334,12 @@ 4 - - NEW - NEW - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7469,7 +7461,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7477,7 +7469,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7485,7 +7477,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7664,6 +7656,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index acb9b8e44..70b0ec374 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1027,7 +1027,7 @@ Inizia apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -1091,7 +1091,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1355,7 +1355,7 @@ Tag apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1771,7 +1771,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -1779,7 +1779,7 @@ Formato data e numero apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -1787,7 +1787,7 @@ Modalità Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -1799,7 +1799,7 @@ Accesso con impronta digitale apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -1811,7 +1811,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -2911,7 +2911,7 @@ Funzionalità sperimentali apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -2959,7 +2959,7 @@ Aspetto apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -2967,7 +2967,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -2975,7 +2975,7 @@ Chiaro apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -2983,7 +2983,7 @@ Scuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -3271,23 +3271,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -3451,7 +3451,7 @@ Valido fino a apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3519,7 +3519,7 @@ Esperienza priva di distrazioni per i periodi più turbolenti apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3527,7 +3527,7 @@ Un’anteprima delle funzionalità in arrivo apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -4011,7 +4011,7 @@ Piattaforme apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -4359,7 +4359,7 @@ Software open source apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -4767,7 +4767,7 @@ Autenticazione biometrica apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -4851,7 +4851,7 @@ Esporta dati apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -6660,7 +6660,7 @@ Zona di Pericolo apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6668,7 +6668,7 @@ Chiudi l'account apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7335,20 +7335,12 @@ 4 - - NEW - NUOVO - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Imposta API Key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7470,7 +7462,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7478,7 +7470,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7486,7 +7478,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7665,6 +7657,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 92da1fbca..18cf83bb3 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1026,7 +1026,7 @@ Aan de slag apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -1090,7 +1090,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1354,7 +1354,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1770,7 +1770,7 @@ Locatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -1778,7 +1778,7 @@ Datum- en getalnotatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -1786,7 +1786,7 @@ Zen-modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -1798,7 +1798,7 @@ Aanmelden met vingerafdruk apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -1810,7 +1810,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -2910,7 +2910,7 @@ Experimentele functies apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -2958,7 +2958,7 @@ Weergave apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -2966,7 +2966,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -2974,7 +2974,7 @@ Licht apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -2982,7 +2982,7 @@ Donker apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -3270,23 +3270,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -3450,7 +3450,7 @@ Geldig tot apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3518,7 +3518,7 @@ Afleidingsvrije ervaring voor roerige tijden apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3526,7 +3526,7 @@ Voorproefje van nieuwe functionaliteit apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -4010,7 +4010,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -4358,7 +4358,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -4766,7 +4766,7 @@ Biometrische authenticatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -4850,7 +4850,7 @@ Exporteer Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -6659,7 +6659,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6667,7 +6667,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7334,20 +7334,12 @@ 4 - - NEW - NEW - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7469,7 +7461,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7477,7 +7469,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7485,7 +7477,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7664,6 +7656,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 2935020dd..38b8fe231 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -751,23 +751,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -2031,7 +2031,7 @@ Platformy apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -2039,7 +2039,7 @@ Tagi apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -2479,7 +2479,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3159,7 +3159,7 @@ Ustawienia Regionalne apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -3167,7 +3167,7 @@ Format daty i liczb apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -3175,7 +3175,7 @@ Wygląd (tryb) apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -3183,7 +3183,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -3191,7 +3191,7 @@ Jasny apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -3199,7 +3199,7 @@ Ciemny apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -3207,7 +3207,7 @@ Tryb Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -3219,7 +3219,7 @@ Doświadczenie bez zakłóceń w niespokojnych czasach apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3227,7 +3227,7 @@ Uwierzytelnianie Biometryczne apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -3235,7 +3235,7 @@ Logowanie za pomocą linii papilarnych apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -3243,7 +3243,7 @@ Funkcje Eksperymentalne apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -3251,7 +3251,7 @@ Podgląd nadchodzących funkcjonalności apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -3263,7 +3263,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -3271,7 +3271,7 @@ Eksportuj Dane apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -3711,7 +3711,7 @@ Oprogramowanie Open Source apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -3719,7 +3719,7 @@ Rozpocznij apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -6127,7 +6127,7 @@ Ważność do apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -6659,7 +6659,7 @@ Strefa Zagrożenia apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6667,7 +6667,7 @@ Zamknij Konto apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7334,20 +7334,12 @@ 4 - - NEW - NOWOŚĆ - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Skonfiguruj klucz API apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7469,7 +7461,7 @@ z apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7477,7 +7469,7 @@ codzienne żądania apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7485,7 +7477,7 @@ Usuń klucz API apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7664,6 +7656,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 3aa493ece..61ff18a29 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1326,7 +1326,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1662,7 +1662,7 @@ Marcadores apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -2034,7 +2034,7 @@ Localidade apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -2042,7 +2042,7 @@ Formato de números e datas apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -2050,7 +2050,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -2062,7 +2062,7 @@ Aparência apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -2070,7 +2070,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -2078,7 +2078,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -2086,7 +2086,7 @@ Escuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -2094,7 +2094,7 @@ Iniciar sessão com impressão digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -2102,7 +2102,7 @@ Funcionalidades Experimentais apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -2114,7 +2114,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -2806,7 +2806,7 @@ Começar apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -3314,23 +3314,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -3450,7 +3450,7 @@ Válido até apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3518,7 +3518,7 @@ Experiência sem distrações para tempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3526,7 +3526,7 @@ Acesso antecipado a funcionalidades futuras apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -4010,7 +4010,7 @@ Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -4358,7 +4358,7 @@ Software de código aberto apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -4766,7 +4766,7 @@ Autenticação biométrica apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -4850,7 +4850,7 @@ Exportar dados apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -6659,7 +6659,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6667,7 +6667,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7334,20 +7334,12 @@ 4 - - NEW - NEW - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7469,7 +7461,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7477,7 +7469,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7485,7 +7477,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7664,6 +7656,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 7734dae5b..a598fd6d1 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -727,23 +727,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -1779,7 +1779,7 @@ Etiketler apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1943,7 +1943,7 @@ Platformlar apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -2331,7 +2331,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3239,7 +3239,7 @@ Zen Modu apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -3275,7 +3275,7 @@ Açık Kaynak Yazılım apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -3283,7 +3283,7 @@ Başla apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -4995,7 +4995,7 @@ Geçerli tarih apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -5067,7 +5067,7 @@ Yerel Ayarlar apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -5075,7 +5075,7 @@ Tarih ve Sayı Formatları apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -5083,7 +5083,7 @@ Görünüm apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -5091,7 +5091,7 @@ Otomatik apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -5099,7 +5099,7 @@ Açık apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -5107,7 +5107,7 @@ Koyu apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -5115,7 +5115,7 @@ Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -5123,7 +5123,7 @@ Biyometrik Kimlik Doğrulama apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -5131,7 +5131,7 @@ Parmak iziyle oturum aç apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -5139,7 +5139,7 @@ Deneysel Özellikler apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -5147,7 +5147,7 @@ Gelecek özelliklere göz atın apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -5159,7 +5159,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -5167,7 +5167,7 @@ Verileri Dışa Aktar apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -6659,7 +6659,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6667,7 +6667,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7334,20 +7334,12 @@ 4 - - NEW - NEW - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7469,7 +7461,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7477,7 +7469,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7485,7 +7477,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7664,6 +7656,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 5988b6e7c..cb2cbb57d 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -334,23 +334,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -2194,20 +2194,12 @@ 4 - - NEW - НОВИЙ - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Valid until Дійсне до apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -2219,7 +2211,7 @@ з apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -2227,7 +2219,7 @@ щоденних запитів apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -2235,7 +2227,7 @@ Вилучити ключ API apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -2243,7 +2235,7 @@ Встановити ключ API apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -2251,7 +2243,7 @@ Платформи apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -2259,7 +2251,7 @@ Теги apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -2456,7 +2448,7 @@ Performance - Продуктивність + Прибутковість apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html 6 @@ -2648,7 +2640,7 @@ Change with currency effect Change - Зміна з урахуванням валютного ефекту Змінити + Зміна з урахуванням валютного ефекту Зміна apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 50 @@ -2656,7 +2648,7 @@ Performance with currency effect Performance - Продуктивність з урахуванням валютного ефекту валюти Продуктивність + Прибутковість з урахуванням валютного ефекту валюти Прибутковість apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 69 @@ -2704,7 +2696,7 @@ Investment - Інвестиція + Інвестиції apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 152 @@ -2716,7 +2708,7 @@ Dividend - Дивіденд + Дивіденди apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 165 @@ -2892,7 +2884,7 @@ Record your investment activities to keep your portfolio up to date. - Записуйте ваші інвестиційні активності, щоб підтримувати актуальність вашого портфеля. + Записуйте ваші інвестиційні дії, щоб підтримувати актуальність вашого портфеля. apps/client/src/app/components/home-overview/home-overview.html 26 @@ -2936,7 +2928,7 @@ Summary - Резюме + Зведення apps/client/src/app/components/home-summary/home-summary.html 2 @@ -2967,7 +2959,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3024,7 +3016,7 @@ {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {актив} other {активи}} + {VAR_PLURAL, plural, =1 {дія} other {дій}} apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 14 @@ -3032,7 +3024,7 @@ Buy - Купити + Купівля apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 31 @@ -3040,7 +3032,7 @@ Sell - Продати + Продаж apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 43 @@ -3048,7 +3040,7 @@ Absolute Gross Performance - Абсолютна валова продуктивність + Абсолютний валовий дохід apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 70 @@ -3056,7 +3048,7 @@ Absolute Net Performance - Абсолютна чиста продуктивність + Абсолютний чистий прибуток apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 102 @@ -3064,7 +3056,7 @@ Net Performance - Чиста продуктивність + Чистий прибуток apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 117 @@ -3148,7 +3140,7 @@ Net Worth - Чистий капітал + Чиста вартість apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 273 @@ -3156,7 +3148,7 @@ Annualized Performance - Річна продуктивність + Річна доходність apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 285 @@ -3487,7 +3479,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -3715,7 +3707,7 @@ Локалізація apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -3723,7 +3715,7 @@ Формат дати та чисел apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -3731,7 +3723,7 @@ Зовнішній вигляд apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -3739,7 +3731,7 @@ Автоматичний apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -3747,7 +3739,7 @@ Світлий apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -3755,7 +3747,7 @@ Темний apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -3763,7 +3755,7 @@ Режим дзен apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -3775,7 +3767,7 @@ Досвід без відволікань для неспокійних часів apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3783,7 +3775,7 @@ Біометрична аутентифікація apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -3791,7 +3783,7 @@ Увійти з відбитком пальця apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -3799,7 +3791,7 @@ Експериментальні функції apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -3807,7 +3799,7 @@ Попередній перегляд майбутніх функцій apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -3815,7 +3807,7 @@ Експортувати дані apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -3823,7 +3815,7 @@ Зона небезпеки apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -3831,7 +3823,7 @@ Закрити обліковий запис apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -4335,7 +4327,7 @@ Програмне забезпечення з відкритим кодом apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -4343,7 +4335,7 @@ Почати apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -4372,7 +4364,7 @@ Summary - Резюме + Зведення apps/client/src/app/pages/home/home-page-routing.module.ts 33 @@ -5352,7 +5344,7 @@ Dividend - Дивіденд + Дивіденди apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts 41 @@ -5364,7 +5356,7 @@ Investment - Інвестиція + Інвестиції apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts 46 @@ -5404,7 +5396,7 @@ Absolute Asset Performance - Абсолютна продуктивність активів + Абсолютна прибутковість активів apps/client/src/app/pages/portfolio/analysis/analysis-page.html 60 @@ -5412,7 +5404,7 @@ Asset Performance - Продуктивність активів + Прибутковість активів apps/client/src/app/pages/portfolio/analysis/analysis-page.html 81 @@ -5420,7 +5412,7 @@ Absolute Currency Performance - Абсолютна продуктивність валюти + Абсолютна прибутковість валюти apps/client/src/app/pages/portfolio/analysis/analysis-page.html 103 @@ -5428,7 +5420,7 @@ Currency Performance - Продуктивність валюти + Прибутковість валюти apps/client/src/app/pages/portfolio/analysis/analysis-page.html 127 @@ -5436,7 +5428,7 @@ Absolute Net Performance - Абсолютна чиста продуктивність + Абсолютна чиста прибутковість apps/client/src/app/pages/portfolio/analysis/analysis-page.html 150 @@ -5444,7 +5436,7 @@ Net Performance - Чиста продуктивність + Чиста прибутковість apps/client/src/app/pages/portfolio/analysis/analysis-page.html 169 @@ -5676,7 +5668,7 @@ Portfolio Performance - Продуктивність портфеля + Прибутковість портфеля apps/client/src/app/pages/pricing/pricing-page.html 53 @@ -6854,7 +6846,7 @@ Change from All Time High - Зміна від рекордного максимуму + Зміна від Історичного Максимуму libs/ui/src/lib/benchmark/benchmark.component.html 81 @@ -6862,7 +6854,7 @@ from ATH - від РМ + від ІМ libs/ui/src/lib/benchmark/benchmark.component.html 83 @@ -6954,7 +6946,7 @@ Allocation - Алоція + Розподіл libs/ui/src/lib/holdings-table/holdings-table.component.html 98 @@ -7018,7 +7010,7 @@ Buy and sell - Купити та продати + Купівля та продаж libs/ui/src/lib/i18n.ts 8 @@ -7664,6 +7656,14 @@ 27 + + Early Access + Ранній доступ + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index bf686e325..0b7afdfa9 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -729,23 +729,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -1929,14 +1929,14 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -2330,7 +2330,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -2945,49 +2945,49 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -2998,35 +2998,35 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -3037,14 +3037,14 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -3440,14 +3440,14 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 280 + 279 Get Started apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -5636,7 +5636,7 @@ Valid until apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -6044,7 +6044,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -6058,7 +6058,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6653,7 +6653,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -6663,13 +6663,6 @@ 24 - - NEW - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Data Providers @@ -6769,7 +6762,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -6797,14 +6790,14 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -6933,6 +6926,13 @@ 64 + + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 451040520..9aaa47267 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -752,23 +752,23 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 105 + 104 apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + 108 apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + 112 apps/client/src/app/components/user-account-settings/user-account-settings.html - 119 + 117 apps/client/src/app/pages/features/features-page.html - 261 + 260 @@ -2048,7 +2048,7 @@ 平台 apps/client/src/app/components/admin-settings/admin-settings.component.html - 79 + 81 @@ -2056,7 +2056,7 @@ 标签 apps/client/src/app/components/admin-settings/admin-settings.component.html - 85 + 87 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -2496,7 +2496,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 257 + 255 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3176,7 +3176,7 @@ 语言环境 apps/client/src/app/components/user-account-settings/user-account-settings.html - 129 + 127 @@ -3184,7 +3184,7 @@ 日期和数字格式 apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + 129 @@ -3192,7 +3192,7 @@ 外貌 apps/client/src/app/components/user-account-settings/user-account-settings.html - 154 + 152 @@ -3200,7 +3200,7 @@ 自动 apps/client/src/app/components/user-account-settings/user-account-settings.html - 168 + 166 @@ -3208,7 +3208,7 @@ 明亮 apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 167 @@ -3216,7 +3216,7 @@ 黑暗 apps/client/src/app/components/user-account-settings/user-account-settings.html - 170 + 168 @@ -3224,7 +3224,7 @@ 极简模式 apps/client/src/app/components/user-account-settings/user-account-settings.html - 179 + 177 apps/client/src/app/pages/features/features-page.html @@ -3236,7 +3236,7 @@ 动荡时期的无干扰体验 apps/client/src/app/components/user-account-settings/user-account-settings.html - 180 + 178 @@ -3244,7 +3244,7 @@ 生物识别认证 apps/client/src/app/components/user-account-settings/user-account-settings.html - 196 + 194 @@ -3252,7 +3252,7 @@ 使用指纹登录 apps/client/src/app/components/user-account-settings/user-account-settings.html - 197 + 195 @@ -3260,7 +3260,7 @@ 实验性功能 apps/client/src/app/components/user-account-settings/user-account-settings.html - 213 + 211 @@ -3268,7 +3268,7 @@ 预览即将推出的功能 apps/client/src/app/components/user-account-settings/user-account-settings.html - 214 + 212 @@ -3280,7 +3280,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 230 + 228 @@ -3288,7 +3288,7 @@ 导出数据 apps/client/src/app/components/user-account-settings/user-account-settings.html - 238 + 236 @@ -3728,7 +3728,7 @@ 开源软件 apps/client/src/app/pages/features/features-page.html - 280 + 279 @@ -3736,7 +3736,7 @@ 立即开始 apps/client/src/app/pages/features/features-page.html - 305 + 304 apps/client/src/app/pages/public/public-page.html @@ -6192,7 +6192,7 @@ 有效期至 apps/client/src/app/components/admin-settings/admin-settings.component.html - 26 + 28 libs/ui/src/lib/membership-card/membership-card.component.html @@ -6660,7 +6660,7 @@ Danger Zone apps/client/src/app/components/user-account-settings/user-account-settings.html - 250 + 248 @@ -6668,7 +6668,7 @@ Close Account apps/client/src/app/components/user-account-settings/user-account-settings.html - 285 + 283 @@ -7335,20 +7335,12 @@ 4 - - NEW - NEW - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 15 - - Set API key Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 68 + 70 @@ -7470,7 +7462,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 40 + 42 @@ -7478,7 +7470,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 42 + 44 @@ -7486,7 +7478,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 56 + 58 @@ -7665,6 +7657,14 @@ 64 + + Early Access + Early Access + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 16 + + From b6f202c94e358c2ab2f35b7547c149d0fa4e5980 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Tue, 21 Jan 2025 01:45:23 +0700 Subject: [PATCH 021/164] Feature/upgrade to RxJS 7.8.1 (#4223) * chore(deps): bump rxjs from 7.5.6 to 7.8.1 * fix(deps): remove rxjs resolutions * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 74 +++-------------------------------------------- package.json | 5 +--- 3 files changed, 6 insertions(+), 74 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2cbf3cfa..90fc50422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the language localization for Ukrainian (`uk`) +- Upgraded `rxjs` from version `7.5.6` to `7.8.1` ## 2.135.0 - 2025-01-19 diff --git a/package-lock.json b/package-lock.json index 1969a8201..089626e67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -84,7 +84,7 @@ "passport-headerapikey": "1.2.2", "passport-jwt": "4.0.1", "reflect-metadata": "0.2.2", - "rxjs": "7.5.6", + "rxjs": "7.8.1", "stripe": "17.3.0", "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", @@ -202,15 +202,6 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular": { "version": "19.0.6", "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-19.0.6.tgz", @@ -1195,15 +1186,6 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/sass-loader": { "version": "16.0.3", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.3.tgz", @@ -1370,15 +1352,6 @@ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "license": "MIT" }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/core/node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -1421,15 +1394,6 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-eslint/bundled-angular-compiler": { "version": "19.0.2", "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.0.2.tgz", @@ -7183,16 +7147,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@nestjs/schematics/node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -8301,16 +8255,6 @@ "node": ">=8.10.0" } }, - "node_modules/@nx/nest/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@nx/nest/node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -8655,16 +8599,6 @@ "node": ">=8.10.0" } }, - "node_modules/@nx/webpack/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@nx/webpack/node_modules/tsconfig-paths-webpack-plugin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", @@ -28512,9 +28446,9 @@ "optional": true }, "node_modules/rxjs": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" diff --git a/package.json b/package.json index 1e2996761..d000f38dd 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "passport-headerapikey": "1.2.2", "passport-jwt": "4.0.1", "reflect-metadata": "0.2.2", - "rxjs": "7.5.6", + "rxjs": "7.8.1", "stripe": "17.3.0", "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", @@ -214,8 +214,5 @@ }, "prisma": { "seed": "node prisma/seed.js" - }, - "resolutions": { - "rxjs": "7.5.6" } } From 04d7792b8b1e75f52104c30ac3db6e838ee3c0f4 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Tue, 21 Jan 2025 23:29:21 +0700 Subject: [PATCH 022/164] Feature/upgrade to date-fns version 4 (#4222) * chore(deps): bump date-fns from 3.6.0 to 4.1.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90fc50422..3aaa47b74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the language localization for Ukrainian (`uk`) +- Upgraded `date-fns` from version `3.6.0` to `4.1.0` - Upgraded `rxjs` from version `7.5.6` to `7.8.1` ## 2.135.0 - 2025-01-19 diff --git a/package-lock.json b/package-lock.json index 089626e67..875c3cf74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -62,7 +62,7 @@ "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", "countup.js": "2.8.0", - "date-fns": "3.6.0", + "date-fns": "4.1.0", "envalid": "8.0.0", "google-spreadsheet": "3.2.0", "helmet": "7.0.0", @@ -16004,9 +16004,9 @@ } }, "node_modules/date-fns": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", "funding": { "type": "github", diff --git a/package.json b/package.json index d000f38dd..e45b1f665 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", "countup.js": "2.8.0", - "date-fns": "3.6.0", + "date-fns": "4.1.0", "envalid": "8.0.0", "google-spreadsheet": "3.2.0", "helmet": "7.0.0", From 39ac6f352fe45bc93362c943c5369928fde6a30a Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 22 Jan 2025 19:32:59 +0100 Subject: [PATCH 023/164] Feature/extend get historical in financial modeling prep service (#4229) * Extend get historical * Update changelog --- CHANGELOG.md | 1 + .../financial-modeling-prep.service.ts | 57 ++++++++++++------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3aaa47b74..f75a63fc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Extended the _Financial Modeling Prep_ service - Improved the language localization for Ukrainian (`uk`) - Upgraded `date-fns` from version `3.6.0` to `4.1.0` - Upgraded `rxjs` from version `7.5.6` to `7.8.1` diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index ac6b5822e..c7550080b 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -29,6 +29,7 @@ import { isISIN } from 'class-validator'; import { countries } from 'countries-list'; import { addDays, + addYears, format, isAfter, isBefore, @@ -273,30 +274,44 @@ export class FinancialModelingPrepService implements DataProviderInterface { }: GetHistoricalParams): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { + const MAX_YEARS_PER_REQUEST = 5; + const result: { + [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; + } = { + [symbol]: {} + }; + + let currentFrom = from; + try { - const { historical } = await fetch( - `${this.URL}/historical-price-full/${symbol}?apikey=${this.apiKey}`, - { - signal: AbortSignal.timeout(requestTimeout) - } - ).then((res) => res.json()); + while (isBefore(currentFrom, to) || isSameDay(currentFrom, to)) { + const currentTo = isBefore( + addYears(currentFrom, MAX_YEARS_PER_REQUEST), + to + ) + ? addYears(currentFrom, MAX_YEARS_PER_REQUEST) + : to; + + const { historical } = await fetch( + `${this.URL}/historical-price-full/${symbol}?apikey=${this.apiKey}&from=${format(currentFrom, DATE_FORMAT)}&to=${format(currentTo, DATE_FORMAT)}`, + { + signal: AbortSignal.timeout(requestTimeout) + } + ).then((res) => res.json()); - const result: { - [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; - } = { - [symbol]: {} - }; - - for (const { adjClose, date } of historical) { - if ( - (isSameDay(parseDate(date), from) || - isAfter(parseDate(date), from)) && - isBefore(parseDate(date), to) - ) { - result[symbol][date] = { - marketPrice: adjClose - }; + for (const { adjClose, date } of historical) { + if ( + (isSameDay(parseDate(date), currentFrom) || + isAfter(parseDate(date), currentFrom)) && + isBefore(parseDate(date), currentTo) + ) { + result[symbol][date] = { + marketPrice: adjClose + }; + } } + + currentFrom = addYears(currentFrom, MAX_YEARS_PER_REQUEST); } return result; From 553c10ac91ebdfa27ddfbd945d62f225f1c1d388 Mon Sep 17 00:00:00 2001 From: Miguel Borges de Freitas Date: Wed, 22 Jan 2025 18:55:09 +0000 Subject: [PATCH 024/164] Bugfix/fix issue with MIME type detection in scraper configuration (#4237) * Fix issue with MIME type detection in scraper configuration * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/services/data-provider/manual/manual.service.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f75a63fc6..bd9c29aea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `date-fns` from version `3.6.0` to `4.1.0` - Upgraded `rxjs` from version `7.5.6` to `7.8.1` +### Fixed + +- Fixed an issue with the MIME type detection in the scraper configuration + ## 2.135.0 - 2025-01-19 ### Changed diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 108ccbf89..dfda922c6 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -282,7 +282,7 @@ export class ManualService implements DataProviderInterface { ) }); - if (response.headers['content-type']?.includes('application/json')) { + if (response.headers.get('content-type')?.includes('application/json')) { const data = await response.json(); const value = String( From 59f0307dcf5badb05f3945112e9657ffabea03c8 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Fri, 24 Jan 2025 02:10:44 +0700 Subject: [PATCH 025/164] Feature/set up GitHub action to extract locales (#4239) * Set up a GitHub action to extract locales when main branch changes * Update changelog --- .github/workflows/extract-locales.yml | 40 +++++++++++++++++++++++++++ CHANGELOG.md | 4 +++ 2 files changed, 44 insertions(+) create mode 100644 .github/workflows/extract-locales.yml diff --git a/.github/workflows/extract-locales.yml b/.github/workflows/extract-locales.yml new file mode 100644 index 000000000..c17eac5b6 --- /dev/null +++ b/.github/workflows/extract-locales.yml @@ -0,0 +1,40 @@ +name: Extract locales + +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +jobs: + extract_locales: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install dependencies + run: npm ci + + - name: Extract locales + run: npm run extract-locales + + - name: Check changes + id: verify-changed-files + uses: tj-actions/verify-changed-files@v20 + + - name: Create pull request + if: steps.verify-changed-files.outputs.files_changed == 'true' + uses: peter-evans/create-pull-request@v7 + with: + author: 'github-actions[bot] ' + branch: 'feature/update-locales' + commit-message: 'Update locales' + delete-branch: true + title: 'Feature/update locales' + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index bd9c29aea..047f5a452 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Set up a _GitHub Action_ to automatically extract locales when the `main` branch changes + ### Changed - Extended the _Financial Modeling Prep_ service From cca26040bf4d5981364c43a10fcd7c3041387647 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 23 Jan 2025 20:53:50 +0100 Subject: [PATCH 026/164] Feature/extend get asset profile in financial modeling prep service (#4230) * Extend get asset profile by ETF website --- .../financial-modeling-prep.service.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index c7550080b..2d42fe21c 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -124,6 +124,19 @@ export class FinancialModelingPrepService implements DataProviderInterface { } ); + const [etfInformation] = await fetch( + `${this.getUrl({ version: 4 })}/etf-info?symbol=${symbol}&apikey=${this.apiKey}`, + { + signal: AbortSignal.timeout( + this.configurationService.get('REQUEST_TIMEOUT') + ) + } + ).then((res) => res.json()); + + if (etfInformation.website) { + response.url = etfInformation.website; + } + const [portfolioDate] = await fetch( `${this.getUrl({ version: 4 })}/etf-holdings/portfolio-date?symbol=${symbol}&apikey=${this.apiKey}`, { From 4b65b6277eaccaa1bfea1ea5a27a30dd485fad4b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 23 Jan 2025 21:43:09 +0100 Subject: [PATCH 027/164] Feature/refresh cryptocurrencies list 20250123 (#4245) * Update cryptocurrencies.json * Update changelog --- CHANGELOG.md | 1 + .../cryptocurrencies/cryptocurrencies.json | 148 +++++++++++++++--- 2 files changed, 129 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 047f5a452..f7d54d785 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Extended the _Financial Modeling Prep_ service - Improved the language localization for Ukrainian (`uk`) +- Refreshed the cryptocurrencies list - Upgraded `date-fns` from version `3.6.0` to `4.1.0` - Upgraded `rxjs` from version `7.5.6` to `7.8.1` diff --git a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json index f77297d07..7d414ef11 100644 --- a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json +++ b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json @@ -41,6 +41,7 @@ "0xVPN": "0xVPN.org", "1-UP": "1-UP", "1000SATS": "SATS", + "1000X": "1000x by Virtuals", "10SET": "Tenset", "1ART": "ArtWallet", "1CAT": "Bitcoin Cats", @@ -212,6 +213,7 @@ "ACM": "AC Milan Fan Token", "ACN": "AvonCoin", "ACOIN": "ACoin", + "ACOLYT": "Acolyte by Virtuals", "ACP": "Anarchists Prime", "ACPT": "Crypto Accept", "ACQ": "Acquire.Fi", @@ -332,6 +334,7 @@ "AGIL": "Agility LSD", "AGIV1": "SingularityNET v1", "AGIX": "SingularityNET", + "AGIXBT": "AGIXBT by Virtuals", "AGLA": "Angola", "AGLD": "Adventure Gold", "AGM": "Argoneum", @@ -363,12 +366,13 @@ "AIBCOIN": "AIBLOCK", "AIBK": "AIB Utility Token", "AIBU": "AIBUZZ TOKEN", - "AIC": "AI Crypto", + "AIC": "AI Companions", "AICELL": "AICell", "AICH": "AIChain", "AICO": "AICON", "AICODE": "AI CODE", "AICORE": "AICORE", + "AICRYPTO": "AI Crypto", "AID": "AidCoin", "AIDA": "Ai-Da robot", "AIDI": "Aidi Inu", @@ -405,6 +409,7 @@ "AINU": "Ainu Token", "AION": "Aion", "AIONE": "AiONE", + "AIOS": "INT OS", "AIOT": "AIOT Token", "AIOZ": "AIOZ Network", "AIPAD": "AIPAD", @@ -438,6 +443,7 @@ "AITRA": "Aitra", "AITT": "AITrading", "AIUS": "Arbius", + "AIVIA": "AI Virtual Agents", "AIWALLET": "AiWallet Token", "AIX": "Aigang", "AIXBT": "aixbt by Virtuals", @@ -617,6 +623,7 @@ "ANDYBSC": "ANDY", "ANDYMAN": "ANDYMAN", "ANDYSOL": "Andy on SOL", + "ANEX": "AstroNexus", "ANGEL": "Crypto Angel", "ANGL": "Angel Token", "ANGLE": "ANGLE", @@ -743,13 +750,14 @@ "ARBS": "Arbswap", "ARBT": "ARBITRAGE", "ARBUZ": "ARBUZ", - "ARC": "Arc", + "ARC": "AI Rig Complex", "ARCA": "Legend of Arcadia", "ARCAD": "Arcadeum", "ARCADE": "ARCADE", "ARCADECITY": "Arcade City", "ARCADEF": "arcadefi", "ARCADEN": "ArcadeNetwork", + "ARCAI": "ARCAI", "ARCANE": "Arcane Token", "ARCAS": "Arcas", "ARCH": "Archway", @@ -757,6 +765,7 @@ "ARCHCOIN": "ArchCoin", "ARCHE": "Archean", "ARCHIVE": "Chainback", + "ARCINTEL": "Arc", "ARCO": "AquariusCoin", "ARCONA": "Arcona", "ARCT": "ArbitrageCT", @@ -1272,6 +1281,7 @@ "BASEDP": "Based Pepe", "BASEDR": "Based Rabbit", "BASEDS": "BasedSwap", + "BASEDTURBO": "Based Turbo", "BASEDV1": "Based Money v1", "BASEHEROES": "Baseheroes", "BASEPROTOCOL": "Base Protocol", @@ -1393,6 +1403,7 @@ "BDID": "BDID", "BDL": "Bitdeal", "BDOG": "Bulldog Token", + "BDOGITO": "BullDogito", "BDOT": "Binance Wrapped DOT", "BDP": "Big Data Protocol", "BDPI": "Interest Bearing Defi Pulse Index", @@ -1513,6 +1524,7 @@ "BFT": "BF Token", "BFTB": "Brazil Fan Token", "BFTC": "BITS FACTOR", + "BFWOG": "Based Fwog (basedfwog.info)", "BFX": "BitFinex Tokens", "BG": "BunnyPark Game", "BGB": "Bitget token", @@ -1591,7 +1603,7 @@ "BINS": "Bitsense", "BINTEX": "Bintex Futures", "BINU": "Blast Inu", - "BIO": "BITONE", + "BIO": "Bio Protocol", "BIOB": "BioBar", "BIOC": "BioCrypt", "BIOCOIN": "Biocoin", @@ -1646,6 +1658,7 @@ "BITNEW": "BitNewChain", "BITO": "BitoPro Exchange Token", "BITOK": "BitOKX", + "BITONE": "BITONE", "BITORB": "BitOrbit", "BITRA": "Bitratoken", "BITRADIO": "Bitradio", @@ -2015,6 +2028,7 @@ "BOSU": "Bosu Inu", "BOT": "Bot Planet", "BOTC": "BotChain", + "BOTIFY": "BOTIFY", "BOTS": "ArkDAO", "BOTTO": "Botto", "BOTX": "BOTXCOIN", @@ -2144,6 +2158,7 @@ "BROTHER": "BROTHER", "BROWN": "BrowniesSwap", "BROZ": "Brozinkerbell", + "BRP": "BananaRepublic", "BRRR": "Burrow", "BRS": "Broovs Projects", "BRT": "Bikerush", @@ -2288,6 +2303,7 @@ "BTNYX": "BitOnyx Token", "BTO": "Bottos", "BTOP": "Botopia.Finance", + "BTORO": "Bitoro Network", "BTP": "Bitpaid", "BTPL": "Bitcoin Planet", "BTQ": "BitQuark", @@ -2577,6 +2593,7 @@ "CATELON": "CatElonMars", "CATEX": "CATEX", "CATFISH": "Catfish", + "CATG": "Crypto Agent Trading", "CATGAME": "Cookie Cat Game", "CATGIRL": "Catgirl", "CATGOKU": "Catgoku", @@ -2789,6 +2806,7 @@ "CHAT": "Solchat", "CHATAI": "ChatAI Token", "CHATGPT": "AI Dragon", + "CHATOSHI": "chAtoshI", "CHATTY": "ChatGPT's Mascot", "CHB": "COINHUB TOKEN", "CHBR": "CryptoHub", @@ -2993,6 +3011,7 @@ "CLU": "CluCoin", "CLUB": "ClubCoin", "CLUD": "CludCoin", + "CLUSTR": "Clustr Labs", "CLV": "Clover Finance", "CLVA": "Clever DeFi", "CLVX": "Calvex", @@ -3337,6 +3356,7 @@ "CROWD": "CrowdCoin", "CROWDWIZ": "Crowdwiz", "CROWN": "Crown by Third Time Games", + "CROWWITH": "crow with knife", "CROX": "CroxSwap", "CRP": "Crypton", "CRPS": "CryptoPennies", @@ -3793,6 +3813,7 @@ "DEER": "ToxicDeer Finance", "DEEX": "DEEX", "DEEZ": "DEEZ NUTS", + "DEFAI": "DeFAI", "DEFC": "Defi Coin", "DEFEND": "Blockdefend AI", "DEFI": "DeFi", @@ -3980,6 +4001,7 @@ "DIGI": "Digiverse", "DIGIC": "DigiCube", "DIGIF": "DigiFel", + "DIGIMON": "Digimon", "DIGIT": "Digital Asset Rights Token", "DIGITAL": "Digital Reserve Currency", "DIGITS": "Digits DAO", @@ -4327,6 +4349,7 @@ "DRS": "Digital Rupees", "DRT": "DomRaider", "DRUGS": "Big Pharmai", + "DRV": "Derive", "DRXNE": "Droxne", "DRZ": "Droidz", "DS": "DeStorage", @@ -4386,6 +4409,7 @@ "DUC": "DucatusCoin", "DUCATO": "Ducato Protocol Token", "DUCK": "Unit Protocol New", + "DUCKAI": "Duck AI", "DUCKC": "DuckCoin", "DUCKD": "DuckDuckCoin", "DUCKER": "Ducker", @@ -4463,6 +4487,7 @@ "DYAD": "Dyad Stable", "DYC": "Dycoin", "DYDX": "dYdX", + "DYDXV1": "dYdX v1", "DYM": "Dymension", "DYN": "Dynamic", "DYNA": "Dynamix", @@ -4622,7 +4647,8 @@ "EGI": "eGame", "EGL": "The Eagle Of Truth", "EGLD": "eGold", - "EGO": "EGOcoin", + "EGO": "Paysenger EGO", + "EGOCOIN": "EGOcoin", "EGOD": "EgodCoin", "EGOLD": "EGOLD", "EGON": "EgonCoin", @@ -4722,7 +4748,6 @@ "ELUSKMON": "Elusk Mon", "ELV": "Elvantis", "ELVN": "11Minutes", - "ELX": "Energy Ledger", "ELY": "Elysian", "ELYS": "Elys Network", "ELYSIUM": "Elysium", @@ -4773,6 +4798,7 @@ "ENE": "EneCoin", "ENEAR": "Near (Energiswap)", "ENEDEX": "Enedex", + "ENERGYLEDGER": "Energy Ledger", "ENERGYX": "Safe Energy", "ENG": "Enigma", "ENGT": "Engagement Token", @@ -5003,6 +5029,7 @@ "EVAI": "EVA Intelligence", "EVAN": "Evanesco Network", "EVAULT": "EthereumVault", + "EVAV1": "Evadore v1", "EVC": "Eventchain", "EVCC": "Eco Value Coin", "EVCOIN": "EverestCoin", @@ -5111,10 +5138,11 @@ "FADO": "FADO Go", "FAG": "PoorFag", "FAH": "Falcons", - "FAI": "Fairum", + "FAI": "Freysa AI", "FAIR": "FairCoin", "FAIRC": "Faireum Token", "FAIRG": "FairGame", + "FAIRUM": "Fairum", "FAKE": "FAKE COIN", "FAKEAI": "DeepFakeAI", "FAKT": "Medifakt", @@ -5633,7 +5661,8 @@ "FUBAO": "FUBAO", "FUCK": "Fuck Token", "FUD": "FUD.finance", - "FUEL": "Jetfuel Finance", + "FUEGO": "FUEGO", + "FUEL": "Fuel Network", "FUELX": "Fuel", "FUFU": "Fufu Token", "FUG": "FUG", @@ -5754,6 +5783,7 @@ "GAMEST": "GameStop Coin", "GAMESTARS": "Game Stars", "GAMESTO": "GameStop", + "GAMESTOP": "GameStop", "GAMESTUMP": "GAMESTUMP", "GAMET": "GAME Token", "GAMEX": "GameX", @@ -5978,6 +6008,7 @@ "GINGER": "GINGER", "GINNAN": "Ginnan The Cat", "GINOA": "Ginoa", + "GINU": "Green Shiba Inu", "GINUX": "Green Shiba Inu", "GINZA": "GINZA NETWORK", "GIO": "Graviocoin", @@ -6546,6 +6577,9 @@ "HEM": "Hemera", "HEMAN": "HE-MAN", "HEMULE": "Hemule", + "HENG": "HengCoin", + "HENLO": "Henlo", + "HENLOV1": "Henlo v1", "HEP": "Health Potion", "HER": "Hero Node", "HERA": "Hero Arena", @@ -6652,6 +6686,8 @@ "HLINK": "Chainlink (Harmony One Bridge)", "HLM": "Helium", "HLN": "Holonus", + "HLO": "Halo", + "HLOV1": "Halo v1", "HLP": "Purpose Coin", "HLPR": "HELPER COIN", "HLPT": "HLP Token", @@ -6777,6 +6813,7 @@ "HSAI": "HealthSci.AI", "HSC": "HashCoin", "HSF": "Hillstone Finance", + "HSK": "HashKey Platform Token", "HSN": "Hyper Speed Network", "HSP": "Horse Power", "HSS": "Hashshare", @@ -6792,6 +6829,7 @@ "HTDF": "Orient Walt", "HTE": "Hepton", "HTER": "Biogen", + "HTERM": "Hiero Terminal", "HTK": "Hard To Kill", "HTM": "Hatom", "HTML": "HTML Coin", @@ -6816,6 +6854,7 @@ "HUM": "Humanscape", "HUMAI": "Humanoid AI", "HUMP": "Hump", + "HUMV1": "Humanscape v1", "HUND": "HUND MEME COIN", "HUNDRED": "HUNDRED", "HUNNY": "Pancake Hunny", @@ -6952,6 +6991,7 @@ "IDO": "Idexo", "IDOL": "IDOLINU", "IDORU": "Vip2Fan", + "IDRISS": "IDRISS", "IDRT": "Rupiah Token", "IDRX": "IDRX", "IDT": "InvestDigital", @@ -7309,10 +7349,12 @@ "JET": "Jet Protocol", "JETCAT": "Jetcat", "JETCOIN": "Jetcoin", + "JETFUEL": "Jetfuel Finance", "JETTON": "JetTon Game", "JEUR": "Jarvis Synthetic Euro", "JEW": "Shekel", "JEWEL": "DeFi Kingdoms", + "JEWELRY": "Jewelry Token", "JEX": "JEX Token", "JF": "Jswap.Finance", "JFI": "JackPool.finance", @@ -7347,6 +7389,7 @@ "JMT": "JMTIME", "JMZ": "Jimizz", "JNB": "Jinbi Token", + "JNFTC": "Jumbo Blockchain", "JNGL": "Jungle Labz", "JNS": "Janus", "JNT": "Jibrel Network Token", @@ -7358,6 +7401,7 @@ "JOE": "JOE", "JOEB": "Joe Biden", "JOEBIDEN2024 ": "JOEBIDEN2024", + "JOECOIN": "Joe Coin", "JOEY": "Joey Inu", "JOGECO": "Jogecodog", "JOHM": "Johm lemmon", @@ -7556,6 +7600,7 @@ "KEK": "KekCoin", "KEKE": "KEK", "KEKEC": "THE BALKAN DWARF", + "KEKIUS": "Kekius Maximus", "KEL": "KelVPN", "KELP": "KELP", "KELPE": "Kelp Earned Points", @@ -7576,6 +7621,9 @@ "KET": "KET", "KETAMINE": "Ketamine", "KETAN": "Ketan", + "KEVIN": "Kevin (kevinonbase.xyz)", + "KEVINTOKENME": "KEVIN (kevintoken.me)", + "KEVINTOKENNET": "Kevin", "KEX": "Kira Network", "KEXCOIN": "KexCoin", "KEY": "SelfKey", @@ -7605,6 +7653,7 @@ "KICKS": "GetKicks", "KIDEN": "RoboKiden", "KIF": "KittenFinance", + "KIKI": "Kiki Flaminki", "KIKO": "KIKO", "KILLA": "The Bitcoin Killa", "KILLER": "Fat Cat Killer", @@ -7724,6 +7773,7 @@ "KOGE": "BNB48 Club Token", "KOGECOIN": "KogeCoin.io", "KOI": "Koi", + "KOII": "Koii", "KOIN": "Koinos", "KOINB": "KoinBülteni Token", "KOINETWORK": "Koi Network", @@ -7823,6 +7873,7 @@ "KUBE": "KubeCoin", "KUBO": "KUBO", "KUBOS": "KubosCoin", + "KUDAI": "Kudai", "KUE": "Kuende", "KUJI": "Kujira", "KUKU": "KuKu", @@ -7867,6 +7918,7 @@ "KZC": "KZCash", "KZEN": "Kaizen", "L": "L inu", + "L1": "Lamina1", "L2": "Leverj Gluon", "L2DAO": "Layer2DAO", "L3": "Layer3", @@ -7928,7 +7980,8 @@ "LATX": "Latium", "LAUGHCOIN": "Laughcoin", "LAUNCH": "Launchblock.com", - "LAVA": "Lavaswap", + "LAVA": "Lava Network", + "LAVASWAP": "Lavaswap", "LAVAX": "LavaX Labs", "LAVE": "Lavandos", "LAVITA": "Lavita AI", @@ -7992,6 +8045,7 @@ "LEE": "Love Earn Enjoy", "LEET": "LeetSwap", "LEG": "Legia Warsaw Fan Token", + "LEGEND": "Legend", "LEGION": "LEGION", "LEGO": "Lego Coin", "LEIA": "Leia", @@ -8093,6 +8147,7 @@ "LIGHTSPEED": "LightSpeedCoin", "LIGMA": "Ligma Node", "LIGO": "Ligo", + "LIHUA": "LIHUA", "LIKE": "Only1", "LIKEC": "LikeCoin", "LILA": "LiquidLayer", @@ -8100,6 +8155,7 @@ "LILFLOKI": "Lil Floki", "LILPUMP": "lilpump", "LILY": "LILY-The Gold Digger", + "LIMBO": "Limbo", "LIME": "iMe Lab", "LIMEX": "Limestone Network", "LIMITEDCOIN": "Limited Coin", @@ -8167,6 +8223,7 @@ "LLAND": "Lyfe Land", "LLG": "Loligo", "LLION": "Lydian Lion", + "LLM": "Large Language Model Based", "LLT": "LILLIUS", "LM": "LeisureMeta", "LMAO": "LMAO Finance", @@ -8366,6 +8423,7 @@ "LUFFY": "Luffy", "LUFFYG": "Luffy G5", "LUFFYOLD": "Luffy", + "LUFFYV1": "Luffy v1", "LUIGI": "Luigi Inu", "LUIS": "Tongue Cat", "LULU": "LULU", @@ -8394,7 +8452,8 @@ "LUSH": "Lush AI", "LUT": "Cinemadrom", "LUTETIUM": "Lutetium Coin", - "LUX": "LUXCoin", + "LUX": "Lux Token", + "LUXCOIN": "LUXCoin", "LUXO": "Luxo", "LUXU": "Luxury Travel Token", "LUXY": "Luxy", @@ -8449,6 +8508,7 @@ "MADAGASCARTOKEN": "Madagascar Token", "MADANA": "MADANA", "MADC": "MadCoin", + "MADCOIN": "MAD", "MADH": "Madhouse", "MADOG": "MarvelDoge", "MADP": "Mad Penguin", @@ -8456,13 +8516,14 @@ "MAEP": "Maester Protocol", "MAF": "MetaMAFIA", "MAG": "Magnify Cash", - "MAGA": "MAGA Hat", + "MAGA": "MAGA", "MAGA2024": "MAGA2024", "MAGAA": "MAGA AGAIN", "MAGAC": "MAGA CAT", "MAGACA": "MAGA CAT", "MAGACAT": "MAGACAT", "MAGADOGE": "MAGA DOGE", + "MAGAHAT": "MAGA Hat", "MAGAIBA": "Magaiba", "MAGAN": "Maganomics On Solana", "MAGANOMICS": "Maganomics", @@ -8577,6 +8638,7 @@ "MATAR": "MATAR AI", "MATCH": "Matching Game", "MATE": "Mate", + "MATES": "MATES", "MATH": "MATH", "MATIC": "Polygon", "MATICX": "Stader MaticX", @@ -8607,6 +8669,7 @@ "MAZI": "MaziMatic", "MAZZE": "Mazze", "MB": "MineBee", + "MB28": "MBridge28", "MB4": "Matthew Box 404", "MB8": "MB8 Coin", "MBAG": "MoonBag", @@ -8741,7 +8804,8 @@ "MEI": "Mei Solutions", "MEIZHU": "GUANGZHOU ZOO NEW BABY PANDA", "MEL": "MELX", - "MELANIA": "Melania Trump", + "MELANIA": "Melania Meme", + "MELANIATRUMP": "Melania Trump", "MELB": "Minelab", "MELD": "MELD", "MELI": "Meli Games", @@ -8819,6 +8883,7 @@ "METAF": "MetaFastest", "METAG": "MetagamZ", "METAGEAR": "MetaGear", + "METAIVERSE": "MetAIverse", "METAL": "Metal Blockchain", "METALCOIN": "MetalCoin", "METAMEME": "met a meta metameme", @@ -9732,6 +9797,7 @@ "NEXXO": "Nexxo", "NEZHA": "NezhaToken", "NFAI": "Not Financial Advice", + "NFAIV1": "Not Financial Advice v1", "NFCR": "NFCore", "NFD": "Feisty Doge NFT", "NFE": "Edu3Labs", @@ -9857,6 +9923,7 @@ "NOBS": "No BS Crypto", "NOCHILL": "AVAX HAS NO CHILL", "NODE": "Whole Network", + "NODESYNAPSE": "NodeSynapse", "NODIDDY": "NODIDDY", "NODIS": "Nodis", "NODL": "Nodle Network", @@ -9928,7 +9995,7 @@ "NRV": "Nerve Finance", "NRVE": "Narrative", "NRX": "Neironix", - "NS": "NodeSynapse", + "NS": "SuiNS Token", "NS2DRP": "New Silver Series 2 DROP", "NSBT": "Neutrino Token", "NSD": "Nasdacoin", @@ -10620,7 +10687,8 @@ "PEGAMAGA": "Pepe Maga", "PEGG": "PokPok Golden Egg", "PEGS": "PegShares", - "PEIPEI": "PEIPEI", + "PEIPEI": "PeiPei", + "PEIPEICN": "PEIPEI", "PEKA": "PEKA", "PEKC": "Peacock Coin", "PEKINU": "PEKI INU", @@ -10891,6 +10959,7 @@ "PLANET": "PLANET", "PLANETCOIN": "PlanetCoin", "PLANETS": "PlanetWatch", + "PLANT": "Plant", "PLASTIK": "Plastiks", "PLAT": "BitGuild PLAT", "PLATC": "PlatinCoin", @@ -10941,6 +11010,7 @@ "PLU": "Pluton", "PLUG": "PL^Gnet", "PLUGCN": "Plug Chain", + "PLUME": "Plume", "PLUP": "PoolUp", "PLURA": "PluraCoin", "PLUS1": "PlusOneCoin", @@ -11118,6 +11188,7 @@ "PPAY": "Plasma Finance", "PPBLZ": "Pepemon Pepeballs", "PPC": "PeerCoin", + "PPCOIN": "Project Plutus", "PPFT": "Papparico Finance", "PPI": "Primpy", "PPIZZA": "P Pizza", @@ -11285,6 +11356,7 @@ "PUMP": "PUMP", "PUMPBTC": "pumpBTC", "PUMPFUNBAN": "Pump Fun Ban", + "PUMPTRUMP": "PUMP TRUMP", "PUN": "Punkko", "PUNCH": "PUNCHWORD", "PUNDIX": "Pundi X", @@ -11360,6 +11432,7 @@ "PYRV1": "Vulcan Forged v1", "PYT": "Payther", "PYTH": "Pyth Network", + "PYTHIA": "Pythia", "PYUSD": "PayPal USD", "PZETH": "pzETH", "PZM": "Prizm", @@ -11683,6 +11756,7 @@ "RENQ": "Renq Finance", "RENS": "Rens", "RENT": "Rent AI", + "RENTA": "Renta Network", "RENTBE": "Rentberry", "REP": "Augur", "REPE": "Resistance Pepe", @@ -11766,6 +11840,7 @@ "RIDEMY": "Ride My Car", "RIF": "RIF Token", "RIF3": "MetaTariffv3", + "RIFA": "Rifampicin", "RIFI": "Rikkei Finance", "RIGEL": "Rigel Finance", "RIK": "RIKEZA", @@ -11952,6 +12027,7 @@ "RSUN": "RisingSun", "RSUSHI": "Sushi (Rainbow Bridge)", "RSV": "Reserve", + "RSVV1": "Reserve v1", "RSWETH": "Restaked Swell Ethereum", "RT2": "RotoCoin", "RTB": "AB-CHAIN", @@ -11999,6 +12075,8 @@ "RUX": "Gacrux NFT", "RVC": "Revenue Coin", "RVF": "RocketX exchange", + "RVFV1": "RocketX exchange v1", + "RVFV2": "RocketX exchange v2", "RVL": "Revolotto", "RVLNG": "RevolutionGames", "RVLT": "Revolt 2 Earn", @@ -12170,7 +12248,7 @@ "SBTC": "Super Bitcoin", "SC": "Siacoin", "SC20": "Shine Chain", - "SCA": "SiaClassic", + "SCA": "Scallop", "SCALE": "Scalia Infrastructure", "SCAM": "Scam Coin", "SCAMP": "ScamPump", @@ -12244,8 +12322,10 @@ "SDAO": "SingularityDAO", "SDC": "ShadowCash", "SDCRV": "Stake DAO CRV", + "SDEUSD": "Staked deUSD", "SDEX": "SmarDex", "SDL": "Saddle Finance", + "SDM": "Shieldeum", "SDME": "SDME", "SDN": "Shiden Network", "SDO": "TheSolanDAO", @@ -12311,6 +12391,7 @@ "SENSOV1": "SENSO v1", "SENSUS": "Sensus", "SENT": "Sentinel", + "SENTAI": "SentAI", "SENTI": "Sentinel Bot Ai", "SENTR": "Sentre Protocol", "SEON": "Seedon", @@ -12519,6 +12600,7 @@ "SHX": "Stronghold Token", "SHYTCOIN": "ShytCoin", "SI": "Siren", + "SIACLASSIC": "SiaClassic", "SIB": "SibCoin", "SIBA": "SibaInu", "SIC": "Swisscoin", @@ -12552,6 +12634,7 @@ "SILVERSTAND": "Silver Standard", "SILVERWAY": "Silverway", "SIM": "Simpson", + "SIMBA": "SIMBA The Sloth", "SIMP": "SO-COL", "SIMPLE": "SimpleChain", "SIMPS": "Simpson MAGA", @@ -12715,6 +12798,7 @@ "SMLY": "SmileyCoin", "SMM": "TrendingTool.io", "SMOG": "Smog", + "SMOK": "Smoking Chicken Fish", "SMOKE": "Smoke", "SMOL": "Smolcoin", "SMOLE": "smolecoin", @@ -12741,6 +12825,7 @@ "SNA": "SUKUYANA", "SNAC": "SnackboxAI", "SNACK": "Crypto Snack", + "SNAI": "SwarmNode.ai", "SNAIL": "SnailBrook", "SNAKE": "snake", "SNAKES": "Snakes Game", @@ -12817,7 +12902,8 @@ "SOFTCO": "SOFT COQ INU", "SOH": "Stohn Coin", "SOHOT": "SOHOTRN", - "SOIL": "SoilCoin", + "SOIL": "Soil", + "SOILCOIN": "SoilCoin", "SOJ": "Sojourn Coin", "SOK": "shoki", "SOKU": "Soku Swap", @@ -12877,6 +12963,7 @@ "SOLSPONGE": "Solsponge", "SOLT": "Soltalk AI", "SOLTR": "SolTrump", + "SOLV": "Solv Protocol", "SOLVBTC": "Solv Protocol SolvBTC", "SOLVBTCBBN": "Solv Protocol SolvBTC.BBN", "SOLVBTCCORE": "Solv Protocol SolvBTC.CORE", @@ -12971,6 +13058,7 @@ "SPENDC": "SpendCoin", "SPENT": "Espento", "SPEPE": "SolanaPepe", + "SPERG": "Bloomsperg Terminal", "SPEX": "StepEx", "SPF": "SportyCo", "SPFC": "São Paulo FC Fan Token", @@ -13040,6 +13128,7 @@ "SPY": "Smarty Pay", "SPYRO": "SPYRO", "SQAT": "Syndiqate", + "SQD": "SQD", "SQG": "Squid Token", "SQGROW": "SquidGrow", "SQL": "Squall Coin", @@ -13296,6 +13385,7 @@ "SUIA": "SUIA", "SUIAI": "SUI Agents", "SUIB": "Suiba Inu", + "SUIDEPIN": "Sui DePIN", "SUIJAK": "Suijak", "SUILAMA": "Suilama", "SUIMAN": "Suiman", @@ -13385,6 +13475,7 @@ "SWAPP": "SWAPP Protocol", "SWAPZ": "SWAPZ.app", "SWARM": "SwarmCoin", + "SWARMS": "Swarms", "SWASH": "Swash", "SWAY": "Sway Social", "SWBTC": "Swell Restaked BTC", @@ -13449,6 +13540,7 @@ "SYLO": "Sylo", "SYLV": "Sylvester", "SYM": "SymVerse", + "SYMP": "Sympson AI", "SYN": "Synapse", "SYNC": "Syncus", "SYNCC": "SyncCoin", @@ -13462,7 +13554,8 @@ "SYNR": "MOBLAND", "SYNT": "Synthetix Network", "SYNTE": "Synternet", - "SYNTH": "Synthswap", + "SYNTH": "SYNTHR", + "SYNTHSWAP": "Synthswap", "SYNX": "Syndicate", "SYPOOL": "Sypool", "SYRUP": "Syrup", @@ -13679,7 +13772,6 @@ "THAVAGE": "Mike Tython", "THC": "The Hempcoin", "THD": "Trump Harris Debate", - "THE": "The Protocol", "THE9": "THE9", "THEAICOIN": "AI", "THEB": "The Boys Club", @@ -13697,7 +13789,9 @@ "THEN": "THENA", "THEO": "Theopetra", "THEOS": "Theos", + "THEP": "The Protocol", "THES": "The Standard Protocol (USDS)", + "THESTANDARD": "Standard Token", "THETA": "Theta Network", "THETAN": "Thetan Coin", "THETRIBE": "The Tribe", @@ -13751,7 +13845,8 @@ "TIM": "TIMTIM GAMES", "TIME": "Chrono.tech", "TIMES": "DARKTIMES", - "TIMI": "Timicoin", + "TIMI": "This Is My Iguana", + "TIMICOIN": "Timicoin", "TIN": "Token IN", "TINC": "Tiny Coin", "TINKU": "TinkuCoin", @@ -14023,7 +14118,7 @@ "TRUM": "TrumpBucks", "TRUMAGA": "TrumpMAGA", "TRUMATIC": "TruFin Staked MATIC", - "TRUMP": "MAGA", + "TRUMP": "OFFICIAL TRUMP", "TRUMP2": "Trump2024", "TRUMP2024": "Donald Trump", "TRUMP3": "Trump MP3", @@ -14048,7 +14143,8 @@ "TRUMPHAT": "Trump Hat", "TRUMPINU": "Trump Inu", "TRUMPJ": "TRUMPJR", - "TRUMPJR": "TrumpJr", + "TRUMPJR": "OFFICIAL TRUMP JR", + "TRUMPJRVIP": "TrumpJr", "TRUMPM": "TRUMP MAGA PRESIDENT", "TRUMPMA": "TRUMP MAGA SUPER", "TRUMPMAGA": "President Trump MAGA", @@ -14094,6 +14190,7 @@ "TSLT": "Tamkin", "TSN": "Tsunami Exchange Token", "TSR": "Tesra", + "TST": "Teleport System Token", "TSUBASAUT": "TSUBASA Utility Token", "TSUGT": "Captain Tsubasa", "TSUJI": "Tsutsuji", @@ -14234,6 +14331,7 @@ "UETL": "Useless Eth Token Lite", "UFARM": "UniFarm", "UFC": "Union Fair Coin", + "UFD": "Unicorn Fart Dust", "UFFYI": "Unlimited FiscusFYI", "UFI": "PureFi", "UFO": "UFO Gaming", @@ -14306,6 +14404,7 @@ "UNICORN": "UNICORN Token", "UNIDEXAI": "UniDexAI", "UNIDX": "UniDex", + "UNIDXV1": "UniDex v1", "UNIE": "Uniswap Protocol Token (Avalanche Bridge)", "UNIETH": "Universal ETH", "UNIFY": "Unify", @@ -14376,6 +14475,7 @@ "USCC": "USC", "USCOIN": "USCoin", "USD0": "Usual", + "USD1": "USD1", "USD3": "Web 3 Dollar", "USDA": "USDA", "USDAP": "Bond Appetite USD", @@ -14447,6 +14547,7 @@ "USTCW": "TerraClassicUSD Wormhole", "USTX": "UpStableToken", "USUAL": "Usual", + "USUALX": "USUALx", "USV": "Universal Store of Value", "USX": "USX Quantum", "USYC": "Hashnote USYC", @@ -15194,6 +15295,7 @@ "WORX": "Worx", "WOS": "Wolf Of Solana", "WOT": "World Of Trump", + "WOULD": "would", "WOW": "WOWswap", "WOWS": "Wolves of Wall Street", "WOZX": "Efforce", @@ -15241,6 +15343,7 @@ "WSTORV1": "StorageChain v1", "WSTR": "Wrapped Star", "WSTUSDT": "wstUSDT", + "WSTUSR": "Resolv wstUSR", "WSX": "WeAreSatoshi", "WT": "WeToken", "WTAO": "Wrapped TAO", @@ -15260,6 +15363,7 @@ "WUF": "WUFFI", "WUK": "WUKONG", "WUKONG": "Sun Wukong", + "WULFY": "Wulfy", "WUSD": "Worldwide USD", "WUST": "Wrapped UST Token", "WVG0": "Wrapped Virgin Gen-0 CryptoKittties", @@ -15721,6 +15825,8 @@ "YIELD": "Yield Protocol", "YIELDX": "Yield Finance", "YIKES": "Yikes Dog", + "YILONG": "Yi Long Ma", + "YILONGMA": "Chinese Elon Musk", "YIN": "YIN Finance", "YINBI": "Yinbi", "YLAY": "Yelay", @@ -15729,6 +15835,7 @@ "YLDY": "Yieldly", "YMC": "YamahaCoin", "YMS": "Yeni Malatyaspor Token", + "YNE": "yesnoerror", "YNETH": "YieldNest Restaked ETH", "YO": "Yobit Token", "YOBASE": "All Your Base", @@ -15920,6 +16027,7 @@ "ZKDX": "ZKDX", "ZKE": "zkEra Finance", "ZKEVM": "zkEVMChain (BSC)", + "ZKEX": "zkExchange", "ZKF": "ZKFair", "ZKGROK": "ZKGROK", "ZKGUN": "zkGUN", From 512b84016c6a8dda0844b549780c7d73f7c0b298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Tom=C3=A1s=20Fern=C3=A1ndez=20Mart=C3=ADn?= Date: Fri, 24 Jan 2025 19:39:24 +0100 Subject: [PATCH 028/164] Bugfix/fix issue with detection of thousand separator by locale (#4243) * Fix issue with detection of thousand separator by locale * Update changelog --- CHANGELOG.md | 1 + libs/common/src/lib/helper.spec.ts | 82 +++++++++++++++++++++++++++++- libs/common/src/lib/helper.ts | 4 +- 3 files changed, 85 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7d54d785..684b9d647 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed an issue with the detection of the thousand separator by locale - Fixed an issue with the MIME type detection in the scraper configuration ## 2.135.0 - 2025-01-19 diff --git a/libs/common/src/lib/helper.spec.ts b/libs/common/src/lib/helper.spec.ts index 1126c3573..25779cf39 100644 --- a/libs/common/src/lib/helper.spec.ts +++ b/libs/common/src/lib/helper.spec.ts @@ -1,4 +1,7 @@ -import { extractNumberFromString } from '@ghostfolio/common/helper'; +import { + extractNumberFromString, + getNumberFormatGroup +} from '@ghostfolio/common/helper'; describe('Helper', () => { describe('Extract number from string', () => { @@ -32,8 +35,85 @@ describe('Helper', () => { ).toEqual(99999.99); }); + it('Get decimal number (comma notation) for locale where currency is not grouped by default', () => { + expect( + extractNumberFromString({ locale: 'es-ES', value: '999,99' }) + ).toEqual(999.99); + }); + it('Not a number', () => { expect(extractNumberFromString({ value: 'X' })).toEqual(NaN); }); }); + + describe('Get number format group', () => { + let languageGetter: jest.SpyInstance; + + beforeEach(() => { + languageGetter = jest.spyOn(window.navigator, 'language', 'get'); + }); + + it('Get de-CH number format group', () => { + expect(getNumberFormatGroup('de-CH')).toEqual('’'); + }); + + it('Get de-CH number format group when it is default', () => { + languageGetter.mockReturnValue('de-CH'); + expect(getNumberFormatGroup()).toEqual('’'); + }); + + it('Get de-DE number format group', () => { + expect(getNumberFormatGroup('de-DE')).toEqual('.'); + }); + + it('Get de-DE number format group when it is default', () => { + languageGetter.mockReturnValue('de-DE'); + expect(getNumberFormatGroup()).toEqual('.'); + }); + + it('Get en-GB number format group', () => { + expect(getNumberFormatGroup('en-GB')).toEqual(','); + }); + + it('Get en-GB number format group when it is default', () => { + languageGetter.mockReturnValue('en-GB'); + expect(getNumberFormatGroup()).toEqual(','); + }); + + it('Get en-US number format group', () => { + expect(getNumberFormatGroup('en-US')).toEqual(','); + }); + + it('Get en-US number format group when it is default', () => { + languageGetter.mockReturnValue('en-US'); + expect(getNumberFormatGroup()).toEqual(','); + }); + + it('Get es-ES number format group', () => { + expect(getNumberFormatGroup('es-ES')).toEqual('.'); + }); + + it('Get es-ES number format group when it is default', () => { + languageGetter.mockReturnValue('es-ES'); + expect(getNumberFormatGroup()).toEqual('.'); + }); + + it('Get ru-RU number format group', () => { + expect(getNumberFormatGroup('ru-RU')).toEqual(' '); + }); + + it('Get ru-RU number format group when it is default', () => { + languageGetter.mockReturnValue('ru-RU'); + expect(getNumberFormatGroup()).toEqual(' '); + }); + + it('Get zh-CN number format group', () => { + expect(getNumberFormatGroup('zh-CN')).toEqual(','); + }); + + it('Get zh-CN number format group when it is default', () => { + languageGetter.mockReturnValue('zh-CN'); + expect(getNumberFormatGroup()).toEqual(','); + }); + }); }); diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index dd07c23fa..bd0c74189 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -251,7 +251,9 @@ export function getNumberFormatDecimal(aLocale?: string) { } export function getNumberFormatGroup(aLocale = getLocale()) { - const formatObject = new Intl.NumberFormat(aLocale).formatToParts(9999.99); + const formatObject = new Intl.NumberFormat(aLocale, { + useGrouping: true + }).formatToParts(9999.99); return formatObject.find((object) => { return object.type === 'group'; From 4cb4375514f20174198fa1be7a9fa96aa6da2edd Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 24 Jan 2025 19:47:50 +0100 Subject: [PATCH 029/164] Bugfix/fix issue with holdings and sectors while using symbol profile overrides (#4234) * Fix issue with holdings and sectors while using symbol profile overrides * Update changelog --- CHANGELOG.md | 1 + .../symbol-profile/symbol-profile.service.ts | 64 +++++++++++-------- .../src/lib/interfaces/holding.interface.ts | 2 +- 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 684b9d647..b60940bd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed an issue with the detection of the thousand separator by locale +- Fixed an issue with holdings and sectors while using symbol profile overrides - Fixed an issue with the MIME type detection in the scraper configuration ## 2.135.0 - 2025-01-19 diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index eb8778c34..df0526d9f 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -177,9 +177,13 @@ export class SymbolProfileService { symbolProfile?.countries as unknown as Prisma.JsonArray ), dateOfFirstActivity: undefined as Date, - holdings: this.getHoldings(symbolProfile), + holdings: this.getHoldings( + symbolProfile?.holdings as unknown as Prisma.JsonArray + ), scraperConfiguration: this.getScraperConfiguration(symbolProfile), - sectors: this.getSectors(symbolProfile), + sectors: this.getSectors( + symbolProfile?.sectors as unknown as Prisma.JsonArray + ), symbolMapping: this.getSymbolMapping(symbolProfile) }; @@ -209,8 +213,9 @@ export class SymbolProfileService { (item.SymbolProfileOverrides.holdings as unknown as Holding[]) ?.length > 0 ) { - item.holdings = item.SymbolProfileOverrides - .holdings as unknown as Holding[]; + item.holdings = this.getHoldings( + item.SymbolProfileOverrides?.holdings as unknown as Prisma.JsonArray + ); } item.name = item.SymbolProfileOverrides?.name ?? item.name; @@ -219,8 +224,9 @@ export class SymbolProfileService { (item.SymbolProfileOverrides.sectors as unknown as Sector[])?.length > 0 ) { - item.sectors = item.SymbolProfileOverrides - .sectors as unknown as Sector[]; + item.sectors = this.getSectors( + item.SymbolProfileOverrides?.sectors as unknown as Prisma.JsonArray + ); } item.url = item.SymbolProfileOverrides?.url ?? item.url; @@ -249,18 +255,20 @@ export class SymbolProfileService { }); } - private getHoldings(symbolProfile: SymbolProfile): Holding[] { - return ((symbolProfile?.holdings as Prisma.JsonArray) ?? []).map( - (holding) => { - const { name, weight } = holding as Prisma.JsonObject; + private getHoldings(aHoldings: Prisma.JsonArray = []): Holding[] { + if (aHoldings === null) { + return []; + } + + return aHoldings.map((holding) => { + const { name, weight } = holding as Prisma.JsonObject; - return { - allocationInPercentage: weight as number, - name: (name as string) ?? UNKNOWN_KEY, - valueInBaseCurrency: undefined - }; - } - ); + return { + allocationInPercentage: weight as number, + name: (name as string) ?? UNKNOWN_KEY, + valueInBaseCurrency: undefined + }; + }); } private getScraperConfiguration( @@ -285,17 +293,19 @@ export class SymbolProfileService { return null; } - private getSectors(symbolProfile: SymbolProfile): Sector[] { - return ((symbolProfile?.sectors as Prisma.JsonArray) ?? []).map( - (sector) => { - const { name, weight } = sector as Prisma.JsonObject; + private getSectors(aSectors: Prisma.JsonArray = []): Sector[] { + if (aSectors === null) { + return []; + } - return { - name: (name as string) ?? UNKNOWN_KEY, - weight: weight as number - }; - } - ); + return aSectors.map((sector) => { + const { name, weight } = sector as Prisma.JsonObject; + + return { + name: (name as string) ?? UNKNOWN_KEY, + weight: weight as number + }; + }); } private getSymbolMapping(symbolProfile: SymbolProfile) { diff --git a/libs/common/src/lib/interfaces/holding.interface.ts b/libs/common/src/lib/interfaces/holding.interface.ts index 5a0df62f6..e963bc5a7 100644 --- a/libs/common/src/lib/interfaces/holding.interface.ts +++ b/libs/common/src/lib/interfaces/holding.interface.ts @@ -1,5 +1,5 @@ export interface Holding { - allocationInPercentage?: number; + allocationInPercentage: number; name: string; valueInBaseCurrency: number; } From 6533f00bae06d63ea64725fddd03d32177227cfc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 24 Jan 2025 19:51:01 +0100 Subject: [PATCH 030/164] Release 2.136.0 (#4246) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b60940bd0..6f462e9fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.136.0 - 2025-01-24 ### Added diff --git a/package-lock.json b/package-lock.json index 875c3cf74..6966dc315 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.135.0", + "version": "2.136.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.135.0", + "version": "2.136.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index e45b1f665..6d406f1a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.135.0", + "version": "2.136.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 5ce8a7ab5cd0c902d0a0ded9d11599a98fbd4a10 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 25 Jan 2025 10:37:31 +0100 Subject: [PATCH 031/164] Feature/upgrade prettier-plugin-sort-imports to version 5.2.1 (#4217) * Upgrade @trivago/prettier-plugin-sort-imports to version 5.2.1 * Update changelog --- CHANGELOG.md | 6 ++ package-lock.json | 213 +++++----------------------------------------- package.json | 2 +- 3 files changed, 28 insertions(+), 193 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f462e9fb..cf35ac4f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1` + ## 2.136.0 - 2025-01-24 ### Added diff --git a/package-lock.json b/package-lock.json index 6966dc315..3dd2edf14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -125,7 +125,7 @@ "@storybook/addon-interactions": "8.4.7", "@storybook/angular": "8.4.7", "@storybook/core-server": "8.4.7", - "@trivago/prettier-plugin-sort-imports": "4.3.0", + "@trivago/prettier-plugin-sort-imports": "5.2.1", "@types/big.js": "6.2.2", "@types/cache-manager": "4.0.6", "@types/color": "4.2.0", @@ -2588,46 +2588,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", @@ -10508,161 +10468,40 @@ } }, "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", - "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.1.tgz", + "integrity": "sha512-NDZndt0fmVThIx/8cExuJHLZagUVzfGCoVrwH9x6aZvwfBdkrDFTYujecek6X2WpG4uUFsVaPg5+aNQPSyjcmw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@babel/generator": "7.17.7", - "@babel/parser": "^7.20.5", - "@babel/traverse": "7.23.2", - "@babel/types": "7.17.0", - "javascript-natural-sort": "0.7.1", + "@babel/generator": "^7.26.2", + "@babel/parser": "^7.26.2", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "javascript-natural-sort": "^0.7.1", "lodash": "^4.17.21" }, + "engines": { + "node": ">18.12" + }, "peerDependencies": { "@vue/compiler-sfc": "3.x", - "prettier": "2.x - 3.x" + "prettier": "2.x - 3.x", + "prettier-plugin-svelte": "3.x", + "svelte": "4.x || 5.x" }, "peerDependenciesMeta": { "@vue/compiler-sfc": { "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + }, + "svelte": { + "optional": true } } }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator/node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -30295,16 +30134,6 @@ "devOptional": true, "license": "BSD-3-Clause" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", diff --git a/package.json b/package.json index 6d406f1a1..7836976ba 100644 --- a/package.json +++ b/package.json @@ -171,7 +171,7 @@ "@storybook/addon-interactions": "8.4.7", "@storybook/angular": "8.4.7", "@storybook/core-server": "8.4.7", - "@trivago/prettier-plugin-sort-imports": "4.3.0", + "@trivago/prettier-plugin-sort-imports": "5.2.1", "@types/big.js": "6.2.2", "@types/cache-manager": "4.0.6", "@types/color": "4.2.0", From 38178c774bae00203ba37163b554a6e6dc90b187 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 26 Jan 2025 19:17:21 +0100 Subject: [PATCH 032/164] Feature/upgrade ng-extract-i18n-merge to version 2.14.0 (#4249) * Upgrade ng-extract-i18n-merge to version 2.14.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf35ac4f0..004ade436 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1` +- Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.0` ## 2.136.0 - 2025-01-24 diff --git a/package-lock.json b/package-lock.json index 3dd2edf14..e82af58da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,7 +72,7 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.13.1", + "ng-extract-i18n-merge": "2.14.0", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", "ngx-skeleton-loader": "9.0.0", @@ -24774,9 +24774,9 @@ "license": "MIT" }, "node_modules/ng-extract-i18n-merge": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.13.1.tgz", - "integrity": "sha512-aU+shz0VSe0qqKYmlpg42P2C6Ol6eQ+DZDTYzQM4PTMfEBWJNFtl+c7B+MA68/AzdpcNPKu0BWJLZchCdZtjhQ==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.14.0.tgz", + "integrity": "sha512-KiLvxu6KvXkRqqLHUh7TQ0rVJys+S8sQEW4rJWRNuLSfHALT7CJ4h6jDJ9iDCSiow+KXHnZx7Iq+Z6CUc031tw==", "license": "MIT", "dependencies": { "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0", diff --git a/package.json b/package.json index 7836976ba..90700eb85 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.13.1", + "ng-extract-i18n-merge": "2.14.0", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", "ngx-skeleton-loader": "9.0.0", From 657cb510d8ab37c61b9361896bacde40395db045 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 27 Jan 2025 19:52:25 +0100 Subject: [PATCH 033/164] Feature/upgrade ng-extract-i18n-merge to version 2.14.1 (#4250) * Upgrade ng-extract-i18n-merge to version 2.14.1 * Update changelog --- CHANGELOG.md | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 004ade436..6c321b133 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1` -- Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.0` +- Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.1` ## 2.136.0 - 2025-01-24 diff --git a/package-lock.json b/package-lock.json index e82af58da..7176c0b70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,7 +72,7 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.14.0", + "ng-extract-i18n-merge": "2.14.1", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", "ngx-skeleton-loader": "9.0.0", @@ -24774,9 +24774,9 @@ "license": "MIT" }, "node_modules/ng-extract-i18n-merge": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.14.0.tgz", - "integrity": "sha512-KiLvxu6KvXkRqqLHUh7TQ0rVJys+S8sQEW4rJWRNuLSfHALT7CJ4h6jDJ9iDCSiow+KXHnZx7Iq+Z6CUc031tw==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.14.1.tgz", + "integrity": "sha512-hymcJcjfXJ+0r3EQShaSGmsST0AV3usgJuNMf6l04X+nIsgUPLMrXPBB/hVVVlAOjRcEB7RamKnfmexa5Rq1tw==", "license": "MIT", "dependencies": { "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0", diff --git a/package.json b/package.json index 90700eb85..d38d667dd 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.14.0", + "ng-extract-i18n-merge": "2.14.1", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", "ngx-skeleton-loader": "9.0.0", From eb26707e8cf01240524380c861212dcb2de830bb Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Tue, 28 Jan 2025 02:24:30 +0700 Subject: [PATCH 034/164] Feature/migrate seed.js to TypeScript (#4248) * feat(db): migrate seed.js to typescript * feat(db): change seed command * Update changelog --- CHANGELOG.md | 1 + package.json | 2 +- prisma/{seed.js => seed.ts} | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) rename prisma/{seed.js => seed.ts} (87%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c321b133..b744e52d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Migrated the database seeding to _TypeScript_ - Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1` - Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.1` diff --git a/package.json b/package.json index d38d667dd..b3612bedf 100644 --- a/package.json +++ b/package.json @@ -213,6 +213,6 @@ "node": ">=20" }, "prisma": { - "seed": "node prisma/seed.js" + "seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts" } } diff --git a/prisma/seed.js b/prisma/seed.ts similarity index 87% rename from prisma/seed.js rename to prisma/seed.ts index beafbed44..f68f8375b 100644 --- a/prisma/seed.js +++ b/prisma/seed.ts @@ -1,4 +1,5 @@ -const { PrismaClient } = require('@prisma/client'); +import { PrismaClient } from '@prisma/client'; + const prisma = new PrismaClient(); async function main() { From fa27a05bcf9b105ac614808537222e3182fcc7cf Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 28 Jan 2025 19:32:34 +0100 Subject: [PATCH 035/164] Feature/upgrade bull to version 4.16.5 (#4218) * Upgrade bull to version 4.16.5 * Update changelog --- CHANGELOG.md | 2 ++ package-lock.json | 10 +++++----- package.json | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b744e52d9..2b6592701 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Migrated the database seeding to _TypeScript_ - Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1` +- Upgraded `bull` from version `4.16.4` to `4.16.5` - Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.1` ## 2.136.0 - 2025-01-24 @@ -40,6 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved the language localization for Polski (`pl`) from experimental to general availability - Extended the _Financial Modeling Prep_ service - Switched to _ESLint_’s flat config format +- Upgraded `bull` from version `4.16.2` to `4.16.4` - Upgraded `chart.js` from version `4.2.0` to `4.4.7` - Upgraded `chartjs-chart-treemap` from version `2.3.1` to `3.1.0` - Upgraded `chartjs-plugin-annotation` from version `2.1.2` to `3.1.0` diff --git a/package-lock.json b/package-lock.json index 7176c0b70..087d945c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "alphavantage": "2.2.0", "big.js": "6.2.2", "bootstrap": "4.6.0", - "bull": "4.16.4", + "bull": "4.16.5", "cache-manager": "5.7.6", "cache-manager-redis-yet": "5.1.4", "chart.js": "4.4.7", @@ -13379,12 +13379,12 @@ } }, "node_modules/bull": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/bull/-/bull-4.16.4.tgz", - "integrity": "sha512-CF+nGsJyfsCC9MJL8hFxqXzbwq+jGBXhaz1j15G+5N/XtKIPFUUy5O1mfWWKbKunfuH/x+UV4NYRQDHSkjCOgA==", + "version": "4.16.5", + "resolved": "https://registry.npmjs.org/bull/-/bull-4.16.5.tgz", + "integrity": "sha512-lDsx2BzkKe7gkCYiT5Acj02DpTwDznl/VNN7Psn7M3USPG7Vs/BaClZJJTAG+ufAR9++N1/NiUTdaFBWDIl5TQ==", "license": "MIT", "dependencies": { - "cron-parser": "^4.2.1", + "cron-parser": "^4.9.0", "get-port": "^5.1.1", "ioredis": "^5.3.2", "lodash": "^4.17.21", diff --git a/package.json b/package.json index b3612bedf..e808eccd5 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "alphavantage": "2.2.0", "big.js": "6.2.2", "bootstrap": "4.6.0", - "bull": "4.16.4", + "bull": "4.16.5", "cache-manager": "5.7.6", "cache-manager-redis-yet": "5.1.4", "chart.js": "4.4.7", From 954cf765b8fb6bb1000a2b5662795547b48ba8f6 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Thu, 30 Jan 2025 02:22:44 +0700 Subject: [PATCH 036/164] Bugfix/dynamic numerical precision for cryptocurrencies in holding detail dialog (#4255) * fix(ui): dynamic numerical precision of quantity for cryptocurrencies * Update changelog --- CHANGELOG.md | 4 ++++ .../holding-detail-dialog/holding-detail-dialog.component.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b6592701..10a290ae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `bull` from version `4.16.4` to `4.16.5` - Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.1` +### Fixed + +- Fixed the dynamic numerical precision for cryptocurrencies in the holding detail dialog + ## 2.136.0 - 2025-01-24 ### Added diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 94d5bd915..d13158898 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -296,7 +296,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { if (Number.isInteger(this.quantity)) { this.quantityPrecision = 0; - } else if (this.SymbolProfile?.assetSubClass === 'CRYPTOCURRENCY') { + } else if (SymbolProfile?.assetSubClass === 'CRYPTOCURRENCY') { if (this.quantity < 1) { this.quantityPrecision = 7; } else if (this.quantity < 1000) { From 8bd869e1b2e127f7ad2d321704440bb81f440421 Mon Sep 17 00:00:00 2001 From: Shaunak Das <51281688+shaun-ak@users.noreply.github.com> Date: Fri, 31 Jan 2025 03:11:13 +0530 Subject: [PATCH 037/164] Feature/add regional market cluster risk for north america (#4240) * Add regional market cluster risk for north america * Update changelog --- CHANGELOG.md | 4 + .../src/app/portfolio/portfolio.service.ts | 35 ++++++-- apps/api/src/app/user/user.service.ts | 9 +- .../north-america.ts | 82 +++++++++++++++++++ .../portfolio/x-ray/x-ray-page.component.html | 24 ++++++ .../portfolio/x-ray/x-ray-page.component.ts | 6 ++ .../x-ray-rules-settings.interface.ts | 1 + 7 files changed, 153 insertions(+), 8 deletions(-) create mode 100644 apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 10a290ae7..e124c7857 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (North America) + ### Changed - Migrated the database seeding to _TypeScript_ diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 8b295aad4..a14f97d26 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -15,6 +15,7 @@ import { EconomicMarketClusterRiskDevelopedMarkets } from '@ghostfolio/api/model import { EconomicMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/emerging-markets'; import { EmergencyFundSetup } from '@ghostfolio/api/models/rules/emergency-fund/emergency-fund-setup'; import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment'; +import { RegionalMarketClusterRiskNorthAmerica } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/north-america'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; @@ -1167,12 +1168,19 @@ export class PortfolioService { const userId = await this.getUserId(impersonationId, this.request.user.id); const userSettings = this.request.user.Settings.settings as UserSettings; - const { accounts, holdings, markets, summary } = await this.getDetails({ - impersonationId, - userId, - withMarkets: true, - withSummary: true - }); + const { accounts, holdings, markets, marketsAdvanced, summary } = + await this.getDetails({ + impersonationId, + userId, + withMarkets: true, + withSummary: true + }); + + const marketsAdvancedTotalInBaseCurrency = getSum( + Object.values(marketsAdvanced).map(({ valueInBaseCurrency }) => { + return new Big(valueInBaseCurrency); + }) + ).toNumber(); const marketsTotalInBaseCurrency = getSum( Object.values(markets).map(({ valueInBaseCurrency }) => { @@ -1265,7 +1273,20 @@ export class PortfolioService { ) ], userSettings - ) + ), + regionalMarketClusterRisk: + summary.ordersCount > 0 + ? await this.rulesService.evaluate( + [ + new RegionalMarketClusterRiskNorthAmerica( + this.exchangeRateDataService, + marketsAdvancedTotalInBaseCurrency, + marketsAdvanced.northAmerica.valueInBaseCurrency + ) + ], + userSettings + ) + : undefined }; return { rules, statistics: this.getReportStatistics(rules) }; diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index b5c71179f..415cbc99d 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -13,6 +13,7 @@ import { EconomicMarketClusterRiskDevelopedMarkets } from '@ghostfolio/api/model import { EconomicMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/emerging-markets'; import { EmergencyFundSetup } from '@ghostfolio/api/models/rules/emergency-fund/emergency-fund-setup'; import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment'; +import { RegionalMarketClusterRiskNorthAmerica } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/north-america'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; @@ -268,7 +269,13 @@ export class UserService { undefined, undefined, undefined - ).getSettings(user.Settings.settings) + ).getSettings(user.Settings.settings), + RegionalMarketClusterRiskNorthAmerica: + new RegionalMarketClusterRiskNorthAmerica( + undefined, + undefined, + undefined + ).getSettings(user.Settings.settings) }; let currentPermissions = getPermissions(user.role); diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts b/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts new file mode 100644 index 000000000..a137f7abf --- /dev/null +++ b/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts @@ -0,0 +1,82 @@ +import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; +import { Rule } from '@ghostfolio/api/models/rule'; +import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { UserSettings } from '@ghostfolio/common/interfaces'; + +export class RegionalMarketClusterRiskNorthAmerica extends Rule { + private currentValueInBaseCurrency: number; + private northAmericaValueInBaseCurrency: number; + + public constructor( + protected exchangeRateDataService: ExchangeRateDataService, + currentValueInBaseCurrency: number, + valueInBaseCurrency + ) { + super(exchangeRateDataService, { + key: RegionalMarketClusterRiskNorthAmerica.name, + name: 'North America' + }); + + this.currentValueInBaseCurrency = currentValueInBaseCurrency; + this.northAmericaValueInBaseCurrency = valueInBaseCurrency; + } + + public evaluate(ruleSettings: Settings) { + const northAmericaMarketValueRatio = this.currentValueInBaseCurrency + ? this.northAmericaValueInBaseCurrency / this.currentValueInBaseCurrency + : 0; + + if (northAmericaMarketValueRatio > ruleSettings.thresholdMax) { + return { + evaluation: `The North America market contribution of your current investment (${(northAmericaMarketValueRatio * 100).toPrecision(3)}%) exceeds ${( + ruleSettings.thresholdMax * 100 + ).toPrecision(3)}%`, + value: false + }; + } else if (northAmericaMarketValueRatio < ruleSettings.thresholdMin) { + return { + evaluation: `The North America market contribution of your current investment (${(northAmericaMarketValueRatio * 100).toPrecision(3)}%) is below ${( + ruleSettings.thresholdMin * 100 + ).toPrecision(3)}%`, + value: false + }; + } + + return { + evaluation: `The North America market contribution of your current investment (${(northAmericaMarketValueRatio * 100).toPrecision(3)}%) is within the range of ${( + ruleSettings.thresholdMin * 100 + ).toPrecision( + 3 + )}% and ${(ruleSettings.thresholdMax * 100).toPrecision(3)}%`, + value: true + }; + } + + public getConfiguration() { + return { + threshold: { + max: 1, + min: 0, + step: 0.01, + unit: '%' + }, + thresholdMax: true, + thresholdMin: true + }; + } + + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { + return { + baseCurrency, + isActive: xRayRules?.[this.getKey()]?.isActive ?? true, + thresholdMax: xRayRules?.[this.getKey()]?.thresholdMax ?? 0.69, + thresholdMin: xRayRules?.[this.getKey()]?.thresholdMin ?? 0.65 + }; + } +} + +interface Settings extends RuleSettings { + baseCurrency: string; + thresholdMin: number; + thresholdMax: number; +} diff --git a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html index ceba5f52c..6ec5722b7 100644 --- a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html +++ b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html @@ -144,6 +144,30 @@ (rulesUpdated)="onRulesUpdated($event)" /> +
+

+ Regional Market Cluster Risks + @if (user?.subscription?.type === 'Basic') { + + } +

+ +
Date: Fri, 31 Jan 2025 11:13:47 +0100 Subject: [PATCH 038/164] Feature/update locales 20250130 (#4260) * Update translations * Update changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 12 ++++++++++-- apps/client/src/locales/messages.de.xlf | 14 +++++++++++--- apps/client/src/locales/messages.es.xlf | 12 ++++++++++-- apps/client/src/locales/messages.fr.xlf | 12 ++++++++++-- apps/client/src/locales/messages.it.xlf | 12 ++++++++++-- apps/client/src/locales/messages.nl.xlf | 12 ++++++++++-- apps/client/src/locales/messages.pl.xlf | 12 ++++++++++-- apps/client/src/locales/messages.pt.xlf | 12 ++++++++++-- apps/client/src/locales/messages.tr.xlf | 12 ++++++++++-- apps/client/src/locales/messages.uk.xlf | 12 ++++++++++-- apps/client/src/locales/messages.xlf | 11 +++++++++-- apps/client/src/locales/messages.zh.xlf | 12 ++++++++++-- 13 files changed, 121 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e124c7857..3a7f37055 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Migrated the database seeding to _TypeScript_ +- Improved the language localization for German (`de`) - Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1` - Upgraded `bull` from version `4.16.4` to `4.16.5` - Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.1` diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 77636d9e8..96d3d9a11 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2623,7 +2623,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7051,7 +7051,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7664,6 +7664,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 343ae2f53..dbff7f5f5 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -3770,7 +3770,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7051,7 +7051,7 @@ Inaktiv apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7658,12 +7658,20 @@ Early Access - Early Access + Early Access apps/client/src/app/components/admin-settings/admin-settings.component.html 16 + + Regional Market Cluster Risks + Regionale Marktklumpenrisiken + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index f3ea374e3..b51e320ef 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -3771,7 +3771,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7052,7 +7052,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7665,6 +7665,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index c2ea4d6f7..19f5b4710 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -3770,7 +3770,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7051,7 +7051,7 @@ Inactif apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7664,6 +7664,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 70b0ec374..f9252e982 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -3771,7 +3771,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7052,7 +7052,7 @@ Inattivo apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7665,6 +7665,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 18cf83bb3..8c1aa20d0 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -3770,7 +3770,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7051,7 +7051,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7664,6 +7664,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 38b8fe231..1c9b7308f 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2599,7 +2599,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7051,7 +7051,7 @@ Nieaktywny apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7664,6 +7664,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 61ff18a29..c83bc8c9a 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -3770,7 +3770,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7051,7 +7051,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7664,6 +7664,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index a598fd6d1..468154c85 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2639,7 +2639,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7051,7 +7051,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7664,6 +7664,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index cb2cbb57d..0062e169c 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2751,7 +2751,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -5591,7 +5591,7 @@ Неактивний apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7664,6 +7664,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 0b7afdfa9..df7aa4f9d 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2440,7 +2440,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -6394,7 +6394,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -6933,6 +6933,13 @@ 16 + + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 9aaa47267..c89487f69 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2616,7 +2616,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 178 @@ -7052,7 +7052,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 173 + 197 @@ -7665,6 +7665,14 @@ 16 + + Regional Market Cluster Risks + Regional Market Cluster Risks + + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 154 + + From a75599bf5d21dd3cb6abf3817bd7fce00d8a3365 Mon Sep 17 00:00:00 2001 From: Amandee Ellawala <47607256+amandee27@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:19:50 +0000 Subject: [PATCH 039/164] Feature/split scraper configuration into sub form (#4157) * Split scraper configuration into sub form * Update changelog --- CHANGELOG.md | 1 + .../asset-profile-dialog.component.scss | 16 +++ .../asset-profile-dialog.component.ts | 87 +++++++++++-- .../asset-profile-dialog.html | 123 ++++++++++++++---- .../asset-profile-dialog.module.ts | 2 + 5 files changed, 195 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a7f37055..88976e933 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Extracted the scraper configuration to a sub form in the asset profile details dialog of the admin control - Migrated the database seeding to _TypeScript_ - Improved the language localization for German (`de`) - Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1` diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.scss b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.scss index 7057aad83..a9e135783 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.scss +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.scss @@ -7,5 +7,21 @@ gf-line-chart { aspect-ratio: 16/9; } + + .mat-expansion-panel { + --mat-expansion-container-background-color: transparent; + + ::ng-deep { + .mat-expansion-panel-body { + padding: 0; + } + } + + .mat-expansion-panel-header { + &:hover { + --mat-expansion-header-hover-state-layer-color: transparent; + } + } + } } } diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index a144bae87..bb19ad96c 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -21,7 +21,8 @@ import { Component, Inject, OnDestroy, - OnInit + OnInit, + signal } from '@angular/core'; import { FormBuilder, FormControl, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; @@ -64,7 +65,14 @@ export class AssetProfileDialog implements OnDestroy, OnInit { csvString: '' }), name: ['', Validators.required], - scraperConfiguration: '', + scraperConfiguration: this.formBuilder.group({ + defaultMarketPrice: null, + headers: JSON.stringify({}), + locale: '', + mode: '', + selector: '', + url: '' + }), sectors: '', symbolMapping: '', url: '' @@ -79,6 +87,11 @@ export class AssetProfileDialog implements OnDestroy, OnInit { public historicalDataItems: LineChartItem[]; public isBenchmark = false; public marketDataItems: MarketData[] = []; + public modeValues = [ + { value: 'lazy', viewValue: $localize`Lazy` }, + { value: 'instant', viewValue: $localize`Instant` } + ]; + public scraperConfiguationIsExpanded = signal(false); public sectors: { [name: string]: { name: string; value: number }; }; @@ -181,9 +194,18 @@ export class AssetProfileDialog implements OnDestroy, OnInit { csvString: AssetProfileDialog.HISTORICAL_DATA_TEMPLATE }, name: this.assetProfile.name ?? this.assetProfile.symbol, - scraperConfiguration: JSON.stringify( - this.assetProfile?.scraperConfiguration ?? {} - ), + scraperConfiguration: { + defaultMarketPrice: + this.assetProfile?.scraperConfiguration?.defaultMarketPrice ?? + null, + headers: JSON.stringify( + this.assetProfile?.scraperConfiguration?.headers ?? {} + ), + locale: this.assetProfile?.scraperConfiguration?.locale ?? '', + mode: this.assetProfile?.scraperConfiguration?.mode ?? 'lazy', + selector: this.assetProfile?.scraperConfiguration?.selector ?? '', + url: this.assetProfile?.scraperConfiguration?.url ?? '' + }, sectors: JSON.stringify(this.assetProfile?.sectors ?? []), symbolMapping: JSON.stringify(this.assetProfile?.symbolMapping ?? {}), url: this.assetProfile?.url ?? '' @@ -252,9 +274,31 @@ export class AssetProfileDialog implements OnDestroy, OnInit { } catch {} try { - scraperConfiguration = JSON.parse( - this.assetProfileForm.get('scraperConfiguration').value - ); + scraperConfiguration = { + defaultMarketPrice: + this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'defaultMarketPrice' + ].value, + headers: JSON.parse( + this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'headers' + ].value + ), + locale: + this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'locale' + ].value, + mode: this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'mode' + ].value, + selector: + this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'selector' + ].value, + url: this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'url' + ].value + }; } catch {} try { @@ -306,8 +350,31 @@ export class AssetProfileDialog implements OnDestroy, OnInit { this.adminService .testMarketData({ dataSource: this.data.dataSource, - scraperConfiguration: this.assetProfileForm.get('scraperConfiguration') - .value, + scraperConfiguration: JSON.stringify({ + defaultMarketPrice: + this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'defaultMarketPrice' + ].value, + headers: JSON.parse( + this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'headers' + ].value + ), + locale: + this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'locale' + ].value, + mode: this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'mode' + ].value, + selector: + this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'selector' + ].value, + url: this.assetProfileForm.controls['scraperConfiguration'].controls[ + 'url' + ].value + }), symbol: this.data.symbol }) .pipe( diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index eeb43e932..b48c4ac0e 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -278,31 +278,106 @@
@if (assetProfile?.dataSource === 'MANUAL') { -
- - Scraper Configuration -
- - -
-
+
+ + + + Scraper Configuration + +
+
+ + Default Market Price + + +
+
+ + Headers + + +
+
+ + Locale + + +
+
+ + Mode + + @for (modeValue of modeValues; track modeValue) { + {{ + modeValue.viewValue + }} + } + + +
+
+ + + Selector* + + + +
+
+ + + Url* + + + +
+
+ +
+
+
+
+ } + @if (assetProfile?.dataSource === 'MANUAL') {
Sectors diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts index d5e14ecb5..9b9876dbc 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts @@ -13,6 +13,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatDialogModule } from '@angular/material/dialog'; +import { MatExpansionModule } from '@angular/material/expansion'; import { MatInputModule } from '@angular/material/input'; import { MatMenuModule } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; @@ -34,6 +35,7 @@ import { AssetProfileDialog } from './asset-profile-dialog.component'; MatButtonModule, MatCheckboxModule, MatDialogModule, + MatExpansionModule, MatInputModule, MatMenuModule, MatSelectModule, From 582355ecb5d149290f9a226543b46dc644932136 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 31 Jan 2025 17:21:17 +0100 Subject: [PATCH 040/164] Feature/upgrade prisma to version 6.3.0 (#4259) * Upgrade prisma to version 6.3.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 78 +++++++++++++++++++++++++++-------------------- package.json | 4 +-- 3 files changed, 48 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88976e933..9bdbb832d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `@trivago/prettier-plugin-sort-imports` from version `4.3.0` to `5.2.1` - Upgraded `bull` from version `4.16.4` to `4.16.5` - Upgraded `ng-extract-i18n-merge` from version `2.13.1` to `2.14.1` +- Upgraded `prisma` from version `6.2.1` to `6.3.0` ### Fixed diff --git a/package-lock.json b/package-lock.json index 087d945c8..643ac7566 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "@nestjs/platform-express": "10.4.15", "@nestjs/schedule": "4.1.2", "@nestjs/serve-static": "4.0.2", - "@prisma/client": "6.2.1", + "@prisma/client": "6.3.0", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", "@stripe/stripe-js": "5.4.0", @@ -151,7 +151,7 @@ "nx": "20.3.2", "prettier": "3.4.2", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.2.1", + "prisma": "6.3.0", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", @@ -8847,71 +8847,75 @@ "license": "MIT" }, "node_modules/@prisma/client": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.2.1.tgz", - "integrity": "sha512-msKY2iRLISN8t5X0Tj7hU0UWet1u0KuxSPHWuf3IRkB4J95mCvGpyQBfQ6ufcmvKNOMQSq90O2iUmJEN2e5fiA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.3.0.tgz", + "integrity": "sha512-BY3Fi28PUSk447Bpv22LhZp4HgNPo7NsEN+EteM1CLDnLjig5863jpW+3c3HHLFmml+nB/eJv1CjSriFZ8z7Cg==", "hasInstallScript": true, "license": "Apache-2.0", "engines": { "node": ">=18.18" }, "peerDependencies": { - "prisma": "*" + "prisma": "*", + "typescript": ">=5.1.0" }, "peerDependenciesMeta": { "prisma": { "optional": true + }, + "typescript": { + "optional": true } } }, "node_modules/@prisma/debug": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.2.1.tgz", - "integrity": "sha512-0KItvt39CmQxWkEw6oW+RQMD6RZ43SJWgEUnzxN8VC9ixMysa7MzZCZf22LCK5DSooiLNf8vM3LHZm/I/Ni7bQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.3.0.tgz", + "integrity": "sha512-m1lQv//0Rc5RG8TBpNUuLCxC35Ghi5XfpPmL83Gh04/GICHD2J5H2ndMlaljrUNaQDF9dOxIuFAYP1rE9wkXkg==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.2.1.tgz", - "integrity": "sha512-lTBNLJBCxVT9iP5I7Mn6GlwqAxTpS5qMERrhebkUhtXpGVkBNd/jHnNJBZQW4kGDCKaQg/r2vlJYkzOHnAb7ZQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.3.0.tgz", + "integrity": "sha512-RXqYhlZb9sx/xkUfYIZuEPn7sT0WgTxNOuEYQ7AGw3IMpP9QGVEDVsluc/GcNkM8NTJszeqk8AplJzI9lm7Jxw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.2.1", - "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", - "@prisma/fetch-engine": "6.2.1", - "@prisma/get-platform": "6.2.1" + "@prisma/debug": "6.3.0", + "@prisma/engines-version": "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0", + "@prisma/fetch-engine": "6.3.0", + "@prisma/get-platform": "6.3.0" } }, "node_modules/@prisma/engines-version": { - "version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69.tgz", - "integrity": "sha512-7tw1qs/9GWSX6qbZs4He09TOTg1ff3gYsB3ubaVNN0Pp1zLm9NC5C5MZShtkz7TyQjx7blhpknB7HwEhlG+PrQ==", + "version": "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0.tgz", + "integrity": "sha512-R/ZcMuaWZT2UBmgX3Ko6PAV3f8//ZzsjRIG1eKqp3f2rqEqVtCv+mtzuH2rBPUC9ujJ5kCb9wwpxeyCkLcHVyA==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.2.1.tgz", - "integrity": "sha512-OO7O9d6Mrx2F9i+Gu1LW+DGXXyUFkP7OE5aj9iBfA/2jjDXEJjqa9X0ZmM9NZNo8Uo7ql6zKm6yjDcbAcRrw1A==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.3.0.tgz", + "integrity": "sha512-GBy0iT4f1mH31ePzfcpVSUa7JLRTeq4914FG2vR3LqDwRweSm4ja1o5flGDz+eVIa/BNYfkBvRRxv4D6ve6Eew==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.2.1", - "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", - "@prisma/get-platform": "6.2.1" + "@prisma/debug": "6.3.0", + "@prisma/engines-version": "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0", + "@prisma/get-platform": "6.3.0" } }, "node_modules/@prisma/get-platform": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.2.1.tgz", - "integrity": "sha512-zp53yvroPl5m5/gXYLz7tGCNG33bhG+JYCm74ohxOq1pPnrL47VQYFfF3RbTZ7TzGWCrR3EtoiYMywUBw7UK6Q==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.3.0.tgz", + "integrity": "sha512-V8zZ1d0xfyi6FjpNP4AcYuwSpGcdmu35OXWnTPm8IW594PYALzKXHwIa9+o0f+Lo9AecFWrwrwaoYe56UNfTtQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.2.1" + "@prisma/debug": "6.3.0" } }, "node_modules/@redis/bloom": { @@ -27181,14 +27185,14 @@ } }, "node_modules/prisma": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.2.1.tgz", - "integrity": "sha512-hhyM0H13pQleQ+br4CkzGizS5I0oInoeTw3JfLw1BRZduBSQxPILlJLwi+46wZzj9Je7ndyQEMGw/n5cN2fknA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.3.0.tgz", + "integrity": "sha512-y+Zh3Qg+xGCWyyrNUUNaFW/OltaV/yXYuTa0WRgYkz5LGyifmAsgpv94I47+qGRocZrMGcbF2A/78/oO2zgifA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/engines": "6.2.1" + "@prisma/engines": "6.3.0" }, "bin": { "prisma": "build/index.js" @@ -27198,6 +27202,14 @@ }, "optionalDependencies": { "fsevents": "2.3.3" + }, + "peerDependencies": { + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/prismjs": { diff --git a/package.json b/package.json index e808eccd5..f8e56f3f8 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@nestjs/platform-express": "10.4.15", "@nestjs/schedule": "4.1.2", "@nestjs/serve-static": "4.0.2", - "@prisma/client": "6.2.1", + "@prisma/client": "6.3.0", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", "@stripe/stripe-js": "5.4.0", @@ -197,7 +197,7 @@ "nx": "20.3.2", "prettier": "3.4.2", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.2.1", + "prisma": "6.3.0", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", From d4f28e27593f797b87c748a8f78a7c53f6c60fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Tom=C3=A1s=20Fern=C3=A1ndez=20Mart=C3=ADn?= Date: Sat, 1 Feb 2025 12:25:19 +0100 Subject: [PATCH 041/164] Feature/add support for ETF sector data in YahooFinanceDataEnhancer (#4258) * Add support for ETF sector data in YahooFinanceDataEnhancer * Update changelog --- CHANGELOG.md | 1 + .../data-enhancer/yahoo-finance/yahoo-finance.service.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bdbb832d..9ffd570f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (North America) +- Added support for ETF sector data in the _Yahoo Finance_ data enhancer ### Changed diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts index b71e3e316..18d624098 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts @@ -197,7 +197,7 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { assetProfile.price.symbol ); - if (assetSubClass === AssetSubClass.MUTUALFUND) { + if (['ETF', 'MUTUALFUND'].includes(assetSubClass)) { response.sectors = []; for (const sectorWeighting of assetProfile.topHoldings @@ -207,7 +207,7 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { } } } else if ( - assetSubClass === AssetSubClass.STOCK && + assetSubClass === 'STOCK' && assetProfile.summaryProfile?.country ) { // Add country if asset is stock and country available From c095d08816d3e72b3b0da6df6b4af0a65881f4b4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2025 12:57:44 +0100 Subject: [PATCH 042/164] Feature/update locales 20250201 (#4262) * Update locales * Update translations --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- apps/client/src/locales/messages.ca.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.de.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.es.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.fr.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.it.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.nl.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.pl.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.pt.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.tr.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.uk.xlf | 76 +++++++++++++++++++++---- apps/client/src/locales/messages.xlf | 70 +++++++++++++++++++---- apps/client/src/locales/messages.zh.xlf | 76 +++++++++++++++++++++---- 12 files changed, 786 insertions(+), 120 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 96d3d9a11..da3972d27 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1455,7 +1455,7 @@ Cancel·lar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1499,7 +1499,7 @@ Guardar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1755,7 +1755,7 @@ El preu de mercat actual és apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -1827,7 +1827,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1847,7 +1847,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1875,7 +1875,7 @@ Configuració del Proveïdor de Dades apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -1883,7 +1883,7 @@ Prova apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -1891,7 +1891,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1907,7 +1911,7 @@ Notes apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -3457,6 +3461,10 @@ Locale Locale + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -7027,7 +7035,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7672,6 +7680,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index dbff7f5f5..c6ca7a1be 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -498,7 +498,7 @@ Abbrechen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -542,7 +542,7 @@ Speichern apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1322,7 +1322,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1342,7 +1342,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1768,6 +1768,10 @@ Locale Lokalität + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -2322,7 +2326,7 @@ Kommentar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -3986,7 +3990,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4374,7 +4382,7 @@ Scraper Konfiguration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -6231,7 +6239,7 @@ Der aktuelle Marktpreis ist apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6239,7 +6247,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7027,7 +7035,7 @@ Fehler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7672,6 +7680,54 @@ 154 + + Lazy + Verzögert + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Sofort + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Standardmarktpreis + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Modus + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selektor + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index b51e320ef..4412b32d8 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -499,7 +499,7 @@ Cancela apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -543,7 +543,7 @@ Guarda apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1323,7 +1323,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1343,7 +1343,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1769,6 +1769,10 @@ Locale Ubicación + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -2323,7 +2327,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -3987,7 +3991,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4375,7 +4383,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -6232,7 +6240,7 @@ The current market price is apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6240,7 +6248,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7028,7 +7036,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7673,6 +7681,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 19f5b4710..4bc8b4027 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -558,7 +558,7 @@ Annuler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -602,7 +602,7 @@ Sauvegarder apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -826,7 +826,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -846,7 +846,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -866,7 +866,7 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2088,6 +2088,10 @@ Locale Paramètres régionaux + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -3986,7 +3990,11 @@ Lien apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4374,7 +4382,7 @@ Configuration du Scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -6231,7 +6239,7 @@ Le prix actuel du marché est apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6239,7 +6247,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7027,7 +7035,7 @@ Erreur apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7672,6 +7680,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index f9252e982..a8dc917a4 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -499,7 +499,7 @@ Annulla apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -543,7 +543,7 @@ Salva apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1323,7 +1323,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1343,7 +1343,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1769,6 +1769,10 @@ Locale Locale + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -2323,7 +2327,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -3987,7 +3991,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4375,7 +4383,7 @@ Configurazione dello scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -6232,7 +6240,7 @@ L'attuale prezzo di mercato è apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6240,7 +6248,7 @@ Prova apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7028,7 +7036,7 @@ Errore apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7673,6 +7681,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 8c1aa20d0..ca9b5d693 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -498,7 +498,7 @@ Annuleren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -542,7 +542,7 @@ Opslaan apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1322,7 +1322,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1342,7 +1342,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1768,6 +1768,10 @@ Locale Locatie + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -2322,7 +2326,7 @@ Opmerking apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -3986,7 +3990,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4374,7 +4382,7 @@ Scraper instellingen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -6231,7 +6239,7 @@ The current market price is apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6239,7 +6247,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7027,7 +7035,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7672,6 +7680,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 1c9b7308f..411f522b4 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1347,7 +1347,7 @@ Anuluj apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1391,7 +1391,7 @@ Zapisz apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1679,7 +1679,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1699,7 +1699,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1727,7 +1727,7 @@ Konfiguracja Scrapera apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -1735,7 +1735,7 @@ Notatka apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1963,7 +1963,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -3157,6 +3161,10 @@ Locale Ustawienia Regionalne + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -6231,7 +6239,7 @@ Obecna cena rynkowa wynosi apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6239,7 +6247,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7027,7 +7035,7 @@ Błąd apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7672,6 +7680,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index c83bc8c9a..4b77770f8 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -558,7 +558,7 @@ Cancelar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -602,7 +602,7 @@ Guardar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1630,7 +1630,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1650,7 +1650,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -2032,6 +2032,10 @@ Locale Localidade + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -2458,7 +2462,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -3986,7 +3990,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -4374,7 +4382,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -6231,7 +6239,7 @@ The current market price is apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6239,7 +6247,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7027,7 +7035,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7672,6 +7680,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 468154c85..e57d44883 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1311,7 +1311,7 @@ İptal apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1355,7 +1355,7 @@ Kaydet apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1611,7 +1611,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1631,7 +1631,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1651,7 +1651,7 @@ Veri Toplayıcı Yapılandırması apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -1659,7 +1659,7 @@ Not apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1875,7 +1875,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -5065,6 +5069,10 @@ Locale Yerel Ayarlar + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -6231,7 +6239,7 @@ The current market price is apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6239,7 +6247,7 @@ Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7027,7 +7035,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7672,6 +7680,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 0062e169c..a36e7637b 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1659,7 +1659,7 @@ Помилка apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -1667,7 +1667,7 @@ Поточна ринкова ціна apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -1723,7 +1723,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1743,7 +1743,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1771,7 +1771,7 @@ Конфігурація скребка apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -1779,7 +1779,7 @@ Тест apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -1787,7 +1787,11 @@ URL apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1803,7 +1807,7 @@ Примітка apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1819,7 +1823,7 @@ Скасувати apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1863,7 +1867,7 @@ Зберегти apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -3705,6 +3709,10 @@ Locale Локалізація + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -7672,6 +7680,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index df7aa4f9d..55fb037bf 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1297,7 +1297,7 @@ Cancel apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1340,7 +1340,7 @@ Save apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1606,7 +1606,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1625,7 +1625,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1650,14 +1650,14 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1866,7 +1866,11 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -2943,6 +2947,10 @@ Locale + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -5679,14 +5687,14 @@ The current market price is apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -6373,7 +6381,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -6940,6 +6948,48 @@ 154 + + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + + + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index c89487f69..b8efdbb1e 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -1356,7 +1356,7 @@ 取消 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 357 + 432 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1400,7 +1400,7 @@ 保存 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 364 + 439 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1688,7 +1688,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 308 + 383 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1708,7 +1708,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 319 + 394 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -1736,7 +1736,7 @@ 刮削配置 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 283 + 295 @@ -1744,7 +1744,7 @@ 笔记 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 344 + 419 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1980,7 +1980,11 @@ 网址 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 331 + 354 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 406 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -3174,6 +3178,10 @@ Locale 语言环境 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + apps/client/src/app/components/user-account-settings/user-account-settings.html 127 @@ -6240,7 +6248,7 @@ 当前市场价格为 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 326 + 393 @@ -6248,7 +6256,7 @@ 测试 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 301 + 372 @@ -7028,7 +7036,7 @@ Error apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 317 + 384 @@ -7673,6 +7681,54 @@ 154 + + Lazy + Lazy + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 91 + + + + Instant + Instant + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 92 + + + + Default Market Price + Default Market Price + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 300 + + + + Headers + Headers + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 310 + + + + Mode + Mode + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 328 + + + + Selector + Selector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 341 + + From e2b27fb6e9e0a306135d1548a8bd6369c7862676 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 1 Feb 2025 13:04:28 +0100 Subject: [PATCH 043/164] Feature/improve headers label in scraper configuration (#4263) * Improve label --- .../asset-profile-dialog/asset-profile-dialog.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index b48c4ac0e..595ec28cb 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -307,7 +307,7 @@
- Headers + HTTP Request Headers From 58dfba8e63d4f416194ea5585d08517bdc0200e3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 14 Feb 2025 20:55:34 +0100 Subject: [PATCH 071/164] Feature/upgrade @trivago/prettier-plugin-sort-imports to version 5.2.2 (#4315) * Upgrade @trivago/prettier-plugin-sort-imports to version 5.2.2 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 66 +++++++++++++++++++++++------------------------ package.json | 2 +- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32623c528..dbcd724fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the language localization for German (`de`) +- Upgraded `@trivago/prettier-plugin-sort-imports` from version `5.2.1` to `5.2.2` ## 2.138.0 - 2025-02-08 diff --git a/package-lock.json b/package-lock.json index ec5cb3cb6..e015f580e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -125,7 +125,7 @@ "@storybook/addon-interactions": "8.4.7", "@storybook/angular": "8.4.7", "@storybook/core-server": "8.4.7", - "@trivago/prettier-plugin-sort-imports": "5.2.1", + "@trivago/prettier-plugin-sort-imports": "5.2.2", "@types/big.js": "6.2.2", "@types/cache-manager": "4.0.6", "@types/color": "4.2.0", @@ -2449,13 +2449,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", + "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", + "@babel/parser": "^7.26.8", + "@babel/types": "^7.26.8", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -2766,12 +2766,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", + "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.26.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -4149,30 +4149,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", + "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.8", + "@babel/types": "^7.26.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", + "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", + "@babel/generator": "^7.26.8", + "@babel/parser": "^7.26.8", + "@babel/template": "^7.26.8", + "@babel/types": "^7.26.8", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -4181,9 +4181,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", + "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -10472,16 +10472,16 @@ } }, "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.1.tgz", - "integrity": "sha512-NDZndt0fmVThIx/8cExuJHLZagUVzfGCoVrwH9x6aZvwfBdkrDFTYujecek6X2WpG4uUFsVaPg5+aNQPSyjcmw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.2.tgz", + "integrity": "sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@babel/generator": "^7.26.2", - "@babel/parser": "^7.26.2", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.7", + "@babel/traverse": "^7.26.7", + "@babel/types": "^7.26.7", "javascript-natural-sort": "^0.7.1", "lodash": "^4.17.21" }, diff --git a/package.json b/package.json index 7c9fda80c..e3043de16 100644 --- a/package.json +++ b/package.json @@ -171,7 +171,7 @@ "@storybook/addon-interactions": "8.4.7", "@storybook/angular": "8.4.7", "@storybook/core-server": "8.4.7", - "@trivago/prettier-plugin-sort-imports": "5.2.1", + "@trivago/prettier-plugin-sort-imports": "5.2.2", "@types/big.js": "6.2.2", "@types/cache-manager": "4.0.6", "@types/color": "4.2.0", From ec8fce44a62063897a56ae7017c6dfd26b4556c9 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sat, 15 Feb 2025 14:48:53 +0700 Subject: [PATCH 072/164] Feature/allow creating custom tags from holding detail dialog component (#4308) * Allow creating custom tags from holding detail dialog component * Extend create tag endpoint * Update changelog --------- Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/api/src/app/tag/create-tag.dto.ts | 6 ++- apps/api/src/app/tag/tag.controller.ts | 39 ++++++++++++-- apps/api/src/app/tag/update-tag.dto.ts | 6 ++- apps/api/src/app/user/user.service.ts | 1 + .../holding-detail-dialog.component.ts | 53 +++++++++++++++---- .../holding-detail-dialog.html | 1 + libs/common/src/lib/permissions.ts | 3 ++ .../tags-selector.component.html | 2 +- .../tags-selector.component.stories.ts | 3 +- .../tags-selector/tags-selector.component.ts | 4 +- 11 files changed, 99 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dbcd724fe..37bc84cf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (Asia-Pacific Markets) - Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (Japan) +- Added support to create custom tags in the holding detail dialog - Extended the tags selector component by a `readonly` attribute - Extended the tags selector component to support creating custom tags - Extended the holding detail dialog by the historical market data editor (experimental) diff --git a/apps/api/src/app/tag/create-tag.dto.ts b/apps/api/src/app/tag/create-tag.dto.ts index 650a0ce12..09c29d25a 100644 --- a/apps/api/src/app/tag/create-tag.dto.ts +++ b/apps/api/src/app/tag/create-tag.dto.ts @@ -1,6 +1,10 @@ -import { IsString } from 'class-validator'; +import { IsOptional, IsString } from 'class-validator'; export class CreateTagDto { @IsString() name: string; + + @IsOptional() + @IsString() + userId?: string; } diff --git a/apps/api/src/app/tag/tag.controller.ts b/apps/api/src/app/tag/tag.controller.ts index 6198a0bf5..862f0a708 100644 --- a/apps/api/src/app/tag/tag.controller.ts +++ b/apps/api/src/app/tag/tag.controller.ts @@ -1,6 +1,7 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; -import { permissions } from '@ghostfolio/common/permissions'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { RequestWithUser } from '@ghostfolio/common/types'; import { Body, @@ -8,11 +9,13 @@ import { Delete, Get, HttpException, + Inject, Param, Post, Put, UseGuards } from '@nestjs/common'; +import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; import { Tag } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; @@ -23,7 +26,10 @@ import { UpdateTagDto } from './update-tag.dto'; @Controller('tag') export class TagController { - public constructor(private readonly tagService: TagService) {} + public constructor( + @Inject(REQUEST) private readonly request: RequestWithUser, + private readonly tagService: TagService + ) {} @Get() @HasPermission(permissions.readTags) @@ -33,9 +39,34 @@ export class TagController { } @Post() - @HasPermission(permissions.createTag) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + @UseGuards(AuthGuard('jwt')) public async createTag(@Body() data: CreateTagDto): Promise { + const canCreateOwnTag = hasPermission( + this.request.user.permissions, + permissions.createOwnTag + ); + + const canCreateTag = hasPermission( + this.request.user.permissions, + permissions.createTag + ); + + if (!canCreateOwnTag && !canCreateTag) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } + + if (canCreateOwnTag && !canCreateTag) { + if (data.userId !== this.request.user.id) { + throw new HttpException( + getReasonPhrase(StatusCodes.BAD_REQUEST), + StatusCodes.BAD_REQUEST + ); + } + } + return this.tagService.createTag(data); } diff --git a/apps/api/src/app/tag/update-tag.dto.ts b/apps/api/src/app/tag/update-tag.dto.ts index b26ffde11..5ae42dcc6 100644 --- a/apps/api/src/app/tag/update-tag.dto.ts +++ b/apps/api/src/app/tag/update-tag.dto.ts @@ -1,4 +1,4 @@ -import { IsString } from 'class-validator'; +import { IsOptional, IsString } from 'class-validator'; export class UpdateTagDto { @IsString() @@ -6,4 +6,8 @@ export class UpdateTagDto { @IsString() name: string; + + @IsOptional() + @IsString() + userId?: string; } diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 30d10c8d6..dcf9d9404 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -347,6 +347,7 @@ export class UserService { permissions.accessHoldingsChart, permissions.createAccess, permissions.createMarketDataOfOwnAssetProfile, + permissions.createOwnTag, permissions.readAiPrompt, permissions.readMarketDataOfOwnAssetProfile, permissions.updateMarketDataOfOwnAssetProfile diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 4f7e4efd4..54fab34d6 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -2,6 +2,7 @@ import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interf import { GfAccountsTableModule } from '@ghostfolio/client/components/accounts-table/accounts-table.module'; import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module'; import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; +import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { NUMERICAL_PRECISION_THRESHOLD } from '@ghostfolio/common/config'; @@ -50,7 +51,7 @@ import { Account, MarketData, Tag } from '@prisma/client'; import { format, isSameMonth, isToday, parseISO } from 'date-fns'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { switchMap, takeUntil } from 'rxjs/operators'; import { HoldingDetailDialogParams } from './interfaces/interfaces'; @@ -98,6 +99,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { public dividendYieldPercentWithCurrencyEffect: number; public feeInBaseCurrency: number; public firstBuyDate: string; + public hasPermissionToCreateOwnTag: boolean; public hasPermissionToReadMarketDataOfOwnAssetProfile: boolean; public historicalDataItems: LineChartItem[]; public investment: number; @@ -131,6 +133,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { private unsubscribeSubject = new Subject(); public constructor( + private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, public dialogRef: MatDialogRef, @@ -153,15 +156,40 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { this.activityForm .get('tags') .valueChanges.pipe(takeUntil(this.unsubscribeSubject)) - .subscribe((tags) => { - this.dataService - .putHoldingTags({ - tags, - dataSource: this.data.dataSource, - symbol: this.data.symbol - }) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(); + .subscribe((tags: Tag[]) => { + const newTag = tags.find(({ id }) => { + return id === undefined; + }); + + if (newTag && this.hasPermissionToCreateOwnTag) { + this.adminService + .postTag({ ...newTag, userId: this.user.id }) + .pipe( + switchMap((createdTag) => { + return this.dataService.putHoldingTags({ + dataSource: this.data.dataSource, + symbol: this.data.symbol, + tags: [ + ...tags.filter(({ id }) => { + return id !== undefined; + }), + createdTag + ] + }); + }), + takeUntil(this.unsubscribeSubject) + ) + .subscribe(); + } else { + this.dataService + .putHoldingTags({ + tags, + dataSource: this.data.dataSource, + symbol: this.data.symbol + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + } }); this.dataService @@ -420,6 +448,11 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { if (state?.user) { this.user = state.user; + this.hasPermissionToCreateOwnTag = hasPermission( + this.user.permissions, + permissions.createOwnTag + ); + this.tagsAvailable = this.user?.tags?.map((tag) => { return { diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index e7b3cc1b2..df1c0c62a 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -388,6 +388,7 @@ } - @if (hasPermissionToCreateTags && tagInputControl.value) { + @if (hasPermissionToCreateTag && tagInputControl.value) { diff --git a/libs/ui/src/lib/tags-selector/tags-selector.component.stories.ts b/libs/ui/src/lib/tags-selector/tags-selector.component.stories.ts index 8d1431b46..42fb68876 100644 --- a/libs/ui/src/lib/tags-selector/tags-selector.component.stories.ts +++ b/libs/ui/src/lib/tags-selector/tags-selector.component.stories.ts @@ -1,4 +1,5 @@ import { CommonModule } from '@angular/common'; +import '@angular/localize/init'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; @@ -49,7 +50,7 @@ export const Default: Story = { export const CreateCustomTags: Story = { args: { - hasPermissionToCreateTags: true, + hasPermissionToCreateTag: true, tags: [ { id: 'EMERGENCY_FUND', diff --git a/libs/ui/src/lib/tags-selector/tags-selector.component.ts b/libs/ui/src/lib/tags-selector/tags-selector.component.ts index 611c1e938..02b3a0a95 100644 --- a/libs/ui/src/lib/tags-selector/tags-selector.component.ts +++ b/libs/ui/src/lib/tags-selector/tags-selector.component.ts @@ -42,7 +42,7 @@ import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; templateUrl: 'tags-selector.component.html' }) export class GfTagsSelectorComponent implements OnInit, OnChanges, OnDestroy { - @Input() hasPermissionToCreateTags = false; + @Input() hasPermissionToCreateTag = false; @Input() readonly = false; @Input() tags: Tag[]; @Input() tagsAvailable: Tag[]; @@ -81,7 +81,7 @@ export class GfTagsSelectorComponent implements OnInit, OnChanges, OnDestroy { return id === event.option.value; }); - if (!tag && this.hasPermissionToCreateTags) { + if (!tag && this.hasPermissionToCreateTag) { tag = { id: undefined, name: event.option.value as string, From 4f76ee67588ba5ba8b1d3ca15e90745170fd029d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Tom=C3=A1s=20Fern=C3=A1ndez=20Mart=C3=ADn?= Date: Sat, 15 Feb 2025 09:43:28 +0100 Subject: [PATCH 073/164] Feature/improve symbol lookup in Trackinsight data enhancer (#4296) * Feature: enhance Trackinsight data fetching with symbol search fallback * Feature: refactor Trackinsight symbol search for improved clarity and error handling * Fixed style concerns and removed code duplication * Minor improvements * Update changelog * Update changelog * Clean up --------- Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../trackinsight/trackinsight.service.ts | 83 +++++++++++-------- 2 files changed, 51 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37bc84cf4..db1563f26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the symbol lookup in the _Trackinsight_ data enhancer for asset profile data - Improved the language localization for German (`de`) - Upgraded `@trivago/prettier-plugin-sort-imports` from version `5.2.1` to `5.2.2` diff --git a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts index 56b90082d..2b8eaf2e9 100644 --- a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts @@ -44,28 +44,31 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { return response; } + let trackinsightSymbol = await this.searchTrackinsightSymbol({ + requestTimeout, + symbol + }); + + if (!trackinsightSymbol) { + trackinsightSymbol = await this.searchTrackinsightSymbol({ + requestTimeout, + symbol: symbol.split('.')?.[0] + }); + } + + if (!trackinsightSymbol) { + return response; + } + const profile = await fetch( - `${TrackinsightDataEnhancerService.baseUrl}/funds/${symbol}.json`, + `${TrackinsightDataEnhancerService.baseUrl}/funds/${trackinsightSymbol}.json`, { signal: AbortSignal.timeout(requestTimeout) } ) .then((res) => res.json()) .catch(() => { - return fetch( - `${TrackinsightDataEnhancerService.baseUrl}/funds/${ - symbol.split('.')?.[0] - }.json`, - { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) - } - ) - .then((res) => res.json()) - .catch(() => { - return {}; - }); + return {}; }); const isin = profile?.isin?.split(';')?.[0]; @@ -75,29 +78,14 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { } const holdings = await fetch( - `${TrackinsightDataEnhancerService.baseUrl}/holdings/${symbol}.json`, + `${TrackinsightDataEnhancerService.baseUrl}/holdings/${trackinsightSymbol}.json`, { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ) .then((res) => res.json()) .catch(() => { - return fetch( - `${TrackinsightDataEnhancerService.baseUrl}/holdings/${ - symbol.split('.')?.[0] - }.json`, - { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) - } - ) - .then((res) => res.json()) - .catch(() => { - return {}; - }); + return {}; }); if ( @@ -180,4 +168,33 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { public getTestSymbol() { return 'QQQ'; } + + private async searchTrackinsightSymbol({ + requestTimeout, + symbol + }: { + requestTimeout: number; + symbol: string; + }) { + return fetch( + `https://www.trackinsight.com/search-api/search_v2/${symbol}/_/ticker/default/0/3`, + { + signal: AbortSignal.timeout(requestTimeout) + } + ) + .then((res) => res.json()) + .then((jsonRes) => { + if ( + jsonRes['results']?.['count'] === 1 || + jsonRes['results']?.['docs']?.[0]?.['ticker'] === symbol + ) { + return jsonRes['results']['docs'][0]['ticker']; + } + + return undefined; + }) + .catch(() => { + return undefined; + }); + } } From f1ab3ff8e85530106a9e904907ea36a5c5f5cf7c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Feb 2025 10:00:14 +0100 Subject: [PATCH 074/164] Feature/modernize tags endpoint (#4317) * Modernize tags endpoint * Update changelog --- CHANGELOG.md | 2 +- apps/api/src/app/app.module.ts | 4 +- .../{tag => endpoints/tags}/create-tag.dto.ts | 0 .../tags/tags.controller.ts} | 50 ++++++------ .../api/src/app/endpoints/tags/tags.module.ts | 12 +++ .../{tag => endpoints/tags}/update-tag.dto.ts | 0 apps/api/src/app/tag/tag.module.ts | 14 ---- apps/api/src/app/tag/tag.service.ts | 81 ------------------- apps/api/src/services/tag/tag.service.ts | 73 +++++++++++++++++ .../admin-tag/admin-tag.component.ts | 14 ++-- .../create-or-update-tag-dialog.component.ts | 4 +- .../holding-detail-dialog.component.ts | 4 +- .../holding-detail-dialog.html | 4 +- apps/client/src/app/services/admin.service.ts | 20 +---- apps/client/src/app/services/data.service.ts | 18 +++++ 15 files changed, 144 insertions(+), 156 deletions(-) rename apps/api/src/app/{tag => endpoints/tags}/create-tag.dto.ts (100%) rename apps/api/src/app/{tag/tag.controller.ts => endpoints/tags/tags.controller.ts} (95%) create mode 100644 apps/api/src/app/endpoints/tags/tags.module.ts rename apps/api/src/app/{tag => endpoints/tags}/update-tag.dto.ts (100%) delete mode 100644 apps/api/src/app/tag/tag.module.ts delete mode 100644 apps/api/src/app/tag/tag.service.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index db1563f26..c5e982369 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (Asia-Pacific Markets) - Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (Japan) -- Added support to create custom tags in the holding detail dialog +- Added support to create custom tags in the holding detail dialog (experimental) - Extended the tags selector component by a `readonly` attribute - Extended the tags selector component to support creating custom tags - Extended the holding detail dialog by the historical market data editor (experimental) diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 6d097aeff..3e68bf428 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -36,6 +36,7 @@ import { ApiKeysModule } from './endpoints/api-keys/api-keys.module'; import { GhostfolioModule } from './endpoints/data-providers/ghostfolio/ghostfolio.module'; import { MarketDataModule } from './endpoints/market-data/market-data.module'; import { PublicModule } from './endpoints/public/public.module'; +import { TagsModule } from './endpoints/tags/tags.module'; import { ExchangeRateModule } from './exchange-rate/exchange-rate.module'; import { ExportModule } from './export/export.module'; import { HealthModule } from './health/health.module'; @@ -49,7 +50,6 @@ import { RedisCacheModule } from './redis-cache/redis-cache.module'; import { SitemapModule } from './sitemap/sitemap.module'; import { SubscriptionModule } from './subscription/subscription.module'; import { SymbolModule } from './symbol/symbol.module'; -import { TagModule } from './tag/tag.module'; import { UserModule } from './user/user.module'; @Module({ @@ -124,7 +124,7 @@ import { UserModule } from './user/user.module'; SitemapModule, SubscriptionModule, SymbolModule, - TagModule, + TagsModule, TwitterBotModule, UserModule ], diff --git a/apps/api/src/app/tag/create-tag.dto.ts b/apps/api/src/app/endpoints/tags/create-tag.dto.ts similarity index 100% rename from apps/api/src/app/tag/create-tag.dto.ts rename to apps/api/src/app/endpoints/tags/create-tag.dto.ts diff --git a/apps/api/src/app/tag/tag.controller.ts b/apps/api/src/app/endpoints/tags/tags.controller.ts similarity index 95% rename from apps/api/src/app/tag/tag.controller.ts rename to apps/api/src/app/endpoints/tags/tags.controller.ts index 862f0a708..bf216bb21 100644 --- a/apps/api/src/app/tag/tag.controller.ts +++ b/apps/api/src/app/endpoints/tags/tags.controller.ts @@ -1,5 +1,6 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; +import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { RequestWithUser } from '@ghostfolio/common/types'; @@ -21,23 +22,15 @@ import { Tag } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { CreateTagDto } from './create-tag.dto'; -import { TagService } from './tag.service'; import { UpdateTagDto } from './update-tag.dto'; -@Controller('tag') -export class TagController { +@Controller('tags') +export class TagsController { public constructor( @Inject(REQUEST) private readonly request: RequestWithUser, private readonly tagService: TagService ) {} - @Get() - @HasPermission(permissions.readTags) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getTags() { - return this.tagService.getTagsWithActivityCount(); - } - @Post() @UseGuards(AuthGuard('jwt')) public async createTag(@Body() data: CreateTagDto): Promise { @@ -70,10 +63,10 @@ export class TagController { return this.tagService.createTag(data); } - @HasPermission(permissions.updateTag) - @Put(':id') + @Delete(':id') + @HasPermission(permissions.deleteTag) @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async updateTag(@Param('id') id: string, @Body() data: UpdateTagDto) { + public async deleteTag(@Param('id') id: string) { const originalTag = await this.tagService.getTag({ id }); @@ -85,20 +78,20 @@ export class TagController { ); } - return this.tagService.updateTag({ - data: { - ...data - }, - where: { - id - } - }); + return this.tagService.deleteTag({ id }); } - @Delete(':id') - @HasPermission(permissions.deleteTag) + @Get() + @HasPermission(permissions.readTags) @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async deleteTag(@Param('id') id: string) { + public async getTags() { + return this.tagService.getTagsWithActivityCount(); + } + + @HasPermission(permissions.updateTag) + @Put(':id') + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async updateTag(@Param('id') id: string, @Body() data: UpdateTagDto) { const originalTag = await this.tagService.getTag({ id }); @@ -110,6 +103,13 @@ export class TagController { ); } - return this.tagService.deleteTag({ id }); + return this.tagService.updateTag({ + data: { + ...data + }, + where: { + id + } + }); } } diff --git a/apps/api/src/app/endpoints/tags/tags.module.ts b/apps/api/src/app/endpoints/tags/tags.module.ts new file mode 100644 index 000000000..a8a2f1c51 --- /dev/null +++ b/apps/api/src/app/endpoints/tags/tags.module.ts @@ -0,0 +1,12 @@ +import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; +import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; + +import { Module } from '@nestjs/common'; + +import { TagsController } from './tags.controller'; + +@Module({ + controllers: [TagsController], + imports: [PrismaModule, TagModule] +}) +export class TagsModule {} diff --git a/apps/api/src/app/tag/update-tag.dto.ts b/apps/api/src/app/endpoints/tags/update-tag.dto.ts similarity index 100% rename from apps/api/src/app/tag/update-tag.dto.ts rename to apps/api/src/app/endpoints/tags/update-tag.dto.ts diff --git a/apps/api/src/app/tag/tag.module.ts b/apps/api/src/app/tag/tag.module.ts deleted file mode 100644 index 48587c54e..000000000 --- a/apps/api/src/app/tag/tag.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; - -import { Module } from '@nestjs/common'; - -import { TagController } from './tag.controller'; -import { TagService } from './tag.service'; - -@Module({ - controllers: [TagController], - exports: [TagService], - imports: [PrismaModule], - providers: [TagService] -}) -export class TagModule {} diff --git a/apps/api/src/app/tag/tag.service.ts b/apps/api/src/app/tag/tag.service.ts deleted file mode 100644 index c4a5447ac..000000000 --- a/apps/api/src/app/tag/tag.service.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; - -import { Injectable } from '@nestjs/common'; -import { Prisma, Tag } from '@prisma/client'; - -@Injectable() -export class TagService { - public constructor(private readonly prismaService: PrismaService) {} - - public async createTag(data: Prisma.TagCreateInput) { - return this.prismaService.tag.create({ - data - }); - } - - public async deleteTag(where: Prisma.TagWhereUniqueInput): Promise { - return this.prismaService.tag.delete({ where }); - } - - public async getTag( - tagWhereUniqueInput: Prisma.TagWhereUniqueInput - ): Promise { - return this.prismaService.tag.findUnique({ - where: tagWhereUniqueInput - }); - } - - public async getTags({ - cursor, - orderBy, - skip, - take, - where - }: { - cursor?: Prisma.TagWhereUniqueInput; - orderBy?: Prisma.TagOrderByWithRelationInput; - skip?: number; - take?: number; - where?: Prisma.TagWhereInput; - } = {}) { - return this.prismaService.tag.findMany({ - cursor, - orderBy, - skip, - take, - where - }); - } - - public async getTagsWithActivityCount() { - const tagsWithOrderCount = await this.prismaService.tag.findMany({ - include: { - _count: { - select: { orders: true } - } - } - }); - - return tagsWithOrderCount.map(({ _count, id, name, userId }) => { - return { - id, - name, - userId, - activityCount: _count.orders - }; - }); - } - - public async updateTag({ - data, - where - }: { - data: Prisma.TagUpdateInput; - where: Prisma.TagWhereUniqueInput; - }): Promise { - return this.prismaService.tag.update({ - data, - where - }); - } -} diff --git a/apps/api/src/services/tag/tag.service.ts b/apps/api/src/services/tag/tag.service.ts index b16f22fbb..3d6bd3907 100644 --- a/apps/api/src/services/tag/tag.service.ts +++ b/apps/api/src/services/tag/tag.service.ts @@ -1,11 +1,52 @@ import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { Injectable } from '@nestjs/common'; +import { Prisma, Tag } from '@prisma/client'; @Injectable() export class TagService { public constructor(private readonly prismaService: PrismaService) {} + public async createTag(data: Prisma.TagCreateInput) { + return this.prismaService.tag.create({ + data + }); + } + + public async deleteTag(where: Prisma.TagWhereUniqueInput): Promise { + return this.prismaService.tag.delete({ where }); + } + + public async getTag( + tagWhereUniqueInput: Prisma.TagWhereUniqueInput + ): Promise { + return this.prismaService.tag.findUnique({ + where: tagWhereUniqueInput + }); + } + + public async getTags({ + cursor, + orderBy, + skip, + take, + where + }: { + cursor?: Prisma.TagWhereUniqueInput; + orderBy?: Prisma.TagOrderByWithRelationInput; + skip?: number; + take?: number; + where?: Prisma.TagWhereInput; + } = {}) { + return this.prismaService.tag.findMany({ + cursor, + orderBy, + skip, + take, + where + }); + } + public async getTagsForUser(userId: string) { const tags = await this.prismaService.tag.findMany({ include: { @@ -41,4 +82,36 @@ export class TagService { isUsed: _count.orders > 0 })); } + + public async getTagsWithActivityCount() { + const tagsWithOrderCount = await this.prismaService.tag.findMany({ + include: { + _count: { + select: { orders: true } + } + } + }); + + return tagsWithOrderCount.map(({ _count, id, name, userId }) => { + return { + id, + name, + userId, + activityCount: _count.orders + }; + }); + } + + public async updateTag({ + data, + where + }: { + data: Prisma.TagUpdateInput; + where: Prisma.TagWhereUniqueInput; + }): Promise { + return this.prismaService.tag.update({ + data, + where + }); + } } diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.ts b/apps/client/src/app/components/admin-tag/admin-tag.component.ts index 3c0bdb684..bd7432b33 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.ts +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.ts @@ -1,8 +1,7 @@ -import { CreateTagDto } from '@ghostfolio/api/app/tag/create-tag.dto'; -import { UpdateTagDto } from '@ghostfolio/api/app/tag/update-tag.dto'; +import { CreateTagDto } from '@ghostfolio/api/app/endpoints/tags/create-tag.dto'; +import { UpdateTagDto } from '@ghostfolio/api/app/endpoints/tags/update-tag.dto'; import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; -import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; @@ -43,7 +42,6 @@ export class AdminTagComponent implements OnInit, OnDestroy { private unsubscribeSubject = new Subject(); public constructor( - private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, private deviceService: DeviceDetectorService, @@ -100,7 +98,7 @@ export class AdminTagComponent implements OnInit, OnDestroy { } private deleteTag(aId: string) { - this.adminService + this.dataService .deleteTag(aId) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe({ @@ -116,7 +114,7 @@ export class AdminTagComponent implements OnInit, OnDestroy { } private fetchTags() { - this.adminService + this.dataService .fetchTags() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((tags) => { @@ -148,7 +146,7 @@ export class AdminTagComponent implements OnInit, OnDestroy { .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((tag: CreateTagDto | null) => { if (tag) { - this.adminService + this.dataService .postTag(tag) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe({ @@ -184,7 +182,7 @@ export class AdminTagComponent implements OnInit, OnDestroy { .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((tag: UpdateTagDto | null) => { if (tag) { - this.adminService + this.dataService .putTag(tag) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe({ diff --git a/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.component.ts b/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.component.ts index 9b7194cc6..1bbda8e13 100644 --- a/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.component.ts +++ b/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.component.ts @@ -1,5 +1,5 @@ -import { CreateTagDto } from '@ghostfolio/api/app/tag/create-tag.dto'; -import { UpdateTagDto } from '@ghostfolio/api/app/tag/update-tag.dto'; +import { CreateTagDto } from '@ghostfolio/api/app/endpoints/tags/create-tag.dto'; +import { UpdateTagDto } from '@ghostfolio/api/app/endpoints/tags/update-tag.dto'; import { validateObjectForForm } from '@ghostfolio/client/util/form.util'; import { diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 54fab34d6..69322b216 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -2,7 +2,6 @@ import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interf import { GfAccountsTableModule } from '@ghostfolio/client/components/accounts-table/accounts-table.module'; import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module'; import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; -import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { NUMERICAL_PRECISION_THRESHOLD } from '@ghostfolio/common/config'; @@ -133,7 +132,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { private unsubscribeSubject = new Subject(); public constructor( - private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, public dialogRef: MatDialogRef, @@ -162,7 +160,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { }); if (newTag && this.hasPermissionToCreateOwnTag) { - this.adminService + this.dataService .postTag({ ...newTag, userId: this.user.id }) .pipe( switchMap((createdTag) => { diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index df1c0c62a..a767a5796 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -388,7 +388,9 @@ (`/api/v1/tag/${aId}`); - } - public executeJob(aId: string) { return this.http.get(`/api/v1/admin/queue/job/${aId}/execute`); } @@ -155,10 +149,6 @@ export class AdminService { return this.http.get('/api/v1/platform'); } - public fetchTags() { - return this.http.get('/api/v1/tag'); - } - public fetchUsers({ skip, take = DEFAULT_PAGE_SIZE @@ -261,10 +251,6 @@ export class AdminService { return this.http.post(`/api/v1/platform`, aPlatform); } - public postTag(aTag: CreateTagDto) { - return this.http.post(`/api/v1/tag`, aTag); - } - public putPlatform(aPlatform: UpdatePlatformDto) { return this.http.put( `/api/v1/platform/${aPlatform.id}`, @@ -272,10 +258,6 @@ export class AdminService { ); } - public putTag(aTag: UpdateTagDto) { - return this.http.put(`/api/v1/tag/${aTag.id}`, aTag); - } - public testMarketData({ dataSource, scraperConfiguration, diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 4a57d5878..0da1275e6 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -4,6 +4,8 @@ import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto import { TransferBalanceDto } from '@ghostfolio/api/app/account/transfer-balance.dto'; import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { UpdateBulkMarketDataDto } from '@ghostfolio/api/app/admin/update-bulk-market-data.dto'; +import { CreateTagDto } from '@ghostfolio/api/app/endpoints/tags/create-tag.dto'; +import { UpdateTagDto } from '@ghostfolio/api/app/endpoints/tags/update-tag.dto'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { Activities, @@ -308,6 +310,10 @@ export class DataService { return this.http.delete(`/api/v1/user`, { body: aData }); } + public deleteTag(aId: string) { + return this.http.delete(`/api/v1/tags/${aId}`); + } + public deleteUser(aId: string) { return this.http.delete(`/api/v1/user/${aId}`); } @@ -662,6 +668,10 @@ export class DataService { ); } + public fetchTags() { + return this.http.get('/api/v1/tags'); + } + public loginAnonymous(accessToken: string) { return this.http.post('/api/v1/auth/anonymous', { accessToken @@ -709,6 +719,10 @@ export class DataService { return this.http.post('/api/v1/order', aOrder); } + public postTag(aTag: CreateTagDto) { + return this.http.post(`/api/v1/tags`, aTag); + } + public postUser() { return this.http.post('/api/v1/user', {}); } @@ -736,6 +750,10 @@ export class DataService { return this.http.put(`/api/v1/order/${aOrder.id}`, aOrder); } + public putTag(aTag: UpdateTagDto) { + return this.http.put(`/api/v1/tags/${aTag.id}`, aTag); + } + public putUserSetting(aData: UpdateUserSettingDto) { return this.http.put('/api/v1/user/setting', aData); } From b8c6a73f30bea84a120144eaf2c388250e91fe62 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 10:41:15 +0100 Subject: [PATCH 075/164] Feature/update locales 20250215 (#4314) * Update translation --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- apps/client/src/locales/messages.ca.xlf | 14 +++++++++++--- apps/client/src/locales/messages.de.xlf | 14 +++++++++++--- apps/client/src/locales/messages.es.xlf | 14 +++++++++++--- apps/client/src/locales/messages.fr.xlf | 14 +++++++++++--- apps/client/src/locales/messages.it.xlf | 14 +++++++++++--- apps/client/src/locales/messages.nl.xlf | 14 +++++++++++--- apps/client/src/locales/messages.pl.xlf | 14 +++++++++++--- apps/client/src/locales/messages.pt.xlf | 14 +++++++++++--- apps/client/src/locales/messages.tr.xlf | 14 +++++++++++--- apps/client/src/locales/messages.uk.xlf | 14 +++++++++++--- apps/client/src/locales/messages.xlf | 13 ++++++++++--- apps/client/src/locales/messages.zh.xlf | 14 +++++++++++--- 12 files changed, 131 insertions(+), 36 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 82f3f96bb..d70c773e6 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1787,7 +1787,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -2239,7 +2239,7 @@ Està segur que vol eliminar aquesta etiqueta? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -2639,7 +2639,7 @@ Informar d’un Problema amb les Dades apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -7756,6 +7756,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 0040f8cb6..b7ff00641 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1370,7 +1370,7 @@ Datenfehler melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -3370,7 +3370,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -5891,7 +5891,7 @@ Möchtest du diesen Tag wirklich löschen? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -7756,6 +7756,14 @@ 50 + + Market Data + Marktdaten + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index bc6a62411..e12415868 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1371,7 +1371,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -3371,7 +3371,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -5892,7 +5892,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -7757,6 +7757,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 353a2a3f6..bc5d94438 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1718,7 +1718,7 @@ Signaler une Erreur de Données apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -2598,7 +2598,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -5891,7 +5891,7 @@ Confirmez la suppression de ce tag ? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -7756,6 +7756,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index c6cb7ac7a..f6761f2c7 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1371,7 +1371,7 @@ Segnala un’anomalia dei dati apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -3371,7 +3371,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -5892,7 +5892,7 @@ Sei sicuro di voler eliminare questo tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -7757,6 +7757,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 53efeab95..aab3a3939 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1370,7 +1370,7 @@ Gegevensstoring melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -3370,7 +3370,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -5891,7 +5891,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -7756,6 +7756,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 2942a4898..e2e157e14 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1639,7 +1639,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -2067,7 +2067,7 @@ Czy naprawdę chcesz usunąć ten tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -2803,7 +2803,7 @@ Zgłoś Błąd Danych apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -7756,6 +7756,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 8b9b7ac03..69af89c1b 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1678,7 +1678,7 @@ Dados do Relatório com Problema apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -3378,7 +3378,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -5891,7 +5891,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -7756,6 +7756,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 3c7d3f102..c1e9963f7 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2647,7 +2647,7 @@ Rapor Veri Sorunu apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -3955,7 +3955,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -5891,7 +5891,7 @@ Bu etiketi silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -7756,6 +7756,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 26690077b..f582408b7 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2363,7 +2363,7 @@ Ви дійсно хочете видалити цей тег? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -2767,7 +2767,7 @@ Повідомити про збій даних apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -5139,7 +5139,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -7756,6 +7756,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index ac05bc01a..eba1176e5 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1569,7 +1569,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -1962,7 +1962,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -2623,7 +2623,7 @@ Report Data Glitch apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -7014,6 +7014,13 @@ 50 + + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 680906979..16e86c2f2 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -1648,7 +1648,7 @@ libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 70 + 71 @@ -2084,7 +2084,7 @@ 您真的要删除此标签吗? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 87 + 85 @@ -2820,7 +2820,7 @@ 报告数据故障 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 385 + 409 @@ -7757,6 +7757,14 @@ 50 + + Market Data + Market Data + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 374 + + From ab9133fa2478128f32472e0d3fdf267c14594762 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Feb 2025 10:53:06 +0100 Subject: [PATCH 076/164] Bugfix/fix gaps in chart of benchmark comparator (#4311) * Fix benchmark interval * Update changelog --- CHANGELOG.md | 4 ++ .../src/app/benchmark/benchmark.controller.ts | 30 ++++++++- .../api/src/app/benchmark/benchmark.module.ts | 30 ++++++++- .../src/app/benchmark/benchmark.service.ts | 63 ++++++++++--------- .../analysis/analysis-page.component.ts | 1 + apps/client/src/app/services/data.service.ts | 14 +++-- 6 files changed, 102 insertions(+), 40 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5e982369..4a24fb605 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for German (`de`) - Upgraded `@trivago/prettier-plugin-sort-imports` from version `5.2.1` to `5.2.2` +### Fixed + +- Fixed the gaps in the chart of the benchmark comparator + ## 2.138.0 - 2025-02-08 ### Added diff --git a/apps/api/src/app/benchmark/benchmark.controller.ts b/apps/api/src/app/benchmark/benchmark.controller.ts index 66c268b9b..d19081011 100644 --- a/apps/api/src/app/benchmark/benchmark.controller.ts +++ b/apps/api/src/app/benchmark/benchmark.controller.ts @@ -2,7 +2,9 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorat import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; +import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; +import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config'; import type { AssetProfileIdentifier, BenchmarkMarketDataDetails, @@ -16,6 +18,7 @@ import { Controller, Delete, Get, + Headers, HttpException, Inject, Param, @@ -34,6 +37,7 @@ import { BenchmarkService } from './benchmark.service'; @Controller('benchmark') export class BenchmarkController { public constructor( + private readonly apiService: ApiService, private readonly benchmarkService: BenchmarkService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -108,23 +112,43 @@ export class BenchmarkController { @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseInterceptors(TransformDataSourceInRequestInterceptor) public async getBenchmarkMarketDataForUser( + @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Param('dataSource') dataSource: DataSource, @Param('startDateString') startDateString: string, @Param('symbol') symbol: string, - @Query('range') dateRange: DateRange = 'max' + @Query('range') dateRange: DateRange = 'max', + @Query('accounts') filterByAccounts?: string, + @Query('assetClasses') filterByAssetClasses?: string, + @Query('dataSource') filterByDataSource?: string, + @Query('symbol') filterBySymbol?: string, + @Query('tags') filterByTags?: string, + @Query('withExcludedAccounts') withExcludedAccountsParam = 'false' ): Promise { const { endDate, startDate } = getIntervalFromDateRange( dateRange, new Date(startDateString) ); - const userCurrency = this.request.user.Settings.settings.baseCurrency; + + const filters = this.apiService.buildFiltersFromQueryParams({ + filterByAccounts, + filterByAssetClasses, + filterByDataSource, + filterBySymbol, + filterByTags + }); + + const withExcludedAccounts = withExcludedAccountsParam === 'true'; return this.benchmarkService.getMarketDataForUser({ dataSource, + dateRange, endDate, + filters, + impersonationId, startDate, symbol, - userCurrency + withExcludedAccounts, + user: this.request.user }); } } diff --git a/apps/api/src/app/benchmark/benchmark.module.ts b/apps/api/src/app/benchmark/benchmark.module.ts index 4c5f4d58e..8c0428729 100644 --- a/apps/api/src/app/benchmark/benchmark.module.ts +++ b/apps/api/src/app/benchmark/benchmark.module.ts @@ -1,13 +1,25 @@ +import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; +import { AccountService } from '@ghostfolio/api/app/account/account.service'; +import { OrderModule } from '@ghostfolio/api/app/order/order.module'; +import { PortfolioCalculatorFactory } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator.factory'; +import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service'; +import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; +import { RulesService } from '@ghostfolio/api/app/portfolio/rules.service'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module'; +import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; +import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; +import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; +import { PortfolioSnapshotQueueModule } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { Module } from '@nestjs/common'; @@ -19,18 +31,32 @@ import { BenchmarkService } from './benchmark.service'; controllers: [BenchmarkController], exports: [BenchmarkService], imports: [ + ApiModule, ConfigurationModule, DataProviderModule, ExchangeRateDataModule, + ImpersonationModule, MarketDataModule, + OrderModule, + PortfolioSnapshotQueueModule, PrismaModule, PropertyModule, RedisCacheModule, SymbolModule, SymbolProfileModule, TransformDataSourceInRequestModule, - TransformDataSourceInResponseModule + TransformDataSourceInResponseModule, + UserModule ], - providers: [BenchmarkService] + providers: [ + AccountBalanceService, + AccountService, + BenchmarkService, + CurrentRateService, + MarketDataService, + PortfolioCalculatorFactory, + PortfolioService, + RulesService + ] }) export class BenchmarkModule {} diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/app/benchmark/benchmark.service.ts index 4e466668c..3efbc74ff 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/app/benchmark/benchmark.service.ts @@ -1,6 +1,6 @@ +import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; -import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; @@ -22,22 +22,19 @@ import { Benchmark, BenchmarkMarketDataDetails, BenchmarkProperty, - BenchmarkResponse + BenchmarkResponse, + Filter } from '@ghostfolio/common/interfaces'; -import { BenchmarkTrend } from '@ghostfolio/common/types'; +import { + BenchmarkTrend, + DateRange, + UserWithSettings +} from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; import { SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; -import { - addHours, - differenceInDays, - eachDayOfInterval, - format, - isAfter, - isSameDay, - subDays -} from 'date-fns'; +import { addHours, format, isAfter, isSameDay, subDays } from 'date-fns'; import { isNumber, uniqBy } from 'lodash'; import ms from 'ms'; @@ -48,11 +45,11 @@ export class BenchmarkService { private readonly CACHE_KEY_BENCHMARKS = 'BENCHMARKS'; public constructor( - private readonly configurationService: ConfigurationService, private readonly dataProviderService: DataProviderService, private readonly exchangeRateDataService: ExchangeRateDataService, private readonly marketDataService: MarketDataService, private readonly prismaService: PrismaService, + private readonly portfolioService: PortfolioService, private readonly propertyService: PropertyService, private readonly redisCacheService: RedisCacheService, private readonly symbolProfileService: SymbolProfileService, @@ -158,31 +155,33 @@ export class BenchmarkService { public async getMarketDataForUser({ dataSource, + dateRange, endDate = new Date(), + filters, + impersonationId, startDate, symbol, - userCurrency + user, + withExcludedAccounts }: { + dateRange: DateRange; endDate?: Date; + filters?: Filter[]; + impersonationId: string; startDate: Date; - userCurrency: string; + user: UserWithSettings; + withExcludedAccounts?: boolean; } & AssetProfileIdentifier): Promise { const marketData: { date: string; value: number }[] = []; - - const days = differenceInDays(endDate, startDate) + 1; - const dates = eachDayOfInterval( - { - start: startDate, - end: endDate - }, - { - step: Math.round( - days / - Math.min(days, this.configurationService.get('MAX_CHART_ITEMS')) - ) - } - ).map((date) => { - return resetHours(date); + const userCurrency = user.Settings.settings.baseCurrency; + const userId = user.id; + + const { chart } = await this.portfolioService.getPerformance({ + dateRange, + filters, + impersonationId, + userId, + withExcludedAccounts }); const [currentSymbolItem, marketDataItems] = await Promise.all([ @@ -200,7 +199,9 @@ export class BenchmarkService { dataSource, symbol, date: { - in: dates + in: chart.map(({ date }) => { + return resetHours(parseDate(date)); + }) } } }) diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts index a9a189d1f..5eebb42ef 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -321,6 +321,7 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { .fetchBenchmarkForUser({ dataSource, symbol, + filters: this.userService.getFilters(), range: this.user?.settings?.dateRange, startDate: this.firstOrderDate }) diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 0da1275e6..6782644ee 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -338,17 +338,23 @@ export class DataService { public fetchBenchmarkForUser({ dataSource, + filters, range, startDate, - symbol + symbol, + withExcludedAccounts }: { + filters?: Filter[]; range: DateRange; startDate: Date; + withExcludedAccounts?: boolean; } & AssetProfileIdentifier): Observable { - let params = new HttpParams(); + let params = this.buildFiltersAsQueryParams({ filters }); - if (range) { - params = params.append('range', range); + params = params.append('range', range); + + if (withExcludedAccounts) { + params = params.append('withExcludedAccounts', withExcludedAccounts); } return this.http.get( From 239adc1045104053df33155836925f540b86905b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Feb 2025 10:55:37 +0100 Subject: [PATCH 077/164] Release 2.139.0 (#4320) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a24fb605..4b5be634a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.139.0 - 2025-02-15 ### Added diff --git a/package-lock.json b/package-lock.json index e015f580e..430ab9fbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.138.0", + "version": "2.139.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.138.0", + "version": "2.139.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index e3043de16..587e88ca5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.138.0", + "version": "2.139.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From e26b015407b774a2dfc92e9db0d270258c56058b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Feb 2025 15:50:41 +0100 Subject: [PATCH 078/164] Bugfix/cannot register cron jobs (#4325) * Reorganize benchmark modules and move benchmarks endpoint --- apps/api/src/app/admin/admin.module.ts | 2 +- apps/api/src/app/admin/admin.service.ts | 2 +- apps/api/src/app/app.module.ts | 4 +- .../benchmarks/benchmarks.controller.ts} | 10 +- .../benchmarks/benchmarks.module.ts} | 11 +- .../benchmarks/benchmarks.service.ts | 163 +++++++++++++++++ apps/api/src/app/info/info.module.ts | 2 +- apps/api/src/app/info/info.service.ts | 2 +- .../services/benchmark/benchmark.module.ts | 24 +++ .../benchmark/benchmark.service.spec.ts | 12 +- .../benchmark/benchmark.service.ts | 165 +----------------- .../interfaces/benchmark-value.interface.ts | 0 .../twitter-bot/twitter-bot.module.ts | 2 +- .../twitter-bot/twitter-bot.service.ts | 2 +- apps/client/src/app/services/data.service.ts | 8 +- 15 files changed, 218 insertions(+), 191 deletions(-) rename apps/api/src/app/{benchmark/benchmark.controller.ts => endpoints/benchmarks/benchmarks.controller.ts} (93%) rename apps/api/src/app/{benchmark/benchmark.module.ts => endpoints/benchmarks/benchmarks.module.ts} (90%) create mode 100644 apps/api/src/app/endpoints/benchmarks/benchmarks.service.ts create mode 100644 apps/api/src/services/benchmark/benchmark.module.ts rename apps/api/src/{app => services}/benchmark/benchmark.service.spec.ts (74%) rename apps/api/src/{app => services}/benchmark/benchmark.service.ts (65%) rename apps/api/src/{app => services}/benchmark/interfaces/benchmark-value.interface.ts (100%) diff --git a/apps/api/src/app/admin/admin.module.ts b/apps/api/src/app/admin/admin.module.ts index 81c58ff03..d94cdd963 100644 --- a/apps/api/src/app/admin/admin.module.ts +++ b/apps/api/src/app/admin/admin.module.ts @@ -1,8 +1,8 @@ -import { BenchmarkModule } from '@ghostfolio/api/app/benchmark/benchmark.module'; import { OrderModule } from '@ghostfolio/api/app/order/order.module'; import { SubscriptionModule } from '@ghostfolio/api/app/subscription/subscription.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; +import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index fb6e90f5d..142109725 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -1,7 +1,7 @@ -import { BenchmarkService } from '@ghostfolio/api/app/benchmark/benchmark.service'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { SubscriptionService } from '@ghostfolio/api/app/subscription/subscription.service'; import { environment } from '@ghostfolio/api/environments/environment'; +import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 3e68bf428..2a515bf43 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -29,10 +29,10 @@ import { AppController } from './app.controller'; import { AssetModule } from './asset/asset.module'; import { AuthDeviceModule } from './auth-device/auth-device.module'; import { AuthModule } from './auth/auth.module'; -import { BenchmarkModule } from './benchmark/benchmark.module'; import { CacheModule } from './cache/cache.module'; import { AiModule } from './endpoints/ai/ai.module'; import { ApiKeysModule } from './endpoints/api-keys/api-keys.module'; +import { BenchmarksModule } from './endpoints/benchmarks/benchmarks.module'; import { GhostfolioModule } from './endpoints/data-providers/ghostfolio/ghostfolio.module'; import { MarketDataModule } from './endpoints/market-data/market-data.module'; import { PublicModule } from './endpoints/public/public.module'; @@ -63,7 +63,7 @@ import { UserModule } from './user/user.module'; AssetModule, AuthDeviceModule, AuthModule, - BenchmarkModule, + BenchmarksModule, BullModule.forRoot({ redis: { db: parseInt(process.env.REDIS_DB ?? '0', 10), diff --git a/apps/api/src/app/benchmark/benchmark.controller.ts b/apps/api/src/app/endpoints/benchmarks/benchmarks.controller.ts similarity index 93% rename from apps/api/src/app/benchmark/benchmark.controller.ts rename to apps/api/src/app/endpoints/benchmarks/benchmarks.controller.ts index d19081011..69383a30d 100644 --- a/apps/api/src/app/benchmark/benchmark.controller.ts +++ b/apps/api/src/app/endpoints/benchmarks/benchmarks.controller.ts @@ -3,6 +3,7 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; +import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config'; import type { @@ -32,13 +33,14 @@ import { AuthGuard } from '@nestjs/passport'; import { DataSource } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; -import { BenchmarkService } from './benchmark.service'; +import { BenchmarksService } from './benchmarks.service'; -@Controller('benchmark') -export class BenchmarkController { +@Controller('benchmarks') +export class BenchmarksController { public constructor( private readonly apiService: ApiService, private readonly benchmarkService: BenchmarkService, + private readonly benchmarksService: BenchmarksService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -139,7 +141,7 @@ export class BenchmarkController { const withExcludedAccounts = withExcludedAccountsParam === 'true'; - return this.benchmarkService.getMarketDataForUser({ + return this.benchmarksService.getMarketDataForUser({ dataSource, dateRange, endDate, diff --git a/apps/api/src/app/benchmark/benchmark.module.ts b/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts similarity index 90% rename from apps/api/src/app/benchmark/benchmark.module.ts rename to apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts index 8c0428729..a0f443621 100644 --- a/apps/api/src/app/benchmark/benchmark.module.ts +++ b/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts @@ -11,6 +11,7 @@ import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; +import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; @@ -24,12 +25,11 @@ import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/sym import { Module } from '@nestjs/common'; -import { BenchmarkController } from './benchmark.controller'; -import { BenchmarkService } from './benchmark.service'; +import { BenchmarksController } from './benchmarks.controller'; +import { BenchmarksService } from './benchmarks.service'; @Module({ - controllers: [BenchmarkController], - exports: [BenchmarkService], + controllers: [BenchmarksController], imports: [ ApiModule, ConfigurationModule, @@ -52,6 +52,7 @@ import { BenchmarkService } from './benchmark.service'; AccountBalanceService, AccountService, BenchmarkService, + BenchmarksService, CurrentRateService, MarketDataService, PortfolioCalculatorFactory, @@ -59,4 +60,4 @@ import { BenchmarkService } from './benchmark.service'; RulesService ] }) -export class BenchmarkModule {} +export class BenchmarksModule {} diff --git a/apps/api/src/app/endpoints/benchmarks/benchmarks.service.ts b/apps/api/src/app/endpoints/benchmarks/benchmarks.service.ts new file mode 100644 index 000000000..237f0d153 --- /dev/null +++ b/apps/api/src/app/endpoints/benchmarks/benchmarks.service.ts @@ -0,0 +1,163 @@ +import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; +import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; +import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; +import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; +import { DATE_FORMAT, parseDate, resetHours } from '@ghostfolio/common/helper'; +import { + AssetProfileIdentifier, + BenchmarkMarketDataDetails, + Filter +} from '@ghostfolio/common/interfaces'; +import { DateRange, UserWithSettings } from '@ghostfolio/common/types'; + +import { Injectable, Logger } from '@nestjs/common'; +import { format, isSameDay } from 'date-fns'; +import { isNumber } from 'lodash'; + +@Injectable() +export class BenchmarksService { + public constructor( + private readonly benchmarkService: BenchmarkService, + private readonly exchangeRateDataService: ExchangeRateDataService, + private readonly marketDataService: MarketDataService, + private readonly portfolioService: PortfolioService, + private readonly symbolService: SymbolService + ) {} + + public async getMarketDataForUser({ + dataSource, + dateRange, + endDate = new Date(), + filters, + impersonationId, + startDate, + symbol, + user, + withExcludedAccounts + }: { + dateRange: DateRange; + endDate?: Date; + filters?: Filter[]; + impersonationId: string; + startDate: Date; + user: UserWithSettings; + withExcludedAccounts?: boolean; + } & AssetProfileIdentifier): Promise { + const marketData: { date: string; value: number }[] = []; + const userCurrency = user.Settings.settings.baseCurrency; + const userId = user.id; + + const { chart } = await this.portfolioService.getPerformance({ + dateRange, + filters, + impersonationId, + userId, + withExcludedAccounts + }); + + const [currentSymbolItem, marketDataItems] = await Promise.all([ + this.symbolService.get({ + dataGatheringItem: { + dataSource, + symbol + } + }), + this.marketDataService.marketDataItems({ + orderBy: { + date: 'asc' + }, + where: { + dataSource, + symbol, + date: { + in: chart.map(({ date }) => { + return resetHours(parseDate(date)); + }) + } + } + }) + ]); + + const exchangeRates = + await this.exchangeRateDataService.getExchangeRatesByCurrency({ + startDate, + currencies: [currentSymbolItem.currency], + targetCurrency: userCurrency + }); + + const exchangeRateAtStartDate = + exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ + format(startDate, DATE_FORMAT) + ]; + + const marketPriceAtStartDate = marketDataItems?.find(({ date }) => { + return isSameDay(date, startDate); + })?.marketPrice; + + if (!marketPriceAtStartDate) { + Logger.error( + `No historical market data has been found for ${symbol} (${dataSource}) at ${format( + startDate, + DATE_FORMAT + )}`, + 'BenchmarkService' + ); + + return { marketData }; + } + + for (const marketDataItem of marketDataItems) { + const exchangeRate = + exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ + format(marketDataItem.date, DATE_FORMAT) + ]; + + const exchangeRateFactor = + isNumber(exchangeRateAtStartDate) && isNumber(exchangeRate) + ? exchangeRate / exchangeRateAtStartDate + : 1; + + marketData.push({ + date: format(marketDataItem.date, DATE_FORMAT), + value: + marketPriceAtStartDate === 0 + ? 0 + : this.benchmarkService.calculateChangeInPercentage( + marketPriceAtStartDate, + marketDataItem.marketPrice * exchangeRateFactor + ) * 100 + }); + } + + const includesEndDate = isSameDay( + parseDate(marketData.at(-1).date), + endDate + ); + + if (currentSymbolItem?.marketPrice && !includesEndDate) { + const exchangeRate = + exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ + format(endDate, DATE_FORMAT) + ]; + + const exchangeRateFactor = + isNumber(exchangeRateAtStartDate) && isNumber(exchangeRate) + ? exchangeRate / exchangeRateAtStartDate + : 1; + + marketData.push({ + date: format(endDate, DATE_FORMAT), + value: + this.benchmarkService.calculateChangeInPercentage( + marketPriceAtStartDate, + currentSymbolItem.marketPrice * exchangeRateFactor + ) * 100 + }); + } + + return { + marketData + }; + } +} diff --git a/apps/api/src/app/info/info.module.ts b/apps/api/src/app/info/info.module.ts index 7903ac397..d7a5ed641 100644 --- a/apps/api/src/app/info/info.module.ts +++ b/apps/api/src/app/info/info.module.ts @@ -1,8 +1,8 @@ -import { BenchmarkModule } from '@ghostfolio/api/app/benchmark/benchmark.module'; import { PlatformModule } from '@ghostfolio/api/app/platform/platform.module'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; +import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; diff --git a/apps/api/src/app/info/info.service.ts b/apps/api/src/app/info/info.service.ts index 1af41520d..780860232 100644 --- a/apps/api/src/app/info/info.service.ts +++ b/apps/api/src/app/info/info.service.ts @@ -1,7 +1,7 @@ -import { BenchmarkService } from '@ghostfolio/api/app/benchmark/benchmark.service'; import { PlatformService } from '@ghostfolio/api/app/platform/platform.service'; import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; +import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; diff --git a/apps/api/src/services/benchmark/benchmark.module.ts b/apps/api/src/services/benchmark/benchmark.module.ts new file mode 100644 index 000000000..870ef244f --- /dev/null +++ b/apps/api/src/services/benchmark/benchmark.module.ts @@ -0,0 +1,24 @@ +import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; +import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; +import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; +import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; +import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; + +import { Module } from '@nestjs/common'; + +import { BenchmarkService } from './benchmark.service'; + +@Module({ + exports: [BenchmarkService], + imports: [ + DataProviderModule, + MarketDataModule, + PrismaModule, + PropertyModule, + RedisCacheModule, + SymbolProfileModule + ], + providers: [BenchmarkService] +}) +export class BenchmarkModule {} diff --git a/apps/api/src/app/benchmark/benchmark.service.spec.ts b/apps/api/src/services/benchmark/benchmark.service.spec.ts similarity index 74% rename from apps/api/src/app/benchmark/benchmark.service.spec.ts rename to apps/api/src/services/benchmark/benchmark.service.spec.ts index 5371fcdc0..833dbcdfc 100644 --- a/apps/api/src/app/benchmark/benchmark.service.spec.ts +++ b/apps/api/src/services/benchmark/benchmark.service.spec.ts @@ -4,17 +4,7 @@ describe('BenchmarkService', () => { let benchmarkService: BenchmarkService; beforeAll(async () => { - benchmarkService = new BenchmarkService( - null, - null, - null, - null, - null, - null, - null, - null, - null - ); + benchmarkService = new BenchmarkService(null, null, null, null, null, null); }); it('calculateChangeInPercentage', async () => { diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/services/benchmark/benchmark.service.ts similarity index 65% rename from apps/api/src/app/benchmark/benchmark.service.ts rename to apps/api/src/services/benchmark/benchmark.service.ts index 3efbc74ff..57105da71 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/services/benchmark/benchmark.service.ts @@ -1,8 +1,5 @@ -import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; -import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; -import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; @@ -11,31 +8,20 @@ import { CACHE_TTL_INFINITE, PROPERTY_BENCHMARKS } from '@ghostfolio/common/config'; -import { - DATE_FORMAT, - calculateBenchmarkTrend, - parseDate, - resetHours -} from '@ghostfolio/common/helper'; +import { calculateBenchmarkTrend } from '@ghostfolio/common/helper'; import { AssetProfileIdentifier, Benchmark, - BenchmarkMarketDataDetails, BenchmarkProperty, - BenchmarkResponse, - Filter + BenchmarkResponse } from '@ghostfolio/common/interfaces'; -import { - BenchmarkTrend, - DateRange, - UserWithSettings -} from '@ghostfolio/common/types'; +import { BenchmarkTrend } from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; import { SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; -import { addHours, format, isAfter, isSameDay, subDays } from 'date-fns'; -import { isNumber, uniqBy } from 'lodash'; +import { addHours, isAfter, subDays } from 'date-fns'; +import { uniqBy } from 'lodash'; import ms from 'ms'; import { BenchmarkValue } from './interfaces/benchmark-value.interface'; @@ -46,14 +32,11 @@ export class BenchmarkService { public constructor( private readonly dataProviderService: DataProviderService, - private readonly exchangeRateDataService: ExchangeRateDataService, private readonly marketDataService: MarketDataService, private readonly prismaService: PrismaService, - private readonly portfolioService: PortfolioService, private readonly propertyService: PropertyService, private readonly redisCacheService: RedisCacheService, - private readonly symbolProfileService: SymbolProfileService, - private readonly symbolService: SymbolService + private readonly symbolProfileService: SymbolProfileService ) {} public calculateChangeInPercentage(baseValue: number, currentValue: number) { @@ -153,142 +136,6 @@ export class BenchmarkService { .sort((a, b) => a.name.localeCompare(b.name)); } - public async getMarketDataForUser({ - dataSource, - dateRange, - endDate = new Date(), - filters, - impersonationId, - startDate, - symbol, - user, - withExcludedAccounts - }: { - dateRange: DateRange; - endDate?: Date; - filters?: Filter[]; - impersonationId: string; - startDate: Date; - user: UserWithSettings; - withExcludedAccounts?: boolean; - } & AssetProfileIdentifier): Promise { - const marketData: { date: string; value: number }[] = []; - const userCurrency = user.Settings.settings.baseCurrency; - const userId = user.id; - - const { chart } = await this.portfolioService.getPerformance({ - dateRange, - filters, - impersonationId, - userId, - withExcludedAccounts - }); - - const [currentSymbolItem, marketDataItems] = await Promise.all([ - this.symbolService.get({ - dataGatheringItem: { - dataSource, - symbol - } - }), - this.marketDataService.marketDataItems({ - orderBy: { - date: 'asc' - }, - where: { - dataSource, - symbol, - date: { - in: chart.map(({ date }) => { - return resetHours(parseDate(date)); - }) - } - } - }) - ]); - - const exchangeRates = - await this.exchangeRateDataService.getExchangeRatesByCurrency({ - startDate, - currencies: [currentSymbolItem.currency], - targetCurrency: userCurrency - }); - - const exchangeRateAtStartDate = - exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ - format(startDate, DATE_FORMAT) - ]; - - const marketPriceAtStartDate = marketDataItems?.find(({ date }) => { - return isSameDay(date, startDate); - })?.marketPrice; - - if (!marketPriceAtStartDate) { - Logger.error( - `No historical market data has been found for ${symbol} (${dataSource}) at ${format( - startDate, - DATE_FORMAT - )}`, - 'BenchmarkService' - ); - - return { marketData }; - } - - for (const marketDataItem of marketDataItems) { - const exchangeRate = - exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ - format(marketDataItem.date, DATE_FORMAT) - ]; - - const exchangeRateFactor = - isNumber(exchangeRateAtStartDate) && isNumber(exchangeRate) - ? exchangeRate / exchangeRateAtStartDate - : 1; - - marketData.push({ - date: format(marketDataItem.date, DATE_FORMAT), - value: - marketPriceAtStartDate === 0 - ? 0 - : this.calculateChangeInPercentage( - marketPriceAtStartDate, - marketDataItem.marketPrice * exchangeRateFactor - ) * 100 - }); - } - - const includesEndDate = isSameDay( - parseDate(marketData.at(-1).date), - endDate - ); - - if (currentSymbolItem?.marketPrice && !includesEndDate) { - const exchangeRate = - exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ - format(endDate, DATE_FORMAT) - ]; - - const exchangeRateFactor = - isNumber(exchangeRateAtStartDate) && isNumber(exchangeRate) - ? exchangeRate / exchangeRateAtStartDate - : 1; - - marketData.push({ - date: format(endDate, DATE_FORMAT), - value: - this.calculateChangeInPercentage( - marketPriceAtStartDate, - currentSymbolItem.marketPrice * exchangeRateFactor - ) * 100 - }); - } - - return { - marketData - }; - } - public async addBenchmark({ dataSource, symbol diff --git a/apps/api/src/app/benchmark/interfaces/benchmark-value.interface.ts b/apps/api/src/services/benchmark/interfaces/benchmark-value.interface.ts similarity index 100% rename from apps/api/src/app/benchmark/interfaces/benchmark-value.interface.ts rename to apps/api/src/services/benchmark/interfaces/benchmark-value.interface.ts diff --git a/apps/api/src/services/twitter-bot/twitter-bot.module.ts b/apps/api/src/services/twitter-bot/twitter-bot.module.ts index 4a2b1589a..80d53169c 100644 --- a/apps/api/src/services/twitter-bot/twitter-bot.module.ts +++ b/apps/api/src/services/twitter-bot/twitter-bot.module.ts @@ -1,5 +1,5 @@ -import { BenchmarkModule } from '@ghostfolio/api/app/benchmark/benchmark.module'; import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module'; +import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { TwitterBotService } from '@ghostfolio/api/services/twitter-bot/twitter-bot.service'; diff --git a/apps/api/src/services/twitter-bot/twitter-bot.service.ts b/apps/api/src/services/twitter-bot/twitter-bot.service.ts index a32882aed..a17585c5b 100644 --- a/apps/api/src/services/twitter-bot/twitter-bot.service.ts +++ b/apps/api/src/services/twitter-bot/twitter-bot.service.ts @@ -1,5 +1,5 @@ -import { BenchmarkService } from '@ghostfolio/api/app/benchmark/benchmark.service'; import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; +import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ghostfolioFearAndGreedIndexDataSource, diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 6782644ee..0bc4ebccc 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -303,7 +303,7 @@ export class DataService { } public deleteBenchmark({ dataSource, symbol }: AssetProfileIdentifier) { - return this.http.delete(`/api/v1/benchmark/${dataSource}/${symbol}`); + return this.http.delete(`/api/v1/benchmarks/${dataSource}/${symbol}`); } public deleteOwnUser(aData: DeleteOwnUserDto) { @@ -358,7 +358,7 @@ export class DataService { } return this.http.get( - `/api/v1/benchmark/${dataSource}/${symbol}/${format( + `/api/v1/benchmarks/${dataSource}/${symbol}/${format( startDate, DATE_FORMAT )}`, @@ -367,7 +367,7 @@ export class DataService { } public fetchBenchmarks() { - return this.http.get('/api/v1/benchmark'); + return this.http.get('/api/v1/benchmarks'); } public fetchExport({ @@ -704,7 +704,7 @@ export class DataService { } public postBenchmark(benchmark: AssetProfileIdentifier) { - return this.http.post('/api/v1/benchmark', benchmark); + return this.http.post('/api/v1/benchmarks', benchmark); } public postMarketData({ From 57673046e7d14c5fbaf9ec8b31aea90719a38972 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Feb 2025 15:52:25 +0100 Subject: [PATCH 079/164] Release 2.139.1 (#4326) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b5be634a..ac0f572de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 2.139.0 - 2025-02-15 +## 2.139.1 - 2025-02-15 ### Added diff --git a/package-lock.json b/package-lock.json index 430ab9fbb..21cc622d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.139.0", + "version": "2.139.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.139.0", + "version": "2.139.1", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 587e88ca5..a97178081 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.139.0", + "version": "2.139.1", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 02a4e270836ffb54d0f9aa0a3751e119e1dbec82 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sun, 16 Feb 2025 14:47:44 +0700 Subject: [PATCH 080/164] Bugfix/missing assets in Storybook (#4324) * fix(sb): add staticDirs config * fix(sb): improve config type safety * Update changelog --- CHANGELOG.md | 6 ++++++ libs/ui/.storybook/main.js | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac0f572de..9c26756aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Fixed + +- Added missing assets in _Storybook_ setup + ## 2.139.1 - 2025-02-15 ### Added diff --git a/libs/ui/.storybook/main.js b/libs/ui/.storybook/main.js index 8c8323a0c..5b50ae062 100644 --- a/libs/ui/.storybook/main.js +++ b/libs/ui/.storybook/main.js @@ -1,9 +1,16 @@ +/** @type {import('@storybook/angular').StorybookConfig} */ const config = { addons: ['@storybook/addon-essentials'], framework: { name: '@storybook/angular', options: {} }, + staticDirs: [ + { + from: '../../../apps/client/src/assets', + to: '/assets' + } + ], stories: ['../**/*.stories.@(js|jsx|ts|tsx|mdx)'] }; From ec098c8d68353b56de99a53e9920dc7a8e21c889 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Tue, 18 Feb 2025 01:21:08 +0700 Subject: [PATCH 081/164] Feature/extend tooltip of treemap chart (#4323) * feat(ui): Extend tooltip * allocation * change * performance * feat(sb): add story for treemap chart * Update changelog --- CHANGELOG.md | 1 + .../treemap-chart.component.stories.ts | 392 ++++++++++++++++++ .../treemap-chart/treemap-chart.component.ts | 30 +- 3 files changed, 417 insertions(+), 6 deletions(-) create mode 100644 libs/ui/src/lib/treemap-chart/treemap-chart.component.stories.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c26756aa..cfd358244 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Extended the tooltip in the chart of the holdings tab on the home page by the allocation, change and performance - Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (Asia-Pacific Markets) - Added a new static portfolio analysis rule: _Regional Market Cluster Risk_ (Japan) - Added support to create custom tags in the holding detail dialog (experimental) diff --git a/libs/ui/src/lib/treemap-chart/treemap-chart.component.stories.ts b/libs/ui/src/lib/treemap-chart/treemap-chart.component.stories.ts new file mode 100644 index 000000000..2000b4f98 --- /dev/null +++ b/libs/ui/src/lib/treemap-chart/treemap-chart.component.stories.ts @@ -0,0 +1,392 @@ +import { CommonModule } from '@angular/common'; +import '@angular/localize/init'; +import { moduleMetadata } from '@storybook/angular'; +import type { Meta, StoryObj } from '@storybook/angular'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; + +import { GfTreemapChartComponent } from './treemap-chart.component'; + +export default { + title: 'Treemap Chart', + component: GfTreemapChartComponent, + decorators: [ + moduleMetadata({ + imports: [CommonModule, NgxSkeletonLoaderModule] + }) + ], + argTypes: { + colorScheme: { + control: { + type: 'select' + }, + options: ['DARK', 'LIGHT'] + }, + cursor: { + control: { + type: 'select' + }, + options: ['', 'pointer'] + } + } +} as Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + baseCurrency: 'USD', + colorScheme: 'LIGHT', + cursor: undefined, + dateRange: 'mtd', + holdings: [ + { + allocationInPercentage: 0.042990776363386086, + assetClass: 'EQUITY', + assetSubClass: 'STOCK', + countries: [], + currency: 'USD', + dataSource: 'YAHOO', + dateOfFirstActivity: new Date('2021-12-01T00:00:00.000Z'), + dividend: 0, + grossPerformance: 3856, + grossPerformancePercent: 0.46047289228564603, + grossPerformancePercentWithCurrencyEffect: 0.46047289228564603, + grossPerformanceWithCurrencyEffect: 3856, + holdings: [], + investment: 8374, + marketPrice: 244.6, + name: 'Apple Inc', + netPerformance: 3855, + netPerformancePercent: 0.460353475041796, + netPerformancePercentWithCurrencyEffect: 0.036440677966101696, + netPerformanceWithCurrencyEffect: 430, + quantity: 50, + sectors: [], + symbol: 'AAPL', + tags: [], + transactionCount: 1, + url: 'https://www.apple.com', + valueInBaseCurrency: 12230 + }, + { + allocationInPercentage: 0.02377401948293552, + assetClass: 'EQUITY', + assetSubClass: 'STOCK', + countries: [], + currency: 'EUR', + dataSource: 'YAHOO', + dateOfFirstActivity: new Date('2021-04-23T00:00:00.000Z'), + dividend: 192, + grossPerformance: 2226.700251889169, + grossPerformancePercent: 0.49083842309827874, + grossPerformancePercentWithCurrencyEffect: 0.29306136948826367, + grossPerformanceWithCurrencyEffect: 1532.8272791336772, + holdings: [], + investment: 4536.523929471033, + marketPrice: 322.2, + name: 'Allianz SE', + netPerformance: 2222.2921914357685, + netPerformancePercent: 0.48986674069961134, + netPerformancePercentWithCurrencyEffect: 0.034489367670592026, + netPerformanceWithCurrencyEffect: 225.48257403052068, + quantity: 20, + sectors: [], + symbol: 'ALV.DE', + tags: [], + transactionCount: 2, + url: 'https://www.allianz.com', + valueInBaseCurrency: 6763.224181360202 + }, + { + allocationInPercentage: 0.08038536990007467, + assetClass: 'EQUITY', + assetSubClass: 'STOCK', + countries: [], + currency: 'USD', + dataSource: 'YAHOO', + dateOfFirstActivity: new Date('2018-10-01T00:00:00.000Z'), + dividend: 0, + grossPerformance: 12758.05, + grossPerformancePercent: 1.2619300787837724, + grossPerformancePercentWithCurrencyEffect: 1.2619300787837724, + grossPerformanceWithCurrencyEffect: 12758.05, + holdings: [], + investment: 10109.95, + marketPrice: 228.68, + name: 'Amazon.com, Inc.', + netPerformance: 12677.26, + netPerformancePercent: 1.253938941339967, + netPerformancePercentWithCurrencyEffect: -0.037866008722316276, + netPerformanceWithCurrencyEffect: -899.99926757812, + quantity: 100, + sectors: [], + symbol: 'AMZN', + tags: [], + transactionCount: 1, + url: 'https://www.aboutamazon.com', + valueInBaseCurrency: 22868 + }, + { + allocationInPercentage: 0.19216416482928922, + assetClass: 'LIQUIDITY', + assetSubClass: 'CRYPTOCURRENCY', + countries: [], + currency: 'USD', + dataSource: 'COINGECKO', + dateOfFirstActivity: new Date('2017-08-16T00:00:00.000Z'), + dividend: 0, + grossPerformance: 52666.7898248, + grossPerformancePercent: 26.333394912400003, + grossPerformancePercentWithCurrencyEffect: 26.333394912400003, + grossPerformanceWithCurrencyEffect: 52666.7898248, + holdings: [], + investment: 1999.9999999999998, + marketPrice: 97364, + name: 'Bitcoin', + netPerformance: 52636.8898248, + netPerformancePercent: 26.3184449124, + netPerformancePercentWithCurrencyEffect: -0.04760906442310894, + netPerformanceWithCurrencyEffect: -2732.737808972287, + quantity: 0.5614682, + sectors: [], + symbol: 'bitcoin', + tags: [], + transactionCount: 1, + url: null, + valueInBaseCurrency: 54666.7898248 + }, + { + allocationInPercentage: 0.007378652850073097, + assetClass: 'FIXED_INCOME', + assetSubClass: 'BOND', + countries: [], + currency: 'EUR', + dataSource: 'MANUAL', + dateOfFirstActivity: new Date('2021-02-01T00:00:00.000Z'), + dividend: 11.45, + grossPerformance: 0, + grossPerformancePercent: 0, + grossPerformancePercentWithCurrencyEffect: -0.1247202380342517, + grossPerformanceWithCurrencyEffect: -258.2576430160448, + holdings: [], + investment: 2099.0764063811926, + marketPrice: 1, + name: 'Bondora Go & Grow', + netPerformance: 0, + netPerformancePercent: 0, + netPerformancePercentWithCurrencyEffect: 0.009445843828715519, + netPerformanceWithCurrencyEffect: 19.6420125363184, + quantity: 2000, + sectors: [], + symbol: 'BONDORA_GO_AND_GROW', + tags: [], + transactionCount: 5, + url: null, + valueInBaseCurrency: 2099.0764063811926 + }, + { + allocationInPercentage: 0.07787531695543741, + assetClass: 'EQUITY', + assetSubClass: 'ETF', + countries: [], + currency: 'CHF', + dataSource: 'MANUAL', + dateOfFirstActivity: new Date('2021-04-01T00:00:00.000Z'), + dividend: 0, + grossPerformance: 4550.843985045582, + grossPerformancePercent: 0.3631417324494093, + grossPerformancePercentWithCurrencyEffect: 0.42037247857285137, + grossPerformanceWithCurrencyEffect: 5107.057936556927, + holdings: [], + investment: 17603.097090932337, + marketPrice: 188.22, + name: 'frankly Extreme 95 Index', + netPerformance: 4550.843985045582, + netPerformancePercent: 0.3631417324494093, + netPerformancePercentWithCurrencyEffect: 0.026190604904358043, + netPerformanceWithCurrencyEffect: 565.4165171873152, + quantity: 105.87328656807, + sectors: [], + symbol: 'FRANKLY95P', + tags: [], + transactionCount: 6, + url: 'https://www.frankly.ch', + valueInBaseCurrency: 22153.941075977917 + }, + { + allocationInPercentage: 0.04307127421937313, + assetClass: 'EQUITY', + assetSubClass: 'STOCK', + countries: [], + currency: 'USD', + dataSource: 'YAHOO', + dateOfFirstActivity: new Date('2023-01-03T00:00:00.000Z'), + dividend: 0, + grossPerformance: 5065.5, + grossPerformancePercent: 0.7047750229568411, + grossPerformancePercentWithCurrencyEffect: 0.7047750229568411, + grossPerformanceWithCurrencyEffect: 5065.5, + holdings: [], + investment: 7187.4, + marketPrice: 408.43, + name: 'Microsoft Corporation', + netPerformance: 5065.5, + netPerformancePercent: 0.7047750229568411, + netPerformancePercentWithCurrencyEffect: -0.015973588391056275, + netPerformanceWithCurrencyEffect: -198.899926757814, + quantity: 30, + sectors: [], + symbol: 'MSFT', + tags: [], + transactionCount: 1, + url: 'https://www.microsoft.com', + valueInBaseCurrency: 12252.9 + }, + { + allocationInPercentage: 0.18762679306394897, + assetClass: 'EQUITY', + assetSubClass: 'STOCK', + countries: [], + currency: 'USD', + dataSource: 'YAHOO', + dateOfFirstActivity: new Date('2017-01-03T00:00:00.000Z'), + dividend: 0, + grossPerformance: 51227.500000005, + grossPerformancePercent: 23.843379101756675, + grossPerformancePercentWithCurrencyEffect: 23.843379101756675, + grossPerformanceWithCurrencyEffect: 51227.500000005, + holdings: [], + investment: 2148.499999995, + marketPrice: 355.84, + name: 'Tesla, Inc.', + netPerformance: 51197.500000005, + netPerformancePercent: 23.829415871596066, + netPerformancePercentWithCurrencyEffect: -0.12051410125545206, + netPerformanceWithCurrencyEffect: -7314.00091552734, + quantity: 150, + sectors: [], + symbol: 'TSLA', + tags: [], + transactionCount: 1, + url: 'https://www.tesla.com', + valueInBaseCurrency: 53376 + }, + { + allocationInPercentage: 0.053051250766657634, + assetClass: 'EQUITY', + assetSubClass: 'ETF', + countries: [], + currency: 'USD', + dataSource: 'YAHOO', + dateOfFirstActivity: new Date('2019-03-01T00:00:00.000Z'), + dividend: 0, + grossPerformance: 6845.8, + grossPerformancePercent: 1.0164758094605268, + grossPerformancePercentWithCurrencyEffect: 1.0164758094605268, + grossPerformanceWithCurrencyEffect: 6845.8, + holdings: [], + investment: 8246.2, + marketPrice: 301.84, + name: 'Vanguard Total Stock Market Index Fund ETF Shares', + netPerformance: 6746.3, + netPerformancePercent: 1.0017018833976383, + netPerformancePercentWithCurrencyEffect: 0.01085061564051406, + netPerformanceWithCurrencyEffect: 161.99969482422, + quantity: 50, + sectors: [], + symbol: 'VTI', + tags: [], + transactionCount: 5, + url: 'https://www.vanguard.com', + valueInBaseCurrency: 15092 + }, + { + allocationInPercentage: 0.0836576192450555, + assetClass: 'EQUITY', + assetSubClass: 'ETF', + countries: [], + currency: 'CHF', + dataSource: 'YAHOO', + dateOfFirstActivity: new Date('2018-03-01T00:00:00.000Z'), + dividend: 0, + grossPerformance: 6462.42356864925, + grossPerformancePercent: 0.5463044783973836, + grossPerformancePercentWithCurrencyEffect: 0.6282343505275325, + grossPerformanceWithCurrencyEffect: 7121.935580698947, + holdings: [], + investment: 17336.464702612564, + marketPrice: 129.74, + name: 'Vanguard FTSE All-World UCITS ETF', + netPerformance: 6373.040578098944, + netPerformancePercent: 0.5387484388540966, + netPerformancePercentWithCurrencyEffect: 0.008409682389650015, + netPerformanceWithCurrencyEffect: 198.47200506226807, + quantity: 165, + sectors: [], + symbol: 'VWRL.SW', + tags: [], + transactionCount: 5, + url: 'https://www.vanguard.com', + valueInBaseCurrency: 23798.888271261814 + }, + { + allocationInPercentage: 0.03265192235898284, + assetClass: 'EQUITY', + assetSubClass: 'ETF', + countries: [], + currency: 'EUR', + dataSource: 'YAHOO', + dateOfFirstActivity: new Date('2021-08-19T00:00:00.000Z'), + dividend: 0, + grossPerformance: 3112.7991183879094, + grossPerformancePercent: 0.5040147846036197, + grossPerformancePercentWithCurrencyEffect: 0.3516875105542396, + grossPerformanceWithCurrencyEffect: 2416.799201046856, + holdings: [], + investment: 6176.007556675063, + marketPrice: 118.005, + name: 'Xtrackers MSCI World UCITS ETF 1C', + netPerformance: 3081.4179261125105, + netPerformancePercent: 0.4989336392216841, + netPerformancePercentWithCurrencyEffect: 0.006460676966633529, + netPerformanceWithCurrencyEffect: 59.626750161726044, + quantity: 75, + sectors: [], + symbol: 'XDWD.DE', + tags: [], + transactionCount: 1, + url: null, + valueInBaseCurrency: 9288.806675062973 + }, + { + allocationInPercentage: 0.17537283996478595, + assetClass: 'LIQUIDITY', + assetSubClass: 'CASH', + countries: [], + currency: 'USD', + dataSource: 'MANUAL', + dateOfFirstActivity: new Date('2021-04-01T00:00:00.000Z'), + dividend: 0, + grossPerformance: 0, + grossPerformancePercent: 0, + grossPerformancePercentWithCurrencyEffect: 0, + grossPerformanceWithCurrencyEffect: 0, + holdings: [], + investment: 49890, + marketPrice: 0, + name: 'USD', + netPerformance: 0, + netPerformancePercent: 0, + netPerformancePercentWithCurrencyEffect: 0, + netPerformanceWithCurrencyEffect: 0, + quantity: 0, + sectors: [], + symbol: 'USD', + tags: [], + transactionCount: 0, + valueInBaseCurrency: 49890 + } + ], + locale: 'en-US' + } +}; diff --git a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts index 4c3167c9e..8c5ee94de 100644 --- a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts +++ b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts @@ -342,24 +342,42 @@ export class GfTreemapChartComponent }), callbacks: { label: (context) => { + const allocationInPercentage = `${((context.raw._data.allocationInPercentage as number) * 100).toFixed(2)}%`; const name = context.raw._data.name; + const sign = + context.raw._data.netPerformancePercentWithCurrencyEffect > 0 + ? '+' + : ''; const symbol = context.raw._data.symbol; + const netPerformanceInPercentageWithSign = `${sign}${(context.raw._data.netPerformancePercentWithCurrencyEffect * 100).toFixed(2)}%`; + if (context.raw._data.valueInBaseCurrency !== null) { const value = context.raw._data.valueInBaseCurrency as number; return [ - `${name ?? symbol}`, + `${name ?? symbol} (${allocationInPercentage})`, `${value.toLocaleString(this.locale, { maximumFractionDigits: 2, minimumFractionDigits: 2 - })} ${this.baseCurrency}` + })} ${this.baseCurrency}`, + '', + $localize`Change` + ' (' + $localize`Performance` + ')', + `${sign}${context.raw._data.netPerformanceWithCurrencyEffect.toLocaleString( + this.locale, + { + maximumFractionDigits: 2, + minimumFractionDigits: 2 + } + )} ${this.baseCurrency} (${netPerformanceInPercentageWithSign})` ]; } else { - const percentage = - (context.raw._data.allocationInPercentage as number) * 100; - - return [`${name ?? symbol}`, `${percentage.toFixed(2)}%`]; + return [ + `${name ?? symbol} (${allocationInPercentage})`, + '', + $localize`Performance`, + netPerformanceInPercentageWithSign + ]; } }, title: () => { From fe6dcdf6828014809f8ae3ccaf40ad7f1016d2f2 Mon Sep 17 00:00:00 2001 From: Shaunak Das <51281688+shaun-ak@users.noreply.github.com> Date: Mon, 17 Feb 2025 23:52:02 +0530 Subject: [PATCH 082/164] feature/migrate to Angular control flow syntax (#4321) * Migrate to Angular control flow syntax * Update changelog --- CHANGELOG.md | 5 +++++ ...ghostfolio-premium-api-dialog.component.ts | 2 -- .../asset-profile-icon.component.ts | 2 -- .../rule-settings-dialog.component.ts | 9 +-------- .../alert-dialog/alert-dialog.component.ts | 3 +-- .../confirmation-dialog.component.ts | 3 +-- .../prompt-dialog/prompt-dialog.component.ts | 2 -- .../product-page.component.ts | 3 +-- .../benchmark-detail-dialog.component.ts | 2 -- .../data-provider-credits.component.html | 19 +++++++++++++------ .../data-provider-credits.component.ts | 2 -- ...cal-market-data-editor-dialog.component.ts | 2 -- .../tags-selector/tags-selector.component.ts | 2 -- .../trend-indicator.component.ts | 3 +-- 14 files changed, 23 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfd358244..96c90f4e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Changed + +- Migrated the `@ghostfolio/client` components to control flow +- Migrated the `@ghostfolio/ui` components to control flow + ### Fixed - Added missing assets in _Storybook_ setup diff --git a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts index 8c2907064..e42e6259e 100644 --- a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts +++ b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts @@ -3,7 +3,6 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { PROPERTY_API_KEY_GHOSTFOLIO } from '@ghostfolio/common/config'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; -import { CommonModule } from '@angular/common'; import { Component, Inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { @@ -18,7 +17,6 @@ import { GhostfolioPremiumApiDialogParams } from './interfaces/interfaces'; @Component({ imports: [ - CommonModule, GfDialogFooterModule, GfDialogHeaderModule, GfPremiumIndicatorComponent, diff --git a/apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.ts b/apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.ts index 5db862969..179193da0 100644 --- a/apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.ts +++ b/apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -10,7 +9,6 @@ import { DataSource } from '@prisma/client'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-asset-profile-icon', styleUrls: ['./asset-profile-icon.component.scss'], diff --git a/apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.component.ts b/apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.component.ts index 7ee9c66cf..b57bcb0fd 100644 --- a/apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.component.ts +++ b/apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.component.ts @@ -1,6 +1,5 @@ import { XRayRulesSettings } from '@ghostfolio/common/interfaces'; -import { CommonModule } from '@angular/common'; import { Component, Inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -14,13 +13,7 @@ import { MatSliderModule } from '@angular/material/slider'; import { IRuleSettingsDialogParams } from './interfaces/interfaces'; @Component({ - imports: [ - CommonModule, - FormsModule, - MatButtonModule, - MatDialogModule, - MatSliderModule - ], + imports: [FormsModule, MatButtonModule, MatDialogModule, MatSliderModule], selector: 'gf-rule-settings-dialog', styleUrls: ['./rule-settings-dialog.scss'], templateUrl: './rule-settings-dialog.html' diff --git a/apps/client/src/app/core/notification/alert-dialog/alert-dialog.component.ts b/apps/client/src/app/core/notification/alert-dialog/alert-dialog.component.ts index 8aefe84cf..98b6043eb 100644 --- a/apps/client/src/app/core/notification/alert-dialog/alert-dialog.component.ts +++ b/apps/client/src/app/core/notification/alert-dialog/alert-dialog.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; @@ -6,7 +5,7 @@ import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { IAlertDialogParams } from './interfaces/interfaces'; @Component({ - imports: [CommonModule, MatButtonModule, MatDialogModule], + imports: [MatButtonModule, MatDialogModule], selector: 'gf-alert-dialog', styleUrls: ['./alert-dialog.scss'], templateUrl: './alert-dialog.html' diff --git a/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.component.ts b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.component.ts index 9aced99cc..88e5113d7 100644 --- a/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.component.ts +++ b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from '@angular/common'; import { Component, HostListener } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; @@ -7,7 +6,7 @@ import { ConfirmationDialogType } from './confirmation-dialog.type'; import { IConfirmDialogParams } from './interfaces/interfaces'; @Component({ - imports: [CommonModule, MatButtonModule, MatDialogModule], + imports: [MatButtonModule, MatDialogModule], selector: 'gf-confirmation-dialog', styleUrls: ['./confirmation-dialog.scss'], templateUrl: './confirmation-dialog.html' diff --git a/apps/client/src/app/core/notification/prompt-dialog/prompt-dialog.component.ts b/apps/client/src/app/core/notification/prompt-dialog/prompt-dialog.component.ts index 4ec634da9..6c8af4197 100644 --- a/apps/client/src/app/core/notification/prompt-dialog/prompt-dialog.component.ts +++ b/apps/client/src/app/core/notification/prompt-dialog/prompt-dialog.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -8,7 +7,6 @@ import { MatInputModule } from '@angular/material/input'; @Component({ imports: [ - CommonModule, FormsModule, MatButtonModule, MatDialogModule, diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts index 3a0ec4ffb..6a8543e71 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -3,14 +3,13 @@ import { Product } from '@ghostfolio/common/interfaces'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { translate } from '@ghostfolio/ui/i18n'; -import { CommonModule } from '@angular/common'; import { Component, OnInit } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { ActivatedRoute, RouterModule } from '@angular/router'; @Component({ host: { class: 'page' }, - imports: [CommonModule, MatButtonModule, RouterModule], + imports: [MatButtonModule, RouterModule], selector: 'gf-product-page', styleUrls: ['./product-page.scss'], templateUrl: './product-page.html' diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts index 38c6252a8..96dc6800e 100644 --- a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts @@ -8,7 +8,6 @@ import { } from '@ghostfolio/common/interfaces'; import { GfLineChartComponent } from '@ghostfolio/ui/line-chart'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -33,7 +32,6 @@ import { BenchmarkDetailDialogParams } from './interfaces/interfaces'; changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'd-flex flex-column h-100' }, imports: [ - CommonModule, GfDialogFooterModule, GfDialogHeaderModule, GfLineChartComponent, diff --git a/libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html b/libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html index fb9f2c13b..921433620 100644 --- a/libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html +++ b/libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html @@ -1,9 +1,16 @@ - Market data provided by {{ + Market data provided by  + @for ( + dataProviderInfo of dataProviderInfos; + track dataProviderInfo; + let last = $last + ) { + {{ dataProviderInfo.name - }}, . + }} + @if (!last) { + ,  + } + } + . diff --git a/libs/ui/src/lib/data-provider-credits/data-provider-credits.component.ts b/libs/ui/src/lib/data-provider-credits/data-provider-credits.component.ts index 9be034e64..2d455c0d6 100644 --- a/libs/ui/src/lib/data-provider-credits/data-provider-credits.component.ts +++ b/libs/ui/src/lib/data-provider-credits/data-provider-credits.component.ts @@ -1,6 +1,5 @@ import { DataProviderInfo } from '@ghostfolio/common/interfaces'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -10,7 +9,6 @@ import { @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-data-provider-credits', styleUrls: ['./data-provider-credits.component.scss'], diff --git a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts index 710cb4020..73f382c5e 100644 --- a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts +++ b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts @@ -1,7 +1,6 @@ import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -29,7 +28,6 @@ import { HistoricalMarketDataEditorDialogParams } from './interfaces/interfaces' changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'h-100' }, imports: [ - CommonModule, FormsModule, MatButtonModule, MatDatepickerModule, diff --git a/libs/ui/src/lib/tags-selector/tags-selector.component.ts b/libs/ui/src/lib/tags-selector/tags-selector.component.ts index 02b3a0a95..3c15e510c 100644 --- a/libs/ui/src/lib/tags-selector/tags-selector.component.ts +++ b/libs/ui/src/lib/tags-selector/tags-selector.component.ts @@ -1,5 +1,4 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -28,7 +27,6 @@ import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, imports: [ - CommonModule, FormsModule, MatAutocompleteModule, MatChipsModule, diff --git a/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts b/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts index e44c41aa9..efb48c981 100644 --- a/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts +++ b/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts @@ -1,6 +1,5 @@ import { DateRange, MarketState } from '@ghostfolio/common/types'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -11,7 +10,7 @@ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, NgxSkeletonLoaderModule], + imports: [NgxSkeletonLoaderModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-trend-indicator', styleUrls: ['./trend-indicator.component.scss'], From 57957a7b30393e11fe924ade7f971fa6ae00cc2b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 17 Feb 2025 21:03:01 +0100 Subject: [PATCH 083/164] Bugfix/add missing CommonModule in tags selector component (#4335) * Add missing CommonModule (async pipe) --- libs/ui/src/lib/tags-selector/tags-selector.component.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/ui/src/lib/tags-selector/tags-selector.component.ts b/libs/ui/src/lib/tags-selector/tags-selector.component.ts index 3c15e510c..02b3a0a95 100644 --- a/libs/ui/src/lib/tags-selector/tags-selector.component.ts +++ b/libs/ui/src/lib/tags-selector/tags-selector.component.ts @@ -1,4 +1,5 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes'; +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -27,6 +28,7 @@ import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, imports: [ + CommonModule, FormsModule, MatAutocompleteModule, MatChipsModule, From da79cf406f4b61e42b9be6cdc8df386bf8300dde Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:56:50 +0100 Subject: [PATCH 084/164] Feature/reload available tags after creating custom tag in holding detail dialog (#4328) * Reload user to get available tags after creating custom tag * Update changelog --- CHANGELOG.md | 1 + .../holding-detail-dialog/holding-detail-dialog.component.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96c90f4e7..f5af20d2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Reloaded the available tags after creating a custom tag in the holding detail dialog (experimental) - Migrated the `@ghostfolio/client` components to control flow - Migrated the `@ghostfolio/ui` components to control flow diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 69322b216..25317e0c5 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -175,6 +175,9 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { ] }); }), + switchMap(() => { + return this.userService.get(true); + }), takeUntil(this.unsubscribeSubject) ) .subscribe(); From b2698fccbd4ff1f90f9ae554da6c0dd15eaf6005 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 19 Feb 2025 17:25:54 +0100 Subject: [PATCH 085/164] Feature/improve validation of currency management in admin control panel (#4334) * Improve validation of currency management * Update changelog --- CHANGELOG.md | 1 + .../market-data/market-data.controller.ts | 5 ++-- .../create-asset-profile-dialog.component.ts | 29 ++++++++++++------- .../admin-overview.component.ts | 19 ------------ .../admin-overview/admin-overview.html | 10 ------- .../faq/self-hosting/self-hosting-page.html | 5 ++++ 6 files changed, 27 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5af20d2f..d6580eb33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Reloaded the available tags after creating a custom tag in the holding detail dialog (experimental) +- Improved the validation of the currency management in the admin control panel - Migrated the `@ghostfolio/client` components to control flow - Migrated the `@ghostfolio/ui` components to control flow diff --git a/apps/api/src/app/endpoints/market-data/market-data.controller.ts b/apps/api/src/app/endpoints/market-data/market-data.controller.ts index b4aef807a..933e70e9d 100644 --- a/apps/api/src/app/endpoints/market-data/market-data.controller.ts +++ b/apps/api/src/app/endpoints/market-data/market-data.controller.ts @@ -1,6 +1,7 @@ import { AdminService } from '@ghostfolio/api/app/admin/admin.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; +import { getCurrencyFromSymbol, isCurrency } from '@ghostfolio/common/helper'; import { MarketDataDetailsResponse } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { RequestWithUser } from '@ghostfolio/common/types'; @@ -42,7 +43,7 @@ export class MarketDataController { { dataSource, symbol } ]); - if (!assetProfile) { + if (!assetProfile && !isCurrency(getCurrencyFromSymbol(symbol))) { throw new HttpException( getReasonPhrase(StatusCodes.NOT_FOUND), StatusCodes.NOT_FOUND @@ -55,7 +56,7 @@ export class MarketDataController { ); const canReadOwnAssetProfile = - assetProfile.userId === this.request.user.id && + assetProfile?.userId === this.request.user.id && hasPermission( this.request.user.permissions, permissions.readMarketDataOfOwnAssetProfile diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts index fa5e33f10..b0f69fa5c 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts @@ -15,9 +15,11 @@ import { FormControl, FormGroup, ValidationErrors, + ValidatorFn, Validators } from '@angular/forms'; import { MatDialogRef } from '@angular/material/dialog'; +import { isISO4217CurrencyCode } from 'class-validator'; import { uniq } from 'lodash'; import { Subject, takeUntil } from 'rxjs'; @@ -52,9 +54,7 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy { this.createAssetProfileForm = this.formBuilder.group( { addCurrency: new FormControl(null, [ - Validators.maxLength(3), - Validators.minLength(3), - Validators.required + this.iso4217CurrencyCodeValidator() ]), addSymbol: new FormControl(null, [Validators.required]), searchSymbol: new FormControl(null, [Validators.required]) @@ -83,11 +83,11 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy { symbol: this.createAssetProfileForm.get('searchSymbol').value.symbol }); } else if (this.mode === 'currency') { - const currency = this.createAssetProfileForm - .get('addCurrency') - .value.toUpperCase(); + const currency = ( + this.createAssetProfileForm.get('addCurrency').value as string + ).toUpperCase(); - const currencies = uniq([...this.customCurrencies, currency]); + const currencies = uniq([...this.customCurrencies, currency]).sort(); this.dataService .putAdminSetting(PROPERTY_CURRENCIES, { @@ -109,10 +109,7 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy { const addCurrencyFormControl = this.createAssetProfileForm.get('addCurrency'); - if ( - addCurrencyFormControl.hasError('maxlength') || - addCurrencyFormControl.hasError('minlength') - ) { + if (addCurrencyFormControl.hasError('invalidCurrency')) { return true; } @@ -161,4 +158,14 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy { this.changeDetectorRef.markForCheck(); }); } + + private iso4217CurrencyCodeValidator(): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + if (!isISO4217CurrencyCode(control.value?.toUpperCase())) { + return { invalidCurrency: true }; + } + + return null; + }; + } } diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index d217f871d..f54af4174 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -28,7 +28,6 @@ import { formatDistanceToNowStrict, parseISO } from 'date-fns'; -import { uniq } from 'lodash'; import { StringValue } from 'ms'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -122,24 +121,6 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { this.putAdminSetting({ key: PROPERTY_COUPONS, value: coupons }); } - public onAddCurrency() { - const currency = prompt($localize`Please add a currency:`); - - if (currency) { - if (currency.length === 3) { - const currencies = uniq([ - ...this.customCurrencies, - currency.toUpperCase() - ]); - this.putAdminSetting({ key: PROPERTY_CURRENCIES, value: currencies }); - } else { - this.notificationService.alert({ - title: $localize`${currency} is an invalid currency!` - }); - } - } - } - public onChangeCouponDuration(aCouponDuration: StringValue) { this.couponDuration = aCouponDuration; } diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index ba8545d16..a85c32d43 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -95,16 +95,6 @@ } -
- -
diff --git a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html index 7538678c3..3b2f6f605 100644 --- a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html +++ b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html @@ -56,6 +56,11 @@
  • Click on the + button
  • Switch to Add Currency
  • Insert e.g. EUR for Euro
  • +
  • Select Filter by Currencies
  • +
  • Find the entry USDEUR
  • +
  • + Click the menu item Gather Historical Data in the dialog +
  • From 46878ea5a87a49299118dae41c99c0f0dca2e520 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:46:10 +0100 Subject: [PATCH 086/164] Bugfix/improve error handling in http response interceptor (#4338) * Improve error handling * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/core/http-response.interceptor.ts | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6580eb33..b8020def5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Improved the error handling in the `HttpResponseInterceptor` - Added missing assets in _Storybook_ setup ## 2.139.1 - 2025-02-15 diff --git a/apps/client/src/app/core/http-response.interceptor.ts b/apps/client/src/app/core/http-response.interceptor.ts index 018e441fc..62c3540f7 100644 --- a/apps/client/src/app/core/http-response.interceptor.ts +++ b/apps/client/src/app/core/http-response.interceptor.ts @@ -108,10 +108,12 @@ export class HttpResponseInterceptor implements HttpInterceptor { }); } } else if (error.status === StatusCodes.UNAUTHORIZED) { - if (this.webAuthnService.isEnabled()) { - this.router.navigate(['/webauthn']); - } else if (!error.url.includes('/data-providers/ghostfolio/status')) { - this.tokenStorageService.signOut(); + if (!error.url.includes('/data-providers/ghostfolio/status')) { + if (this.webAuthnService.isEnabled()) { + this.router.navigate(['/webauthn']); + } else { + this.tokenStorageService.signOut(); + } } } From 69a0de28cd9afe11e6c0412fff979ee7dce1f84f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:40:27 +0100 Subject: [PATCH 087/164] Bugfix/fix issue with symbol profile overrides in historical market data table of admin control panel (#4339) * Respect symbol profile overrides in market data controller (GET) * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.service.ts | 40 ++++++++++++++++--- .../symbol-profile/symbol-profile.service.ts | 11 +++-- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b8020def5..ed9e778f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Improved the error handling in the `HttpResponseInterceptor` +- Fixed an issue while using symbol profile overrides in the historical market data table of the admin control panel - Added missing assets in _Storybook_ setup ## 2.139.1 - 2025-02-15 diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 142109725..ee79059f9 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -30,6 +30,7 @@ import { EnhancedSymbolProfile, Filter } from '@ghostfolio/common/interfaces'; +import { Sector } from '@ghostfolio/common/interfaces/sector.interface'; import { MarketDataPreset } from '@ghostfolio/common/types'; import { BadRequestException, Injectable, Logger } from '@nestjs/common'; @@ -259,7 +260,8 @@ export class AdminService { }, scraperConfiguration: true, sectors: true, - symbol: true + symbol: true, + SymbolProfileOverrides: true } }), this.prismaService.symbolProfile.count({ where }) @@ -313,11 +315,10 @@ export class AdminService { name, Order, sectors, - symbol + symbol, + SymbolProfileOverrides }) => { - const countriesCount = countries - ? Object.keys(countries).length - : 0; + let countriesCount = countries ? Object.keys(countries).length : 0; const lastMarketPrice = lastMarketPriceMap.get( getAssetProfileIdentifier({ dataSource, symbol }) @@ -331,7 +332,34 @@ export class AdminService { ); })?._count ?? 0; - const sectorsCount = sectors ? Object.keys(sectors).length : 0; + let sectorsCount = sectors ? Object.keys(sectors).length : 0; + + if (SymbolProfileOverrides) { + assetClass = SymbolProfileOverrides.assetClass ?? assetClass; + assetSubClass = + SymbolProfileOverrides.assetSubClass ?? assetSubClass; + + if ( + ( + SymbolProfileOverrides.countries as unknown as Prisma.JsonArray + )?.length > 0 + ) { + countriesCount = ( + SymbolProfileOverrides.countries as unknown as Prisma.JsonArray + ).length; + } + + name = SymbolProfileOverrides.name ?? name; + + if ( + (SymbolProfileOverrides.sectors as unknown as Sector[]) + ?.length > 0 + ) { + sectorsCount = ( + SymbolProfileOverrides.sectors as unknown as Prisma.JsonArray + ).length; + } + } return { assetClass, diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index df0526d9f..0dae63311 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -204,8 +204,7 @@ export class SymbolProfileService { ?.length > 0 ) { item.countries = this.getCountries( - item.SymbolProfileOverrides - ?.countries as unknown as Prisma.JsonArray + item.SymbolProfileOverrides.countries as unknown as Prisma.JsonArray ); } @@ -214,22 +213,22 @@ export class SymbolProfileService { ?.length > 0 ) { item.holdings = this.getHoldings( - item.SymbolProfileOverrides?.holdings as unknown as Prisma.JsonArray + item.SymbolProfileOverrides.holdings as unknown as Prisma.JsonArray ); } - item.name = item.SymbolProfileOverrides?.name ?? item.name; + item.name = item.SymbolProfileOverrides.name ?? item.name; if ( (item.SymbolProfileOverrides.sectors as unknown as Sector[])?.length > 0 ) { item.sectors = this.getSectors( - item.SymbolProfileOverrides?.sectors as unknown as Prisma.JsonArray + item.SymbolProfileOverrides.sectors as unknown as Prisma.JsonArray ); } - item.url = item.SymbolProfileOverrides?.url ?? item.url; + item.url = item.SymbolProfileOverrides.url ?? item.url; delete item.SymbolProfileOverrides; } From f1acff1c7656d9b3383d94e32a5e41af2503687f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 20:51:17 +0100 Subject: [PATCH 088/164] Feature/update locales (#4333) * Update translations * Update changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.de.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.es.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.fr.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.it.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.nl.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.pl.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.pt.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.tr.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.uk.xlf | 114 ++++++++++++------------ apps/client/src/locales/messages.xlf | 110 +++++++++++------------ apps/client/src/locales/messages.zh.xlf | 114 ++++++++++++------------ 13 files changed, 683 insertions(+), 682 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed9e778f6..b0a5b23e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the validation of the currency management in the admin control panel - Migrated the `@ghostfolio/client` components to control flow - Migrated the `@ghostfolio/ui` components to control flow +- Improved the language localization for German (`de`) ### Fixed diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index d70c773e6..a36fb152f 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -447,7 +447,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -583,7 +583,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -803,7 +803,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -1219,7 +1219,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1958,28 +1958,12 @@ 124 - - Please add a currency: - Si us plau, afegiu una divisa: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - - - is an invalid currency! - no és una divisa vàlida! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - Do you really want to delete this coupon? Està segur qeu vol eliminar aquest cupó? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -1987,7 +1971,7 @@ Està segur que vol eliminar aquesta divisa? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -1995,7 +1979,7 @@ Està segur que vol eliminar aquest missatge del sistema? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -2003,7 +1987,7 @@ Està segur que vol depurar el cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -2011,7 +1995,7 @@ Si us plau, afegeixi el seu missatge del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -2061,17 +2045,13 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - User Signup Registrar Usuari apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -2079,7 +2059,7 @@ Mode Només Lecutra apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -2087,7 +2067,7 @@ Recollida de Dades apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -2095,7 +2075,7 @@ Missatge del Sistema apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -2103,7 +2083,7 @@ Estableix el Missatge apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -2111,7 +2091,7 @@ Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -2119,7 +2099,7 @@ Afegir apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -2131,7 +2111,7 @@ Ordre apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -2139,7 +2119,7 @@ Depurar el Cache apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2355,7 +2335,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -5095,7 +5075,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -5611,7 +5591,7 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5623,7 +5603,7 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6775,7 +6755,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6783,7 +6763,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6791,7 +6771,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6799,7 +6779,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6807,7 +6787,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6815,7 +6795,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6823,7 +6803,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6831,7 +6811,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6839,7 +6819,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6847,7 +6827,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6855,7 +6835,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6863,7 +6843,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6871,7 +6851,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6879,7 +6859,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7633,7 +7613,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7764,6 +7744,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index b7ff00641..3983ca586 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -298,7 +298,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -617,20 +617,12 @@ 44 - - Please add a currency: - Bitte Währung hinzufügen: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - Do you really want to delete this coupon? Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -638,7 +630,7 @@ Möchtest du diese Währung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -646,7 +638,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -654,7 +646,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -716,17 +708,13 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - System Message Systemmeldung apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -734,7 +722,7 @@ Systemmeldung setzen apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -742,7 +730,7 @@ Lese-Modus apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -750,7 +738,7 @@ Gutscheincodes apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -758,7 +746,7 @@ Hinzufügen apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -770,7 +758,7 @@ Verwaltung apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -778,7 +766,7 @@ Cache leeren apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2410,7 +2398,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -3346,7 +3334,7 @@ Benutzer Registrierung apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -5316,7 +5304,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -5405,7 +5393,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -5659,7 +5647,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -5767,7 +5755,7 @@ Schweiz apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5779,7 +5767,7 @@ Weltweit apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6155,7 +6143,7 @@ Möchtest du diese Systemmeldung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -6214,14 +6202,6 @@ 109 - - is an invalid currency! - ist eine ungültige Währung! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - If a translation is missing, kindly support us in extending it here. Wenn eine Übersetzung fehlt, unterstütze uns bitte dabei, sie hier zu ergänzen. @@ -6327,7 +6307,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6483,7 +6463,7 @@ Daten einholen apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6775,7 +6755,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6783,7 +6763,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6791,7 +6771,7 @@ Budgetierung apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6799,7 +6779,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6807,7 +6787,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6815,7 +6795,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6823,7 +6803,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6831,7 +6811,7 @@ Persönliche Finanzen apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6839,7 +6819,7 @@ Datenschutz apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6847,7 +6827,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6855,7 +6835,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6863,7 +6843,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6871,7 +6851,7 @@ Vermögen apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6879,7 +6859,7 @@ Vermögensverwaltung apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7633,7 +7613,7 @@ Bitte gebe deinen Ghostfolio API-Schlüssel ein. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7764,6 +7744,26 @@ 374 + + Change + Änderung + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index e12415868..e41708851 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -299,7 +299,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -618,20 +618,12 @@ 44 - - Please add a currency: - Por favor, añade una divisa: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - Do you really want to delete this coupon? ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -639,7 +631,7 @@ ¿Estás seguro de eliminar esta divisa? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -647,7 +639,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -655,7 +647,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -717,17 +709,13 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - System Message Mensaje del sistema apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -735,7 +723,7 @@ Establecer mensaje apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -743,7 +731,7 @@ Modo de solo lectura apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -751,7 +739,7 @@ Cupones apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -759,7 +747,7 @@ Añadir apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -771,7 +759,7 @@ Tareas domésticas apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -779,7 +767,7 @@ Limpiar caché apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2411,7 +2399,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -3347,7 +3335,7 @@ Registro de usuario apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -5317,7 +5305,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -5406,7 +5394,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -5660,7 +5648,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -5768,7 +5756,7 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5780,7 +5768,7 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6156,7 +6144,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -6215,14 +6203,6 @@ 109 - - is an invalid currency! - is an invalid currency! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - If a translation is missing, kindly support us in extending it here. If a translation is missing, kindly support us in extending it here. @@ -6328,7 +6308,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6484,7 +6464,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6776,7 +6756,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6784,7 +6764,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6792,7 +6772,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6800,7 +6780,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6808,7 +6788,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6816,7 +6796,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6824,7 +6804,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6832,7 +6812,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6840,7 +6820,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6848,7 +6828,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6856,7 +6836,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6864,7 +6844,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6872,7 +6852,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6880,7 +6860,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7634,7 +7614,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7765,6 +7745,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index bc5d94438..aa0dd2891 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -358,7 +358,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -877,20 +877,12 @@ 339 - - Please add a currency: - Veuillez ajouter une devise : - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - Do you really want to delete this coupon? Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -898,7 +890,7 @@ Voulez-vous vraiment supprimer cette devise ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -906,7 +898,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -914,7 +906,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -956,10 +948,6 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - Tags @@ -982,7 +970,7 @@ Inscription de Nouveaux Utilisateurs apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -990,7 +978,7 @@ Mode Lecture Seule apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -998,7 +986,7 @@ Message Système apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -1006,7 +994,7 @@ Définir Message apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -1014,7 +1002,7 @@ Codes promotionnels apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -1022,7 +1010,7 @@ Ajouter apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1034,7 +1022,7 @@ Maintenance apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -1042,7 +1030,7 @@ Vider le Cache apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -1150,7 +1138,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -5316,7 +5304,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -5405,7 +5393,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -5659,7 +5647,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -5767,7 +5755,7 @@ Suisse apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5779,7 +5767,7 @@ Mondial apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6155,7 +6143,7 @@ Confirmer la suppresion de ce message système? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -6214,14 +6202,6 @@ 109 - - is an invalid currency! - est une devise non valide ! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - If a translation is missing, kindly support us in extending it here. Si une traduction est manquante, veuillez nous aider à compléter la traduction here. @@ -6327,7 +6307,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6483,7 +6463,7 @@ Collecter les données apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6775,7 +6755,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6783,7 +6763,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6791,7 +6771,7 @@ Budget apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6799,7 +6779,7 @@ Communauté apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6807,7 +6787,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6815,7 +6795,7 @@ Investisseur apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6823,7 +6803,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6831,7 +6811,7 @@ Gestion de Patrimoine apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6839,7 +6819,7 @@ Confidentialité apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6847,7 +6827,7 @@ Logiciels apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6855,7 +6835,7 @@ Outils apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6863,7 +6843,7 @@ Expérience Utilisateur apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6871,7 +6851,7 @@ Patrimoine apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6879,7 +6859,7 @@ Gestion de Patrimoine apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7633,7 +7613,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7764,6 +7744,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index f6761f2c7..a17749690 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -299,7 +299,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -618,20 +618,12 @@ 44 - - Please add a currency: - Aggiungi una valuta: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - Do you really want to delete this coupon? Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -639,7 +631,7 @@ Vuoi davvero eliminare questa valuta? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -647,7 +639,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -655,7 +647,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -717,17 +709,13 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - System Message Messaggio di sistema apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -735,7 +723,7 @@ Imposta messaggio apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -743,7 +731,7 @@ Modalità di sola lettura apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -751,7 +739,7 @@ Buoni sconto apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -759,7 +747,7 @@ Aggiungi apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -771,7 +759,7 @@ Bilancio domestico apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -779,7 +767,7 @@ Svuota la cache apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2411,7 +2399,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -3347,7 +3335,7 @@ Registrazione utente apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -5317,7 +5305,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -5406,7 +5394,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -5660,7 +5648,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -5768,7 +5756,7 @@ Svizzera apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5780,7 +5768,7 @@ Globale apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6156,7 +6144,7 @@ Confermi di voler cancellare questo messaggio di sistema? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -6215,14 +6203,6 @@ 109 - - is an invalid currency! - non è una valuta valida! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - If a translation is missing, kindly support us in extending it here. Se manca una traduzione, puoi aiutarci modificando questo file: here. @@ -6328,7 +6308,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6484,7 +6464,7 @@ Raccolta Dati apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6776,7 +6756,7 @@ Alternativa apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6784,7 +6764,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6792,7 +6772,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6800,7 +6780,7 @@ Comunità apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6808,7 +6788,7 @@ Ufficio familiare apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6816,7 +6796,7 @@ Investitore apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6824,7 +6804,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6832,7 +6812,7 @@ Finanza Personale apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6840,7 +6820,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6848,7 +6828,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6856,7 +6836,7 @@ Strumento apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6864,7 +6844,7 @@ Esperienza Utente apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6872,7 +6852,7 @@ Ricchezza apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6880,7 +6860,7 @@ Gestione Patrimoniale apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7634,7 +7614,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7765,6 +7745,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index aab3a3939..d8609b1b5 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -298,7 +298,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -617,20 +617,12 @@ 44 - - Please add a currency: - Voeg een valuta toe: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - Do you really want to delete this coupon? Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -638,7 +630,7 @@ Wil je deze valuta echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -646,7 +638,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -654,7 +646,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -716,17 +708,13 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - System Message Systeembericht apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -734,7 +722,7 @@ Bericht instellen apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -742,7 +730,7 @@ Alleen lezen apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -750,7 +738,7 @@ Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -758,7 +746,7 @@ Toevoegen apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -770,7 +758,7 @@ Huishouding apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -778,7 +766,7 @@ Cache legen apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2410,7 +2398,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -3346,7 +3334,7 @@ Account aanmaken apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -5316,7 +5304,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -5405,7 +5393,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -5659,7 +5647,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -5767,7 +5755,7 @@ Zwitserland apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5779,7 +5767,7 @@ Wereldwijd apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6155,7 +6143,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -6214,14 +6202,6 @@ 109 - - is an invalid currency! - is an invalid currency! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - If a translation is missing, kindly support us in extending it here. If a translation is missing, kindly support us in extending it here. @@ -6327,7 +6307,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6483,7 +6463,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6775,7 +6755,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6783,7 +6763,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6791,7 +6771,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6799,7 +6779,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6807,7 +6787,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6815,7 +6795,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6823,7 +6803,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6831,7 +6811,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6839,7 +6819,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6847,7 +6827,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6855,7 +6835,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6863,7 +6843,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6871,7 +6851,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6879,7 +6859,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7633,7 +7613,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7764,6 +7744,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index e2e157e14..c53b6177f 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -87,7 +87,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -189,7 +189,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -443,7 +443,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -1147,7 +1147,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1782,20 +1782,12 @@ 124 - - Please add a currency: - Proszę dodać walutę: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - Do you really want to delete this coupon? Czy naprawdę chcesz usunąć ten kupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -1803,7 +1795,7 @@ Czy naprawdę chcesz usunąć tę walutę? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -1811,7 +1803,7 @@ Czy naprawdę chcesz usunąć tę wiadomość systemową? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -1819,7 +1811,7 @@ Czy naprawdę chcesz wyczyścić pamięć podręczną? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -1827,7 +1819,7 @@ Proszę ustawić swoją wiadomość systemową: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -1877,17 +1869,13 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - User Signup Rejestracja Użytkownika apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -1895,7 +1883,7 @@ Tryb Tylko do Odczytu apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -1903,7 +1891,7 @@ Wiadomość Systemowa apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -1911,7 +1899,7 @@ Ustaw Wiadomość apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -1919,7 +1907,7 @@ Kupony apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -1927,7 +1915,7 @@ Dodaj apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1939,7 +1927,7 @@ Konserwacja apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -1947,7 +1935,7 @@ Wyczyszczenie pamięci podręcznej apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2183,7 +2171,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -5391,7 +5379,7 @@ Szwajcaria apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5403,7 +5391,7 @@ Globalny apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6214,14 +6202,6 @@ 109 - - is an invalid currency! - to nieprawidłowa waluta! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - If a translation is missing, kindly support us in extending it here. Jeżeli brakuje jakiegoś tłumaczenia, uprzejmie prosimy o wsparcie w jego uzupełnieniu tutaj. @@ -6327,7 +6307,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6483,7 +6463,7 @@ Gromadzenie Danych apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6775,7 +6755,7 @@ Alternatywa apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6783,7 +6763,7 @@ Aplikacja apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6791,7 +6771,7 @@ Budżetowanie apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6799,7 +6779,7 @@ Społeczność apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6807,7 +6787,7 @@ Biuro Rodzinne apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6815,7 +6795,7 @@ Inwestor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6823,7 +6803,7 @@ Otwarty Kod Źródłowy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6831,7 +6811,7 @@ Finanse Osobiste apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6839,7 +6819,7 @@ Prywatność apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6847,7 +6827,7 @@ Oprogramowanie apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6855,7 +6835,7 @@ Narzędzie apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6863,7 +6843,7 @@ Doświadczenie Użytkownika apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6871,7 +6851,7 @@ Majątek apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6879,7 +6859,7 @@ Zarządzanie Majątkiem apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7633,7 +7613,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7764,6 +7744,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 69af89c1b..e2a79168a 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -358,7 +358,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -781,20 +781,12 @@ 45 - - Please add a currency: - Por favor, adicione uma moeda: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - Do you really want to delete this coupon? Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -802,7 +794,7 @@ Deseja realmente excluir esta moeda? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -810,7 +802,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -818,7 +810,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -852,17 +844,13 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - System Message Mensagem de Sistema apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -870,7 +858,7 @@ Definir Mensagem apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -878,7 +866,7 @@ Modo Somente Leitura apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -886,7 +874,7 @@ Cupões apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -894,7 +882,7 @@ Adicionar apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -906,7 +894,7 @@ Manutenção apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -914,7 +902,7 @@ Limpar Cache apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -1022,7 +1010,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -3278,7 +3266,7 @@ Registo do Utilizador apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -5316,7 +5304,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -5405,7 +5393,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -5659,7 +5647,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -5767,7 +5755,7 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5779,7 +5767,7 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6155,7 +6143,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -6214,14 +6202,6 @@ 109 - - is an invalid currency! - is an invalid currency! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - If a translation is missing, kindly support us in extending it here. If a translation is missing, kindly support us in extending it here. @@ -6327,7 +6307,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6483,7 +6463,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6775,7 +6755,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6783,7 +6763,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6791,7 +6771,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6799,7 +6779,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6807,7 +6787,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6815,7 +6795,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6823,7 +6803,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6831,7 +6811,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6839,7 +6819,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6847,7 +6827,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6855,7 +6835,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6863,7 +6843,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6871,7 +6851,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6879,7 +6859,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7633,7 +7613,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7764,6 +7744,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index c1e9963f7..35415106f 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -87,7 +87,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -189,7 +189,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -443,7 +443,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -1111,7 +1111,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1690,20 +1690,12 @@ 124 - - Please add a currency: - Lütfen bir para birimi giriniz: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - Do you really want to delete this coupon? Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -1711,7 +1703,7 @@ Bu para birimini silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -1719,7 +1711,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -1727,7 +1719,7 @@ Lütfen sistem mesajınızı belirleyin: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -1769,10 +1761,6 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - Tags @@ -1795,7 +1783,7 @@ Kullanıcı Kaydı apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -1803,7 +1791,7 @@ Salt okunur mod apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -1811,7 +1799,7 @@ Sistem Mesajı apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -1819,7 +1807,7 @@ Mesaj Belirle apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -1827,7 +1815,7 @@ Kupon apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -1835,7 +1823,7 @@ Ekle apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1847,7 +1835,7 @@ Genel Ayarlar apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -1855,7 +1843,7 @@ Önbelleği temizle apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2047,7 +2035,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -4867,7 +4855,7 @@ İsviçre apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -4879,7 +4867,7 @@ Küresel apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6155,7 +6143,7 @@ Bu sistem mesajını silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -6214,14 +6202,6 @@ 109 - - is an invalid currency! - is an invalid currency! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - If a translation is missing, kindly support us in extending it here. If a translation is missing, kindly support us in extending it here. @@ -6327,7 +6307,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6483,7 +6463,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6775,7 +6755,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6783,7 +6763,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6791,7 +6771,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6799,7 +6779,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6807,7 +6787,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6815,7 +6795,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6823,7 +6803,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6831,7 +6811,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6839,7 +6819,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6847,7 +6827,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6855,7 +6835,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6863,7 +6843,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6871,7 +6851,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6879,7 +6859,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7633,7 +7613,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7764,6 +7744,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index f582408b7..e013a621a 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -447,7 +447,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -583,7 +583,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -803,7 +803,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -1235,7 +1235,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1933,10 +1933,6 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - Name, symbol or ISIN @@ -1958,28 +1954,12 @@ 49 - - Please add a currency: - Будь ласка, додайте валюту: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - - - is an invalid currency! - є недопустимою валютою! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - Do you really want to delete this coupon? Ви дійсно хочете видалити цей купон? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -1987,7 +1967,7 @@ Ви дійсно хочете видалити цю валюту? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -1995,7 +1975,7 @@ Ви дійсно хочете видалити це системне повідомлення? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -2003,7 +1983,7 @@ Ви дійсно хочете очистити кеш? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -2011,7 +1991,7 @@ Будь ласка, встановіть ваше системне повідомлення: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -2059,7 +2039,7 @@ Реєстрація користувача apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -2067,7 +2047,7 @@ Режим лише для читання apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -2075,7 +2055,7 @@ Збір даних apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -2083,7 +2063,7 @@ Системне повідомлення apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -2091,7 +2071,7 @@ Встановити повідомлення apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -2099,7 +2079,7 @@ Купони apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -2107,7 +2087,7 @@ Додати apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -2119,7 +2099,7 @@ Прибирання apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -2127,7 +2107,7 @@ Очистити кеш apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2279,7 +2259,7 @@ Будь ласка, введіть ваш ключ API Ghostfolio. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -2487,7 +2467,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -5371,7 +5351,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6025,7 +6005,7 @@ Швейцарія apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -6037,7 +6017,7 @@ Глобальний apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6049,7 +6029,7 @@ Альтернатива apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6057,7 +6037,7 @@ Додаток apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6065,7 +6045,7 @@ Бюджетування apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6073,7 +6053,7 @@ Спільнота apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6081,7 +6061,7 @@ Сімейний офіс apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6089,7 +6069,7 @@ Інвестор apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6097,7 +6077,7 @@ Відкритий код apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6105,7 +6085,7 @@ Особисті фінанси apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6113,7 +6093,7 @@ Конфіденційність apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6121,7 +6101,7 @@ Програмне забезпечення apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6129,7 +6109,7 @@ Інструмент apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6137,7 +6117,7 @@ Користувацький досвід apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6145,7 +6125,7 @@ Багатство apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6153,7 +6133,7 @@ Управління багатством apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7764,6 +7744,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index eba1176e5..7d93b392f 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -87,7 +87,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -187,7 +187,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -435,7 +435,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -1114,7 +1114,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1700,53 +1700,39 @@ 124 - - Please add a currency: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - - - is an invalid currency! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 Do you really want to delete this currency? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -1790,51 +1776,47 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - User Signup apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 Read-only Mode apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 System Message apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 Set Message apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 Add apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1845,14 +1827,14 @@ Housekeeping apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 Flush Cache apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2065,7 +2047,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -4965,7 +4947,7 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -4976,7 +4958,7 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -5780,7 +5762,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -5925,7 +5907,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6153,14 +6135,14 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6202,35 +6184,35 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -6258,28 +6240,28 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6307,7 +6289,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6321,7 +6303,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6356,7 +6338,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6906,7 +6888,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7021,6 +7003,24 @@ 374 + + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 16e86c2f2..10fc585a8 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -88,7 +88,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + 22 @@ -190,7 +190,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 24 + 23 @@ -444,7 +444,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 26 + 25 @@ -1156,7 +1156,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 206 + 196 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1791,28 +1791,12 @@ 124 - - Please add a currency: - 请添加货币: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 - - - - is an invalid currency! - 是无效的货币! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - Do you really want to delete this coupon? 您确实要删除此优惠券吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 137 @@ -1820,7 +1804,7 @@ 您真的要删除该货币吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 169 + 150 @@ -1828,7 +1812,7 @@ 您真的要删除这条系统消息吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 182 + 163 @@ -1836,7 +1820,7 @@ 您真的要刷新缓存吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 206 + 187 @@ -1844,7 +1828,7 @@ 请设置您的系统消息: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 226 + 207 @@ -1894,17 +1878,13 @@ apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 - - apps/client/src/app/components/admin-overview/admin-overview.html - 105 - User Signup 用户注册 apps/client/src/app/components/admin-overview/admin-overview.html - 111 + 101 @@ -1912,7 +1892,7 @@ 只读模式 apps/client/src/app/components/admin-overview/admin-overview.html - 125 + 115 @@ -1920,7 +1900,7 @@ 系统信息 apps/client/src/app/components/admin-overview/admin-overview.html - 149 + 139 @@ -1928,7 +1908,7 @@ 设置留言 apps/client/src/app/components/admin-overview/admin-overview.html - 171 + 161 @@ -1936,7 +1916,7 @@ 优惠券 apps/client/src/app/components/admin-overview/admin-overview.html - 179 + 169 @@ -1944,7 +1924,7 @@ 添加 apps/client/src/app/components/admin-overview/admin-overview.html - 239 + 229 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1956,7 +1936,7 @@ 家政 apps/client/src/app/components/admin-overview/admin-overview.html - 247 + 237 @@ -1964,7 +1944,7 @@ 刷新缓存 apps/client/src/app/components/admin-overview/admin-overview.html - 251 + 241 @@ -2200,7 +2180,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + 93 @@ -5432,7 +5412,7 @@ 瑞士 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + 58 libs/ui/src/lib/i18n.ts @@ -5444,7 +5424,7 @@ 全球的 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 60 + 59 libs/ui/src/lib/i18n.ts @@ -6352,7 +6332,7 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + 87 @@ -6516,7 +6496,7 @@ 数据收集 apps/client/src/app/components/admin-overview/admin-overview.html - 137 + 127 @@ -6776,7 +6756,7 @@ Alternative apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + 81 @@ -6784,7 +6764,7 @@ App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + 82 @@ -6792,7 +6772,7 @@ Budgeting apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + 83 @@ -6800,7 +6780,7 @@ Community apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + 84 @@ -6808,7 +6788,7 @@ Family Office apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 86 + 85 @@ -6816,7 +6796,7 @@ Investor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + 88 @@ -6824,7 +6804,7 @@ Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 90 + 89 @@ -6832,7 +6812,7 @@ Personal Finance apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + 91 @@ -6840,7 +6820,7 @@ Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + 92 @@ -6848,7 +6828,7 @@ Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + 94 @@ -6856,7 +6836,7 @@ Tool apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + 95 @@ -6864,7 +6844,7 @@ User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + 96 @@ -6872,7 +6852,7 @@ Wealth apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + 97 @@ -6880,7 +6860,7 @@ Wealth Management apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 99 + 98 @@ -7634,7 +7614,7 @@ Please enter your Ghostfolio API key. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 59 + 57 @@ -7765,6 +7745,26 @@ 374 + + Change + Change + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + + Performance + Performance + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 + + From c90dca565fc7e3ee933582eed3091265a26133db Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 20 Feb 2025 20:53:38 +0100 Subject: [PATCH 089/164] Release 2.140.0 (#4345) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0a5b23e8..d3df5a97c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.140.0 - 2025-02-20 ### Changed diff --git a/package-lock.json b/package-lock.json index 21cc622d5..e604c275b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.139.1", + "version": "2.140.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.139.1", + "version": "2.140.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index a97178081..c3bd3a0d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.139.1", + "version": "2.140.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From fc3613be4e50936212576b91364b6517992c6b70 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 21 Feb 2025 20:42:34 +0100 Subject: [PATCH 090/164] Feature/upgrade prettier to version 3.5.1 (#4342) * Upgrade prettier to version 3.5.1 * Update changelog --- CHANGELOG.md | 6 ++++++ package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3df5a97c..3bb4e27be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Upgraded `prettier` from version `3.4.2` to `3.5.1` + ## 2.140.0 - 2025-02-20 ### Changed diff --git a/package-lock.json b/package-lock.json index e604c275b..0fd7572e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -149,7 +149,7 @@ "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", "nx": "20.3.2", - "prettier": "3.4.2", + "prettier": "3.5.1", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "6.3.0", "react": "18.2.0", @@ -27104,9 +27104,9 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", + "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index c3bd3a0d0..2a3881183 100644 --- a/package.json +++ b/package.json @@ -195,7 +195,7 @@ "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", "nx": "20.3.2", - "prettier": "3.4.2", + "prettier": "3.5.1", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "6.3.0", "react": "18.2.0", From 05b0728b2ac7838ba7b2c614335f379466120dcb Mon Sep 17 00:00:00 2001 From: Sayed Murtadha Ahmed Date: Sat, 22 Feb 2025 11:20:39 +0300 Subject: [PATCH 091/164] Feature/extend export by tags (#4337) * Extend export by tags * Update changelog --- CHANGELOG.md | 4 +++ apps/api/src/app/export/export.module.ts | 3 +- apps/api/src/app/export/export.service.ts | 30 ++++++++++++++----- .../src/lib/interfaces/export.interface.ts | 11 +++---- 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bb4e27be..eac524907 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Extended the export functionality by the tags + ### Changed - Upgraded `prettier` from version `3.4.2` to `3.5.1` diff --git a/apps/api/src/app/export/export.module.ts b/apps/api/src/app/export/export.module.ts index 048c60359..892a761cc 100644 --- a/apps/api/src/app/export/export.module.ts +++ b/apps/api/src/app/export/export.module.ts @@ -1,6 +1,7 @@ import { AccountModule } from '@ghostfolio/api/app/account/account.module'; import { OrderModule } from '@ghostfolio/api/app/order/order.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; +import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; import { Module } from '@nestjs/common'; @@ -8,7 +9,7 @@ import { ExportController } from './export.controller'; import { ExportService } from './export.service'; @Module({ - imports: [AccountModule, ApiModule, OrderModule], + imports: [AccountModule, ApiModule, OrderModule, TagModule], controllers: [ExportController], providers: [ExportService] }) diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 1ff18ce9c..219ffffda 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -1,6 +1,7 @@ import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { environment } from '@ghostfolio/api/environments/environment'; +import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { Filter, Export } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; @@ -9,7 +10,8 @@ import { Injectable } from '@nestjs/common'; export class ExportService { public constructor( private readonly accountService: AccountService, - private readonly orderService: OrderService + private readonly orderService: OrderService, + private readonly tagService: TagService ) {} public async export({ @@ -60,9 +62,21 @@ export class ExportService { }); } + const tags = (await this.tagService.getTagsForUser(userId)) + .filter(({ isUsed }) => { + return isUsed; + }) + .map(({ id, name }) => { + return { + id, + name + }; + }); + return { meta: { date: new Date().toISOString(), version: environment.version }, accounts, + tags, activities: activities.map( ({ accountId, @@ -72,6 +86,7 @@ export class ExportService { id, quantity, SymbolProfile, + tags: currentTags, type, unitPrice }) => { @@ -86,13 +101,12 @@ export class ExportService { currency: SymbolProfile.currency, dataSource: SymbolProfile.dataSource, date: date.toISOString(), - symbol: - type === 'FEE' || - type === 'INTEREST' || - type === 'ITEM' || - type === 'LIABILITY' - ? SymbolProfile.name - : SymbolProfile.symbol + symbol: ['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(type) + ? SymbolProfile.name + : SymbolProfile.symbol, + tags: currentTags.map(({ id: tagId }) => { + return tagId; + }) }; } ), diff --git a/libs/common/src/lib/interfaces/export.interface.ts b/libs/common/src/lib/interfaces/export.interface.ts index de3d7cf02..1257e50bc 100644 --- a/libs/common/src/lib/interfaces/export.interface.ts +++ b/libs/common/src/lib/interfaces/export.interface.ts @@ -1,10 +1,6 @@ -import { Account, Order } from '@prisma/client'; +import { Account, Order, Tag } from '@prisma/client'; export interface Export { - meta: { - date: string; - version: string; - }; accounts: Omit[]; activities: (Omit< Order, @@ -16,5 +12,10 @@ export interface Export { | 'updatedAt' | 'userId' > & { date: string; symbol: string })[]; + meta: { + date: string; + version: string; + }; + tags: Omit[]; user: { settings: { currency: string } }; } From 7577a452f0b5f042c5dbd0c31e9a79ebe5867ea9 Mon Sep 17 00:00:00 2001 From: Shaunak Das <51281688+shaun-ak@users.noreply.github.com> Date: Sun, 23 Feb 2025 13:20:59 +0530 Subject: [PATCH 092/164] Feature/add activities count to GET user endpoint (#4351) * Add activities count to GET user endpoint * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/user/user.service.ts | 9 +++++++-- libs/common/src/lib/interfaces/user.interface.ts | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eac524907..7fd3aaf6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Extended the export functionality by the tags +- Extended the user endpoint `GET api/v1/user` by the activities count ### Changed diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index dcf9d9404..40bc1b2b5 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -86,6 +86,9 @@ export class UserService { orderBy: { alias: 'asc' }, where: { GranteeUser: { id } } }), + this.prismaService.order.count({ + where: { userId: id } + }), this.prismaService.order.findFirst({ orderBy: { date: 'asc' @@ -96,8 +99,9 @@ export class UserService { ]); const access = userData[0]; - const firstActivity = userData[1]; - let tags = userData[2]; + const activitiesCount = userData[1]; + const firstActivity = userData[2]; + let tags = userData[3]; let systemMessage: SystemMessage; @@ -117,6 +121,7 @@ export class UserService { } return { + activitiesCount, id, permissions, subscription, diff --git a/libs/common/src/lib/interfaces/user.interface.ts b/libs/common/src/lib/interfaces/user.interface.ts index 667e59fd8..84f48d1dc 100644 --- a/libs/common/src/lib/interfaces/user.interface.ts +++ b/libs/common/src/lib/interfaces/user.interface.ts @@ -10,6 +10,7 @@ import { UserSettings } from './user-settings.interface'; export interface User { access: Pick[]; accounts: Account[]; + activitiesCount: number; dateOfFirstActivity: Date; id: string; permissions: string[]; From 190abdf9cc390eefeeee7028cf2eba0c30256303 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 24 Feb 2025 13:53:05 +0100 Subject: [PATCH 093/164] Bugfix/improve numeric comparison of strings in value component (#4330) * Improve numeric comparison of strings * Update changelog --- CHANGELOG.md | 4 ++++ libs/ui/src/lib/value/value.component.html | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fd3aaf6b..019bf4b6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `prettier` from version `3.4.2` to `3.5.1` +### Fixed + +- Improved the numeric comparison of strings in the value component + ## 2.140.0 - 2025-02-20 ### Changed diff --git a/libs/ui/src/lib/value/value.component.html b/libs/ui/src/lib/value/value.component.html index a691c54e8..0ead7497e 100644 --- a/libs/ui/src/lib/value/value.component.html +++ b/libs/ui/src/lib/value/value.component.html @@ -10,8 +10,8 @@ > -
    +
    -
    -
    +
    +
    +
    -
    Date: Mon, 24 Feb 2025 21:54:53 +0100 Subject: [PATCH 094/164] Feature/extend portfolio snapshot by activities count (#4352) * Extend portfolio snapshot by activities count * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/portfolio/calculator/portfolio-calculator.ts | 1 + .../src/app/portfolio/calculator/twr/portfolio-calculator.ts | 3 +++ libs/common/src/lib/models/portfolio-snapshot.ts | 2 ++ 4 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 019bf4b6a..ecbcdc820 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Extended the export functionality by the tags +- Extended the portfolio snapshot in the portfolio calculator by the activities count - Extended the user endpoint `GET api/v1/user` by the activities count ### Changed diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index 2f8a9f0c9..e9c4fdcce 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -175,6 +175,7 @@ export abstract class PortfolioCalculator { if (!transactionPoints.length) { return { + activitiesCount: 0, currentValueInBaseCurrency: new Big(0), errors: [], hasErrors: false, diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts index cf808debb..209a0efd5 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts @@ -101,6 +101,9 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { totalInterestWithCurrencyEffect, totalInvestment, totalInvestmentWithCurrencyEffect, + activitiesCount: this.activities.filter(({ type }) => { + return ['BUY', 'SELL'].includes(type); + }).length, errors: [], historicalData: [], totalLiabilitiesWithCurrencyEffect: new Big(0), diff --git a/libs/common/src/lib/models/portfolio-snapshot.ts b/libs/common/src/lib/models/portfolio-snapshot.ts index 46bd5c18f..d0c4c66e0 100644 --- a/libs/common/src/lib/models/portfolio-snapshot.ts +++ b/libs/common/src/lib/models/portfolio-snapshot.ts @@ -9,6 +9,8 @@ import { Big } from 'big.js'; import { Transform, Type } from 'class-transformer'; export class PortfolioSnapshot { + activitiesCount: number; + @Transform(transformToBig, { toClassOnly: true }) @Type(() => Big) currentValueInBaseCurrency: Big; From 8f165d46e03e81d70abc62c625542823b6d60db1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 25 Feb 2025 19:48:22 +0100 Subject: [PATCH 095/164] Feature/add cusip to asset profile model (#4347) * Add CUSIP * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/import/import.service.ts | 2 ++ .../migration.sql | 5 +++++ prisma/migrations/migration_lock.toml | 2 +- prisma/schema.prisma | 2 ++ 5 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 prisma/migrations/20250222084717_added_cusip_to_symbol_profile/migration.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index ecbcdc820..b4d6f0a74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Extended the export functionality by the tags - Extended the portfolio snapshot in the portfolio calculator by the activities count - Extended the user endpoint `GET api/v1/user` by the activities count +- Added `cusip` to the asset profile model ### Changed diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index eb1b841c4..698d13e2b 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -293,6 +293,7 @@ export class ImportService { assetSubClass, countries, createdAt, + cusip, dataSource, figi, figiComposite, @@ -367,6 +368,7 @@ export class ImportService { assetSubClass, countries, createdAt, + cusip, dataSource, figi, figiComposite, diff --git a/prisma/migrations/20250222084717_added_cusip_to_symbol_profile/migration.sql b/prisma/migrations/20250222084717_added_cusip_to_symbol_profile/migration.sql new file mode 100644 index 000000000..b60cebef6 --- /dev/null +++ b/prisma/migrations/20250222084717_added_cusip_to_symbol_profile/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "SymbolProfile" ADD COLUMN "cusip" TEXT; + +-- CreateIndex +CREATE INDEX "SymbolProfile_cusip_idx" ON "SymbolProfile"("cusip"); diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml index fbffa92c2..648c57fd5 100644 --- a/prisma/migrations/migration_lock.toml +++ b/prisma/migrations/migration_lock.toml @@ -1,3 +1,3 @@ # Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) +# It should be added in your version-control system (e.g., Git) provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index af9acebaf..371a3fcd8 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -174,6 +174,7 @@ model SymbolProfile { countries Json? createdAt DateTime @default(now()) currency String + cusip String? dataSource DataSource figi String? figiComposite String? @@ -196,6 +197,7 @@ model SymbolProfile { @@unique([dataSource, symbol]) @@index([assetClass]) @@index([currency]) + @@index([cusip]) @@index([dataSource]) @@index([isin]) @@index([name]) From c25b45a2b884d69420dc21648fd827cac3db27fd Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 25 Feb 2025 19:51:14 +0100 Subject: [PATCH 096/164] Release 2.141.0 (#4361) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4d6f0a74..13f33d485 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.141.0 - 2025-02-25 ### Added diff --git a/package-lock.json b/package-lock.json index 0fd7572e7..47bd15e2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.140.0", + "version": "2.141.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.140.0", + "version": "2.141.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 2a3881183..1921d650e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.140.0", + "version": "2.141.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 0349e17a8ef31b475386dcb14b36deaa7ee46407 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 26 Feb 2025 08:03:26 +0100 Subject: [PATCH 097/164] Feature/add security policy (#4363) * Add security policy --- SECURITY.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..528fecd44 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,13 @@ +# Security Policy + +## Reporting Security Issues + +If you discover a security vulnerability in this repository, please report it to security[at]ghostfol.io. We will acknowledge your report and provide guidance on the next steps. + +To help us resolve the issue, please include the following details: + +- A description of the vulnerability +- Steps to reproduce the vulnerability +- Affected versions of the software + +We appreciate your responsible disclosure and will work to address the issue promptly. From 168a6795359996b88fe56dddbf87f37a292689ec Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 27 Feb 2025 20:26:51 +0100 Subject: [PATCH 098/164] Feature/extend trackinsight data enhancer by cusip (#4362) * Extend Trackinsight data enhancer by cusip * Update changelog --- CHANGELOG.md | 6 ++++++ .../data-enhancer/trackinsight/trackinsight.service.ts | 8 +++++++- .../queues/data-gathering/data-gathering.service.ts | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13f33d485..f3076d972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +- Extended the _Trackinsight_ data enhancer for asset profile data by `cusip` + ## 2.141.0 - 2025-02-25 ### Added diff --git a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts index 2b8eaf2e9..32b494085 100644 --- a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts @@ -71,7 +71,13 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { return {}; }); - const isin = profile?.isin?.split(';')?.[0]; + const cusip = profile?.cusip; + + if (cusip) { + response.cusip = cusip; + } + + const isin = profile?.isins?.[0]; if (isin) { response.isin = isin; diff --git a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts index b79b2a098..b3e7de0b3 100644 --- a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts +++ b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts @@ -200,6 +200,7 @@ export class DataGatheringService { assetSubClass, countries, currency, + cusip, dataSource, figi, figiComposite, @@ -218,6 +219,7 @@ export class DataGatheringService { assetSubClass, countries, currency, + cusip, dataSource, figi, figiComposite, @@ -234,6 +236,7 @@ export class DataGatheringService { assetSubClass, countries, currency, + cusip, figi, figiComposite, figiShareClass, From 622393a7cf99366e98b6c91d9a4854bcbc12a4d2 Mon Sep 17 00:00:00 2001 From: Shaunak Das <51281688+shaun-ak@users.noreply.github.com> Date: Fri, 28 Feb 2025 01:21:41 +0530 Subject: [PATCH 099/164] Feature/add Storybook to build process (#4340) * Add Storybook to build process * Update changelog --- CHANGELOG.md | 1 + libs/ui/project.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3076d972..87b99b790 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Extended the _Trackinsight_ data enhancer for asset profile data by `cusip` +- Added _Storybook_ to the build process ## 2.141.0 - 2025-02-25 diff --git a/libs/ui/project.json b/libs/ui/project.json index 1b3f0e4e7..4c8e6c125 100644 --- a/libs/ui/project.json +++ b/libs/ui/project.json @@ -41,7 +41,7 @@ "executor": "@storybook/angular:build-storybook", "outputs": ["{options.outputDir}"], "options": { - "outputDir": "dist/storybook/ui", + "outputDir": "dist/apps/client/development/storybook", "configDir": "libs/ui/.storybook", "browserTarget": "ui:build-storybook", "compodoc": false, @@ -61,7 +61,7 @@ "executor": "@nx/web:file-server", "options": { "buildTarget": "ui:build-storybook", - "staticFilePath": "dist/storybook/ui" + "staticFilePath": "dist/storybook" }, "configurations": { "ci": { diff --git a/package.json b/package.json index 1921d650e..213de6842 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "affected:test": "nx affected:test", "analyze:client": "nx run client:build:production --stats-json && webpack-bundle-analyzer -p 1234 dist/apps/client/en/stats.json", "angular": "node --max_old_space_size=32768 ./node_modules/@angular/cli/bin/ng", - "build:production": "nx run api:copy-assets && nx run api:build:production && nx run client:copy-assets && nx run client:build:production && npm run replace-placeholders-in-build", + "build:production": "nx run api:copy-assets && nx run api:build:production && nx run client:copy-assets && nx run client:build:production && nx run ui:build-storybook && npm run replace-placeholders-in-build", "build:storybook": "nx run ui:build-storybook", "database:format-schema": "prisma format", "database:generate-typings": "prisma generate", From 2f35f7225fa70f917726f51e3101abc5745c38b4 Mon Sep 17 00:00:00 2001 From: Sayed Murtadha Ahmed Date: Thu, 27 Feb 2025 22:59:12 +0300 Subject: [PATCH 100/164] Feature/extend export by platforms (#4360) * Extend export by platforms * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/export/export.service.ts | 26 ++++++++++++++++++- .../src/lib/interfaces/export.interface.ts | 3 ++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87b99b790..2d57e73d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Extended the export functionality by the platforms - Extended the _Trackinsight_ data enhancer for asset profile data by `cusip` - Added _Storybook_ to the build process diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 219ffffda..8d7585c01 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -5,6 +5,7 @@ import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { Filter, Export } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; +import { Platform } from '@prisma/client'; @Injectable() export class ExportService { @@ -25,15 +26,37 @@ export class ExportService { userCurrency: string; userId: string; }): Promise { + const platforms: Platform[] = []; + const accounts = ( await this.accountService.accounts({ + include: { + Platform: true + }, orderBy: { name: 'asc' }, where: { userId } }) ).map( - ({ balance, comment, currency, id, isExcluded, name, platformId }) => { + ({ + balance, + comment, + currency, + id, + isExcluded, + name, + platformId, + Platform: platform + }) => { + if ( + !platforms.some(({ id: currentPlatformId }) => { + return currentPlatformId === platform.id; + }) + ) { + platforms.push(platform); + } + return { balance, comment, @@ -76,6 +99,7 @@ export class ExportService { return { meta: { date: new Date().toISOString(), version: environment.version }, accounts, + platforms, tags, activities: activities.map( ({ diff --git a/libs/common/src/lib/interfaces/export.interface.ts b/libs/common/src/lib/interfaces/export.interface.ts index 1257e50bc..14a017428 100644 --- a/libs/common/src/lib/interfaces/export.interface.ts +++ b/libs/common/src/lib/interfaces/export.interface.ts @@ -1,4 +1,4 @@ -import { Account, Order, Tag } from '@prisma/client'; +import { Account, Order, Platform, Tag } from '@prisma/client'; export interface Export { accounts: Omit[]; @@ -16,6 +16,7 @@ export interface Export { date: string; version: string; }; + platforms: Platform[]; tags: Omit[]; user: { settings: { currency: string } }; } From 2e6a1266861af84c5db4c3a27ff414a501acddd5 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 28 Feb 2025 20:58:50 +0100 Subject: [PATCH 101/164] Feature/upgrade eslint dependencies 20250119 (#4221) * Upgrade eslint dependencies * Update changelog --- CHANGELOG.md | 4 ++++ package-lock.json | 46 +++++++++++++++------------------------------- package.json | 4 ++-- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d57e73d3..89057aec9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Extended the _Trackinsight_ data enhancer for asset profile data by `cusip` - Added _Storybook_ to the build process +### Changed + +- Upgraded `eslint` dependencies + ## 2.141.0 - 2025-02-25 ### Added diff --git a/package-lock.json b/package-lock.json index 47bd15e2d..af3405261 100644 --- a/package-lock.json +++ b/package-lock.json @@ -141,9 +141,9 @@ "cypress": "6.2.1", "eslint": "9.18.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-cypress": "3.2.0", + "eslint-plugin-cypress": "4.1.0", "eslint-plugin-import": "2.31.0", - "eslint-plugin-storybook": "0.10.2", + "eslint-plugin-storybook": "0.11.2", "husky": "9.1.7", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", @@ -17087,42 +17087,26 @@ "license": "MIT" }, "node_modules/eslint-plugin-cypress": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.2.0.tgz", - "integrity": "sha512-HaxMz6BoU4ay+K4WrG9ZJC1NdX06FqSlAwtRDStjM0ORFT7zCNPNuRJ+kUPc17Rt2AMUBSqeD9L0zTR3uZhPpw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-4.1.0.tgz", + "integrity": "sha512-JhqkMY02mw74USwK9OFhectx3YSj6Co1NgWBxlGdKvlqiAp9vdEuQqt33DKGQFvvGS/NWtduuhWXWNnU29xDSg==", "dev": true, "license": "MIT", "dependencies": { - "globals": "^13.20.0" + "globals": "^15.11.0" }, "peerDependencies": { - "eslint": ">=7" + "eslint": ">=9" } }, "node_modules/eslint-plugin-cypress/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-cypress/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -17216,9 +17200,9 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.10.2.tgz", - "integrity": "sha512-iOrFJfyLgRLIbWDLbbs3J4yrknvIB+uiZ8KGqGOEXTL7/BGuBMZLiIU9Q4Pm/VYJrHN4JqmMtwCSrAemHL2nFg==", + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.2.tgz", + "integrity": "sha512-0Z4DUklJrC+GHjCRXa7PYfPzWC15DaVnwaOYenpgXiCEijXPZkLKCms+rHhtoRcWccP7Z8DpOOaP1gc3P9oOwg==", "dev": true, "license": "MIT", "dependencies": { @@ -17230,7 +17214,7 @@ "node": ">= 18" }, "peerDependencies": { - "eslint": ">=6" + "eslint": ">=8" } }, "node_modules/eslint-scope": { diff --git a/package.json b/package.json index 213de6842..b4caa88a6 100644 --- a/package.json +++ b/package.json @@ -187,9 +187,9 @@ "cypress": "6.2.1", "eslint": "9.18.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-cypress": "3.2.0", + "eslint-plugin-cypress": "4.1.0", "eslint-plugin-import": "2.31.0", - "eslint-plugin-storybook": "0.10.2", + "eslint-plugin-storybook": "0.11.2", "husky": "9.1.7", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", From 035306d4d8e83b64153970e48b6046af7bed5d7d Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Fri, 28 Feb 2025 21:00:02 +0100 Subject: [PATCH 102/164] Feature/add createdAt to snapshot and public portfolio endpoint response (#4350) * Add createdAt to snapshot and public portfolio endpoint response * Update changelog --------- Co-authored-by: Verbindolai Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/api/src/app/endpoints/public/public.controller.ts | 3 ++- apps/api/src/app/portfolio/calculator/portfolio-calculator.ts | 1 + .../src/app/portfolio/calculator/twr/portfolio-calculator.ts | 1 + apps/api/src/app/portfolio/portfolio.controller.ts | 2 ++ apps/api/src/app/portfolio/portfolio.service.ts | 3 ++- .../pages/portfolio/allocations/allocations-page.component.ts | 1 + libs/common/src/lib/interfaces/portfolio-details.interface.ts | 1 + .../responses/public-portfolio-response.interface.ts | 1 + libs/common/src/lib/models/portfolio-snapshot.ts | 2 ++ 10 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89057aec9..7124caf62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Extended the export functionality by the platforms +- Extended the portfolio snapshot in the portfolio calculator by the `createdAt` timestamp - Extended the _Trackinsight_ data enhancer for asset profile data by `cusip` - Added _Storybook_ to the build process diff --git a/apps/api/src/app/endpoints/public/public.controller.ts b/apps/api/src/app/endpoints/public/public.controller.ts index 7488e4201..bdcd86afb 100644 --- a/apps/api/src/app/endpoints/public/public.controller.ts +++ b/apps/api/src/app/endpoints/public/public.controller.ts @@ -57,7 +57,7 @@ export class PublicController { } const [ - { holdings, markets }, + { createdAt, holdings, markets }, { performance: performance1d }, { performance: performanceMax }, { performance: performanceYtd } @@ -81,6 +81,7 @@ export class PublicController { }); const publicPortfolioResponse: PublicPortfolioResponse = { + createdAt, hasDetails, markets, alias: access.alias, diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index e9c4fdcce..54d80a955 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -176,6 +176,7 @@ export abstract class PortfolioCalculator { if (!transactionPoints.length) { return { activitiesCount: 0, + createdAt: new Date(), currentValueInBaseCurrency: new Big(0), errors: [], hasErrors: false, diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts index 209a0efd5..059b85441 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts @@ -104,6 +104,7 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { activitiesCount: this.activities.filter(({ type }) => { return ['BUY', 'SELL'].includes(type); }).length, + createdAt: new Date(), errors: [], historicalData: [], totalLiabilitiesWithCurrencyEffect: new Big(0), diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 797d0449a..c3e46d50d 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -105,6 +105,7 @@ export class PortfolioController { const { accounts, + createdAt, hasErrors, holdings, markets, @@ -233,6 +234,7 @@ export class PortfolioController { return { accounts, + createdAt, hasError, holdings, platforms, diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 811c59f9d..d4dc42d91 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -376,7 +376,7 @@ export class PortfolioService { currency: userCurrency }); - const { currentValueInBaseCurrency, hasErrors, positions } = + const { createdAt, currentValueInBaseCurrency, hasErrors, positions } = await portfolioCalculator.getSnapshot(); const cashDetails = await this.accountService.getCashDetails({ @@ -617,6 +617,7 @@ export class PortfolioService { return { accounts, + createdAt, hasErrors, holdings, markets, diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts index 41961edd3..54ea88548 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts @@ -260,6 +260,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit { this.platforms = {}; this.portfolioDetails = { accounts: {}, + createdAt: undefined, holdings: {}, platforms: {}, summary: undefined diff --git a/libs/common/src/lib/interfaces/portfolio-details.interface.ts b/libs/common/src/lib/interfaces/portfolio-details.interface.ts index e455f73ca..746736f6b 100644 --- a/libs/common/src/lib/interfaces/portfolio-details.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-details.interface.ts @@ -14,6 +14,7 @@ export interface PortfolioDetails { valueInPercentage?: number; }; }; + createdAt: Date; holdings: { [symbol: string]: PortfolioPosition }; markets?: { [key in Market]: { diff --git a/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts b/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts index dc6e57587..7a98e3c8d 100644 --- a/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts @@ -32,6 +32,7 @@ export interface PublicPortfolioResponse extends PublicPortfolioResponseV1 { } interface PublicPortfolioResponseV1 { + createdAt: Date; performance: { '1d': { relativeChange: number; diff --git a/libs/common/src/lib/models/portfolio-snapshot.ts b/libs/common/src/lib/models/portfolio-snapshot.ts index d0c4c66e0..e30585b82 100644 --- a/libs/common/src/lib/models/portfolio-snapshot.ts +++ b/libs/common/src/lib/models/portfolio-snapshot.ts @@ -11,6 +11,8 @@ import { Transform, Type } from 'class-transformer'; export class PortfolioSnapshot { activitiesCount: number; + createdAt: Date; + @Transform(transformToBig, { toClassOnly: true }) @Type(() => Big) currentValueInBaseCurrency: Big; From b3954b047faa67fbffd0b845def00b1caf9a4461 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 28 Feb 2025 21:02:20 +0100 Subject: [PATCH 103/164] Release 2.142.0 (#4373) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7124caf62..0dca2be52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.142.0 - 2025-02-28 ### Added diff --git a/package-lock.json b/package-lock.json index af3405261..601c8f42a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.141.0", + "version": "2.142.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.141.0", + "version": "2.142.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index b4caa88a6..d49ce5037 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.141.0", + "version": "2.142.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From a8d124846116b0d261eddaca9e9a7b0756666720 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 1 Mar 2025 13:14:39 +0100 Subject: [PATCH 104/164] Feature/improve symbol lookup in Trackinsight service (#4377) * Improve symbol lookup for EXCHANGE:SYMBOL pattern * Update changelog --- CHANGELOG.md | 6 ++++++ .../data-enhancer/trackinsight/trackinsight.service.ts | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0dca2be52..a0610a839 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Improved the symbol lookup in the _Trackinsight_ data enhancer for asset profile data + ## 2.142.0 - 2025-02-28 ### Added diff --git a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts index 32b494085..8b885c013 100644 --- a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts @@ -192,7 +192,10 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { .then((jsonRes) => { if ( jsonRes['results']?.['count'] === 1 || - jsonRes['results']?.['docs']?.[0]?.['ticker'] === symbol + // Allow exact match + jsonRes['results']?.['docs']?.[0]?.['ticker'] === symbol || + // Allow EXCHANGE:SYMBOL + jsonRes['results']?.['docs']?.[0]?.['ticker']?.endsWith(`:${symbol}`) ) { return jsonRes['results']['docs'][0]['ticker']; } From 6cdcf9622e79102c95702850872df5596d366f8d Mon Sep 17 00:00:00 2001 From: Matt Fiddaman Date: Sat, 1 Mar 2025 14:16:21 +0000 Subject: [PATCH 105/164] Bugfix/handle exception in benchmark service related to unnamed asset profiles (#4355) * Handle exception in benchmark service related to unnamed asset profiles * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/services/benchmark/benchmark.service.ts | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0610a839..c518d92f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the symbol lookup in the _Trackinsight_ data enhancer for asset profile data +### Fixed + +- Handled an exception in the benchmark service related to unnamed asset profiles + ## 2.142.0 - 2025-02-28 ### Added diff --git a/apps/api/src/services/benchmark/benchmark.service.ts b/apps/api/src/services/benchmark/benchmark.service.ts index 57105da71..95cb9e5d2 100644 --- a/apps/api/src/services/benchmark/benchmark.service.ts +++ b/apps/api/src/services/benchmark/benchmark.service.ts @@ -133,7 +133,9 @@ export class BenchmarkService { symbol }; }) - .sort((a, b) => a.name.localeCompare(b.name)); + .sort((a, b) => { + return a.name?.localeCompare(b?.name) ?? 0; + }); } public async addBenchmark({ From 8f4f29571bc71eadac8eb1599de35270e9c2c4f4 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 2 Mar 2025 09:10:51 +0100 Subject: [PATCH 106/164] Bugfix/fix export functionality of platforms (#4379) * Fix export functionality of platforms * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/export/export.service.ts | 16 ++++++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c518d92f0..e1adcd3ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Handled an exception in the export functionality related to platforms - Handled an exception in the benchmark service related to unnamed asset profiles ## 2.142.0 - 2025-02-28 diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 8d7585c01..c6c24d6af 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -26,7 +26,7 @@ export class ExportService { userCurrency: string; userId: string; }): Promise { - const platforms: Platform[] = []; + const platformsMap: { [platformId: string]: Platform } = {}; const accounts = ( await this.accountService.accounts({ @@ -46,15 +46,11 @@ export class ExportService { id, isExcluded, name, - platformId, - Platform: platform + Platform: platform, + platformId }) => { - if ( - !platforms.some(({ id: currentPlatformId }) => { - return currentPlatformId === platform.id; - }) - ) { - platforms.push(platform); + if (platformId) { + platformsMap[platformId] = platform; } return { @@ -99,7 +95,7 @@ export class ExportService { return { meta: { date: new Date().toISOString(), version: environment.version }, accounts, - platforms, + platforms: Object.values(platformsMap), tags, activities: activities.map( ({ From 8b353fbf66aed77eef2c96c4660b0c0477fc14fa Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 2 Mar 2025 17:01:36 +0100 Subject: [PATCH 107/164] Feature/introduce Promise.all() in getPerformance() of portfolio service (#4381) * Introduce Promise.all() * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/portfolio/portfolio.service.ts | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1adcd3ba..292232754 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Optimized the asynchronous operations using `Promise.all()` in the portfolio service (`getPerformance`) - Improved the symbol lookup in the _Trackinsight_ data enhancer for asset profile data ### Fixed diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index d4dc42d91..ce03c8024 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1081,19 +1081,18 @@ export class PortfolioService { const user = await this.userService.user({ id: userId }); const userCurrency = this.getUserCurrency(user); - const accountBalanceItems = - await this.accountBalanceService.getAccountBalanceItems({ + const [accountBalanceItems, { activities }] = await Promise.all([ + this.accountBalanceService.getAccountBalanceItems({ filters, userId, userCurrency - }); - - const { activities } = - await this.orderService.getOrdersForPortfolioCalculator({ + }), + this.orderService.getOrdersForPortfolioCalculator({ filters, userCurrency, userId - }); + }) + ]); if (accountBalanceItems.length === 0 && activities.length === 0) { return { From 51f0ecbfc10828da62af68d9091719570fa0632a Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 2 Mar 2025 17:03:11 +0100 Subject: [PATCH 108/164] Feature/add LinkedIn page to about page and footer (#4378) * Add LinkedIn page * Update changelog --- CHANGELOG.md | 5 +++++ apps/client/src/app/app.component.html | 9 +++++++++ .../about/overview/about-overview-page.html | 20 +++++++++++++------ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 292232754..a8d30ab33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added the Ghostfolio _LinkedIn_ page to the about page +- Added the Ghostfolio _LinkedIn_ page to the footer + ### Changed - Optimized the asynchronous operations using `Promise.all()` in the portfolio service (`getPerformance`) diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index c6734d1b4..ab188dfcb 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -129,6 +129,15 @@ >GitHub +
  • + LinkedIn +
  • .

    + + + - + - +

    @if (hasPermissionForSubscription) { From 5fa7b7a2312d4697bf98c046425f4da80025e37c Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Mon, 3 Mar 2025 00:19:42 +0800 Subject: [PATCH 109/164] Task/upgrade to color version 5.0 (#4383) * chore(deps): bump color from 4.2.3 to 5.0.0 * chore(deps-dev): remove @types/color * feat(ui): change color imports * Update changelog --------- Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../fire-calculator.component.ts | 2 +- .../portfolio-proportion-chart.component.ts | 2 +- package-lock.json | 99 +++++++++---------- package.json | 3 +- 5 files changed, 48 insertions(+), 59 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8d30ab33..859304338 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Optimized the asynchronous operations using `Promise.all()` in the portfolio service (`getPerformance`) - Improved the symbol lookup in the _Trackinsight_ data enhancer for asset profile data +- Upgraded `color` from version `4.2.3` to `5.0.0` ### Fixed diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts index f8ce3dd50..64fbe1b74 100644 --- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts +++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -41,7 +41,7 @@ import { Tooltip } from 'chart.js'; import 'chartjs-adapter-date-fns'; -import * as Color from 'color'; +import Color from 'color'; import { add, addYears, diff --git a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts index 6319c3cd7..cc3c40d32 100644 --- a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts +++ b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -29,7 +29,7 @@ import { ArcElement } from 'chart.js'; import { DoughnutController } from 'chart.js'; import { Chart } from 'chart.js'; import ChartDataLabels from 'chartjs-plugin-datalabels'; -import * as Color from 'color'; +import Color from 'color'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; const { diff --git a/package-lock.json b/package-lock.json index 601c8f42a..c4392b359 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,7 +58,7 @@ "cheerio": "1.0.0", "class-transformer": "0.5.1", "class-validator": "0.14.1", - "color": "4.2.3", + "color": "5.0.0", "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", "countup.js": "2.8.0", @@ -128,7 +128,6 @@ "@trivago/prettier-plugin-sort-imports": "5.2.2", "@types/big.js": "6.2.2", "@types/cache-manager": "4.0.6", - "@types/color": "4.2.0", "@types/google-spreadsheet": "3.1.5", "@types/jest": "29.5.13", "@types/lodash": "4.17.7", @@ -10705,33 +10704,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@types/color/-/color-4.2.0.tgz", - "integrity": "sha512-6+xrIRImMtGAL2X3qYkd02Mgs+gFGs+WsK0b7VVMaO4mYRISwyTjcqNrO0mNSmYEoq++rSLDB2F5HDNmqfOe+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/color-convert": "*" - } - }, - "node_modules/@types/color-convert": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.4.tgz", - "integrity": "sha512-Ub1MmDdyZ7mX//g25uBAoH/mWGd9swVbt8BseymnaE18SU4po/PjmCrHxqIIRjBo3hV/vh1KGr0eMxUhp+t+dQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/color-name": "^1.1.0" - } - }, - "node_modules/@types/color-name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.5.tgz", - "integrity": "sha512-j2K5UJqGTxeesj6oQuGpMgifpT5k9HprgQd8D1Y0lOFqKHl3PJu5GMeS4Y5EgjS55AE6OQxf8mPED9uaGbf4Cg==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -14304,16 +14276,16 @@ "license": "MIT" }, "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.0.tgz", + "integrity": "sha512-16BlyiuyLq3MLxpRWyOTiWsO3ii/eLQLJUQXBSNcxMBBSnyt1ee9YUdaozQp03ifwm5woztEZGDbk9RGVuCsdw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" + "color-convert": "^3.0.1", + "color-string": "^2.0.0" }, "engines": { - "node": ">=12.5.0" + "node": ">=18" } }, "node_modules/color-convert": { @@ -14335,13 +14307,45 @@ "license": "MIT" }, "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.0.1.tgz", + "integrity": "sha512-5z9FbYTZPAo8iKsNEqRNv+OlpBbDcoE+SY9GjLfDUHEfcNNV7tS9eSAlFHEaub/r5tBL9LtskAeq1l9SaoZ5tQ==", + "license": "MIT", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-string/node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.0.1.tgz", + "integrity": "sha512-5kQah2eolfQV7HCrxtsBBArPfT5dwaKYMCXeMQsdRO7ihTO/cuNLGjd50ITCDn+ZU/YbS0Go64SjP9154eopxg==", "license": "MIT", "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "license": "MIT", + "engines": { + "node": ">=12.20" } }, "node_modules/colord": { @@ -28927,21 +28931,6 @@ "integrity": "sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==", "license": "ISC" }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", diff --git a/package.json b/package.json index d49ce5037..144258f26 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "cheerio": "1.0.0", "class-transformer": "0.5.1", "class-validator": "0.14.1", - "color": "4.2.3", + "color": "5.0.0", "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", "countup.js": "2.8.0", @@ -174,7 +174,6 @@ "@trivago/prettier-plugin-sort-imports": "5.2.2", "@types/big.js": "6.2.2", "@types/cache-manager": "4.0.6", - "@types/color": "4.2.0", "@types/google-spreadsheet": "3.1.5", "@types/jest": "29.5.13", "@types/lodash": "4.17.7", From 7def72581557f2fe80dd33837a8d941150b7d67a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 17:23:29 +0100 Subject: [PATCH 110/164] Update locales (#4384) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 4 ++-- apps/client/src/locales/messages.de.xlf | 4 ++-- apps/client/src/locales/messages.es.xlf | 4 ++-- apps/client/src/locales/messages.fr.xlf | 4 ++-- apps/client/src/locales/messages.it.xlf | 4 ++-- apps/client/src/locales/messages.nl.xlf | 4 ++-- apps/client/src/locales/messages.pl.xlf | 4 ++-- apps/client/src/locales/messages.pt.xlf | 4 ++-- apps/client/src/locales/messages.tr.xlf | 4 ++-- apps/client/src/locales/messages.uk.xlf | 4 ++-- apps/client/src/locales/messages.xlf | 4 ++-- apps/client/src/locales/messages.zh.xlf | 4 ++-- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index a36fb152f..d5356fe0f 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -250,7 +250,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 @@ -358,7 +358,7 @@ El risc d’assumir pèrdues en les inversions és substancial. No és recomanable invertir diners que pugui necessitar a curt termini. apps/client/src/app/app.component.html - 205 + 214 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 3983ca586..1907bbc3a 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -22,7 +22,7 @@ Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst. apps/client/src/app/app.component.html - 205 + 214 @@ -4162,7 +4162,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index e41708851..98690ec76 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -23,7 +23,7 @@ El riesgo de pérdida en trading puede ser sustancial. No es aconsejable invertir dinero que puedas necesitar a corto plazo. apps/client/src/app/app.component.html - 205 + 214 @@ -4163,7 +4163,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index aa0dd2891..840aa3cb1 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -6,7 +6,7 @@ Le risque de perte en investissant peut être important. Il est déconseillé d’investir de l’argent dont vous pourriez avoir besoin à court terme. apps/client/src/app/app.component.html - 205 + 214 @@ -4162,7 +4162,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index a17749690..f558f7c3e 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -23,7 +23,7 @@ Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine. apps/client/src/app/app.component.html - 205 + 214 @@ -4163,7 +4163,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index d8609b1b5..f3850ee9a 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -22,7 +22,7 @@ Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft. apps/client/src/app/app.component.html - 205 + 214 @@ -4162,7 +4162,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index c53b6177f..2e3596f2c 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -667,7 +667,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 @@ -775,7 +775,7 @@ Ryzyko strat na rynku może być znaczne. Nie jest zalecane inwestowanie pieniędzy, które mogą być potrzebne w krótkim okresie. apps/client/src/app/app.component.html - 205 + 214 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index e2a79168a..751426dbf 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6,7 +6,7 @@ O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo. apps/client/src/app/app.component.html - 205 + 214 @@ -4162,7 +4162,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 35415106f..b0f601282 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -643,7 +643,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 @@ -751,7 +751,7 @@ Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. apps/client/src/app/app.component.html - 205 + 214 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index e013a621a..3803fb73a 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -250,7 +250,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 @@ -358,7 +358,7 @@ Ризик втрат у торгівлі може бути суттєвим. Не рекомендується інвестувати гроші, які можуть знадобитися в короткостроковій перспективі. apps/client/src/app/app.component.html - 205 + 214 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 7d93b392f..2c540010f 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -649,7 +649,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 @@ -752,7 +752,7 @@ The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. apps/client/src/app/app.component.html - 205 + 214 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 10fc585a8..4b03c7783 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -668,7 +668,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + 154 @@ -776,7 +776,7 @@ 交易损失的风险可能很大。不建议将短期内可能需要的资金进行投资。 apps/client/src/app/app.component.html - 205 + 214 From 3b68400a23233c7ed649055b344754da91070b00 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 2 Mar 2025 17:26:16 +0100 Subject: [PATCH 111/164] Feature/upgrade prisma to version 6.4.1 (#4380) * Upgrade prisma to version 6.4.1 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 70 ++++++++++++++++++++++++----------------------- package.json | 4 +-- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 859304338..878ba40e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Optimized the asynchronous operations using `Promise.all()` in the portfolio service (`getPerformance`) - Improved the symbol lookup in the _Trackinsight_ data enhancer for asset profile data - Upgraded `color` from version `4.2.3` to `5.0.0` +- Upgraded `prisma` from version `6.3.0` to `6.4.1` ### Fixed diff --git a/package-lock.json b/package-lock.json index c4392b359..af8467d7e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "@nestjs/platform-express": "10.4.15", "@nestjs/schedule": "4.1.2", "@nestjs/serve-static": "4.0.2", - "@prisma/client": "6.3.0", + "@prisma/client": "6.4.1", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", "@stripe/stripe-js": "5.4.0", @@ -150,7 +150,7 @@ "nx": "20.3.2", "prettier": "3.5.1", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.3.0", + "prisma": "6.4.1", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", @@ -8846,9 +8846,9 @@ "license": "MIT" }, "node_modules/@prisma/client": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.3.0.tgz", - "integrity": "sha512-BY3Fi28PUSk447Bpv22LhZp4HgNPo7NsEN+EteM1CLDnLjig5863jpW+3c3HHLFmml+nB/eJv1CjSriFZ8z7Cg==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.4.1.tgz", + "integrity": "sha512-A7Mwx44+GVZVexT5e2GF/WcKkEkNNKbgr059xpr5mn+oUm2ZW1svhe+0TRNBwCdzhfIZ+q23jEgsNPvKD9u+6g==", "hasInstallScript": true, "license": "Apache-2.0", "engines": { @@ -8868,53 +8868,53 @@ } }, "node_modules/@prisma/debug": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.3.0.tgz", - "integrity": "sha512-m1lQv//0Rc5RG8TBpNUuLCxC35Ghi5XfpPmL83Gh04/GICHD2J5H2ndMlaljrUNaQDF9dOxIuFAYP1rE9wkXkg==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.4.1.tgz", + "integrity": "sha512-Q9xk6yjEGIThjSD8zZegxd5tBRNHYd13GOIG0nLsanbTXATiPXCLyvlYEfvbR2ft6dlRsziQXfQGxAgv7zcMUA==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.3.0.tgz", - "integrity": "sha512-RXqYhlZb9sx/xkUfYIZuEPn7sT0WgTxNOuEYQ7AGw3IMpP9QGVEDVsluc/GcNkM8NTJszeqk8AplJzI9lm7Jxw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.4.1.tgz", + "integrity": "sha512-KldENzMHtKYwsOSLThghOIdXOBEsfDuGSrxAZjMnimBiDKd3AE4JQ+Kv+gBD/x77WoV9xIPf25GXMWffXZ17BA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.3.0", - "@prisma/engines-version": "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0", - "@prisma/fetch-engine": "6.3.0", - "@prisma/get-platform": "6.3.0" + "@prisma/debug": "6.4.1", + "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", + "@prisma/fetch-engine": "6.4.1", + "@prisma/get-platform": "6.4.1" } }, "node_modules/@prisma/engines-version": { - "version": "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0.tgz", - "integrity": "sha512-R/ZcMuaWZT2UBmgX3Ko6PAV3f8//ZzsjRIG1eKqp3f2rqEqVtCv+mtzuH2rBPUC9ujJ5kCb9wwpxeyCkLcHVyA==", + "version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d.tgz", + "integrity": "sha512-Xq54qw55vaCGrGgIJqyDwOq0TtjZPJEWsbQAHugk99hpDf2jcEeQhUcF+yzEsSqegBaDNLA4IC8Nn34sXmkiTQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.3.0.tgz", - "integrity": "sha512-GBy0iT4f1mH31ePzfcpVSUa7JLRTeq4914FG2vR3LqDwRweSm4ja1o5flGDz+eVIa/BNYfkBvRRxv4D6ve6Eew==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.4.1.tgz", + "integrity": "sha512-uZ5hVeTmDspx7KcaRCNoXmcReOD+84nwlO2oFvQPRQh9xiFYnnUKDz7l9bLxp8t4+25CsaNlgrgilXKSQwrIGQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.3.0", - "@prisma/engines-version": "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0", - "@prisma/get-platform": "6.3.0" + "@prisma/debug": "6.4.1", + "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", + "@prisma/get-platform": "6.4.1" } }, "node_modules/@prisma/get-platform": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.3.0.tgz", - "integrity": "sha512-V8zZ1d0xfyi6FjpNP4AcYuwSpGcdmu35OXWnTPm8IW594PYALzKXHwIa9+o0f+Lo9AecFWrwrwaoYe56UNfTtQ==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.4.1.tgz", + "integrity": "sha512-gXqZaDI5scDkBF8oza7fOD3Q3QMD0e0rBynlzDDZdTWbWmzjuW58PRZtj+jkvKje2+ZigCWkH8SsWZAsH6q1Yw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.3.0" + "@prisma/debug": "6.4.1" } }, "node_modules/@redis/bloom": { @@ -16805,7 +16805,7 @@ "version": "0.24.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -16846,7 +16846,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "debug": "^4.3.4" @@ -27173,14 +27173,16 @@ } }, "node_modules/prisma": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.3.0.tgz", - "integrity": "sha512-y+Zh3Qg+xGCWyyrNUUNaFW/OltaV/yXYuTa0WRgYkz5LGyifmAsgpv94I47+qGRocZrMGcbF2A/78/oO2zgifA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.4.1.tgz", + "integrity": "sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/engines": "6.3.0" + "@prisma/engines": "6.4.1", + "esbuild": ">=0.12 <1", + "esbuild-register": "3.6.0" }, "bin": { "prisma": "build/index.js" diff --git a/package.json b/package.json index 144258f26..f7d9451db 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@nestjs/platform-express": "10.4.15", "@nestjs/schedule": "4.1.2", "@nestjs/serve-static": "4.0.2", - "@prisma/client": "6.3.0", + "@prisma/client": "6.4.1", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", "@stripe/stripe-js": "5.4.0", @@ -196,7 +196,7 @@ "nx": "20.3.2", "prettier": "3.5.1", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.3.0", + "prisma": "6.4.1", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", From f63d171678be6a107d857c9071f286805d2b59b2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 2 Mar 2025 17:27:45 +0100 Subject: [PATCH 112/164] Feature/improve usability of no activities info (#4382) * Improve usability * Update changelog --- CHANGELOG.md | 2 ++ .../home-holdings/home-holdings.html | 1 - .../home-overview/home-overview.html | 2 +- .../activities/activities-page.component.ts | 30 ++++++++++++++++++- .../portfolio/activities/activities-page.html | 4 ++- .../holdings-table.component.html | 8 ----- .../holdings-table.component.ts | 3 -- 7 files changed, 35 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 878ba40e8..ac3c45915 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Optimized the asynchronous operations using `Promise.all()` in the portfolio service (`getPerformance`) - Improved the symbol lookup in the _Trackinsight_ data enhancer for asset profile data +- Removed the no transactions info component from the holdings table on the home page +- Refactored the show condition of the step by step introduction for new users using the activities count - Upgraded `color` from version `4.2.3` to `5.0.0` - Upgraded `prisma` from version `6.3.0` to `6.4.1` diff --git a/apps/client/src/app/components/home-holdings/home-holdings.html b/apps/client/src/app/components/home-holdings/home-holdings.html index abbc93b3d..f981e50a1 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.html +++ b/apps/client/src/app/components/home-holdings/home-holdings.html @@ -48,7 +48,6 @@ - @if (hasPermissionToCreateOrder && historicalDataItems?.length === 0) { + @if (hasPermissionToCreateOrder && user?.activitiesCount === 0) {

    Welcome to Ghostfolio

    diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts index 91254e002..5f5f7cea9 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts @@ -125,7 +125,10 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { this.dataSource = new MatTableDataSource(activities); this.totalItems = count; - if (this.hasPermissionToCreateActivity && this.totalItems <= 0) { + if ( + this.hasPermissionToCreateActivity && + this.user?.activitiesCount === 0 + ) { this.router.navigate([], { queryParams: { createDialog: true } }); } @@ -160,6 +163,11 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + this.fetchActivities(); }); } @@ -169,6 +177,11 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { .deleteActivity(aId) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + this.fetchActivities(); }); } @@ -230,6 +243,11 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { .afterClosed() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + this.fetchActivities(); }); } @@ -248,6 +266,11 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { .afterClosed() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + this.fetchActivities(); }); } @@ -333,6 +356,11 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { if (transaction) { this.dataService.postOrder(transaction).subscribe({ next: () => { + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + this.fetchActivities(); } }); diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.html b/apps/client/src/app/pages/portfolio/activities/activities-page.html index c06f7dd75..99eb16386 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.html +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -6,7 +6,9 @@ [baseCurrency]="user?.settings?.baseCurrency" [dataSource]="dataSource" [deviceType]="deviceType" - [hasPermissionToCreateActivity]="hasPermissionToCreateActivity" + [hasPermissionToCreateActivity]=" + hasPermissionToCreateActivity && user?.activitiesCount === 0 + " [hasPermissionToDeleteActivity]="hasPermissionToDeleteActivity" [hasPermissionToExportActivities]="!hasImpersonationId" [locale]="user?.settings?.locale" diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.html b/libs/ui/src/lib/holdings-table/holdings-table.component.html index 5e4526fdc..dde103077 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.html +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -198,11 +198,3 @@
    } - -@if ( - dataSource.data.length === 0 && hasPermissionToCreateActivity && !isLoading -) { -
    - -
    -} diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.ts b/libs/ui/src/lib/holdings-table/holdings-table.component.ts index 14382f420..802cdc69a 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.ts +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.ts @@ -5,7 +5,6 @@ import { AssetProfileIdentifier, PortfolioPosition } from '@ghostfolio/common/interfaces'; -import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info'; import { GfValueComponent } from '@ghostfolio/ui/value'; import { CommonModule } from '@angular/common'; @@ -34,7 +33,6 @@ import { Subject, Subscription } from 'rxjs'; imports: [ CommonModule, GfAssetProfileIconComponent, - GfNoTransactionsInfoComponent, GfSymbolModule, GfValueComponent, MatButtonModule, @@ -52,7 +50,6 @@ import { Subject, Subscription } from 'rxjs'; export class GfHoldingsTableComponent implements OnChanges, OnDestroy { @Input() baseCurrency: string; @Input() deviceType: string; - @Input() hasPermissionToCreateActivity: boolean; @Input() hasPermissionToOpenDetails = true; @Input() hasPermissionToShowValues = true; @Input() holdings: PortfolioPosition[]; From f3764f32bbca8f98b85ee71c9a255c1d00258ffb Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 2 Mar 2025 17:32:09 +0100 Subject: [PATCH 113/164] Release 2.143.0 (#4386) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac3c45915..e11471a63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.143.0 - 2025-03-02 ### Added diff --git a/package-lock.json b/package-lock.json index af8467d7e..11e1b6ebd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.142.0", + "version": "2.143.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.142.0", + "version": "2.143.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index f7d9451db..9df5e1172 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.142.0", + "version": "2.143.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 533481fc56affa8ef96ab077b03fbb9e0a7d383d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 18:08:43 +0100 Subject: [PATCH 114/164] Update locales (#4385) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 2 +- apps/client/src/locales/messages.de.xlf | 2 +- apps/client/src/locales/messages.es.xlf | 2 +- apps/client/src/locales/messages.fr.xlf | 2 +- apps/client/src/locales/messages.it.xlf | 2 +- apps/client/src/locales/messages.nl.xlf | 2 +- apps/client/src/locales/messages.pl.xlf | 2 +- apps/client/src/locales/messages.pt.xlf | 2 +- apps/client/src/locales/messages.tr.xlf | 2 +- apps/client/src/locales/messages.uk.xlf | 2 +- apps/client/src/locales/messages.xlf | 2 +- apps/client/src/locales/messages.zh.xlf | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index d5356fe0f..ec0121ab5 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2659,7 +2659,7 @@ Gestionar Activitats apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 1907bbc3a..0bd543de9 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1050,7 +1050,7 @@ Aktivitäten verwalten apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 98690ec76..da0c0fb5c 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1051,7 +1051,7 @@ Gestión de las operaciones apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 840aa3cb1..77224f1c9 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1366,7 +1366,7 @@ Gérer les Activités apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index f558f7c3e..80ca9ced7 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1051,7 +1051,7 @@ Gestione delle attività apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f3850ee9a..8beeae481 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1050,7 +1050,7 @@ Activiteiten beheren apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 2e3596f2c..d2001157e 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2315,7 +2315,7 @@ Zarządzaj Aktywnościami apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 751426dbf..10c72e589 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1238,7 +1238,7 @@ Gerir Atividades apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index b0f601282..ca2c9f99c 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2167,7 +2167,7 @@ İşlemleri Yönet apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 3803fb73a..a6146f4b2 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2787,7 +2787,7 @@ Керування діяльністю apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 2c540010f..cb3bc15b3 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2177,7 +2177,7 @@ Manage Activities apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 4b03c7783..37db811ae 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2324,7 +2324,7 @@ 管理活动 apps/client/src/app/components/home-holdings/home-holdings.html - 63 + 62 From d923e6f2e2f7e864c143502468dcdc125a50facc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 3 Mar 2025 21:57:39 +0100 Subject: [PATCH 115/164] Feature/harmonize section names in bug report template (#4319) * Harmonize section names --- .github/ISSUE_TEMPLATE/bug_report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 1fabe2f48..329a9a5a3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -26,7 +26,7 @@ Thank you for your understanding and cooperation! 2. 3. -**Expected behavior** +**Expected Behavior** @@ -48,6 +48,6 @@ Thank you for your understanding and cooperation! - Browser - OS -**Additional context** +**Additional Context** From 3a09996ca1432b2a33eaa7a335ddabe4360b0fc9 Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Wed, 5 Mar 2025 20:25:32 +0100 Subject: [PATCH 116/164] Bugfix/fix functionality to delete asset profile of custom currency (#4354) * Fix functionality to delete asset profile of custom currency * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.service.ts | 21 ++++++++++++++++++- .../admin-market-data.service.ts | 4 +++- libs/common/src/lib/helper.ts | 10 +++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e11471a63..f2b076369 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Handled an exception in the export functionality related to platforms - Handled an exception in the benchmark service related to unnamed asset profiles +- Fixed the functionality to delete an asset profile of a custom currency ## 2.142.0 - 2025-02-28 diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index ee79059f9..7f2b0da5a 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -109,7 +109,26 @@ export class AdminService { symbol }: AssetProfileIdentifier) { await this.marketDataService.deleteMany({ dataSource, symbol }); - await this.symbolProfileService.delete({ dataSource, symbol }); + + const currency = getCurrencyFromSymbol(symbol); + const customCurrencies = (await this.propertyService.getByKey( + PROPERTY_CURRENCIES + )) as string[]; + + if (customCurrencies.includes(currency)) { + const updatedCustomCurrencies = customCurrencies.filter( + (customCurrency) => { + return customCurrency !== currency; + } + ); + + await this.putSetting( + PROPERTY_CURRENCIES, + JSON.stringify(updatedCustomCurrencies) + ); + } else { + await this.symbolProfileService.delete({ dataSource, symbol }); + } } public async get(): Promise { diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.service.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.service.ts index 86965cd8a..0e2cb7ef3 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.service.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.service.ts @@ -4,7 +4,8 @@ import { AdminService } from '@ghostfolio/client/services/admin.service'; import { ghostfolioScraperApiSymbolPrefix } from '@ghostfolio/common/config'; import { getCurrencyFromSymbol, - isDerivedCurrency + isDerivedCurrency, + isRootCurrency } from '@ghostfolio/common/helper'; import { AssetProfileIdentifier, @@ -77,6 +78,7 @@ export class AdminMarketDataService { activitiesCount === 0 && !isBenchmark && !isDerivedCurrency(getCurrencyFromSymbol(symbol)) && + !isRootCurrency(getCurrencyFromSymbol(symbol)) && !symbol.startsWith(ghostfolioScraperApiSymbolPrefix) ); } diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index bd0c74189..e5104a991 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -354,6 +354,16 @@ export function isDerivedCurrency(aCurrency: string) { }); } +export function isRootCurrency(aCurrency: string) { + if (aCurrency === 'USD') { + return true; + } + + return DERIVED_CURRENCIES.find(({ rootCurrency }) => { + return rootCurrency === aCurrency; + }); +} + export function parseDate(date: string): Date { if (!date) { return undefined; From ddb50295b262d1123c808cdc2db47923d3a993c2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 5 Mar 2025 20:54:32 +0100 Subject: [PATCH 117/164] Bugfix/fix changelog (#4400) * Fix changelog --- CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2b076369..44b6c720a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Fixed + +- Fixed the functionality to delete an asset profile of a custom currency in the admin control panel + ## 2.143.0 - 2025-03-02 ### Added @@ -25,7 +31,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Handled an exception in the export functionality related to platforms - Handled an exception in the benchmark service related to unnamed asset profiles -- Fixed the functionality to delete an asset profile of a custom currency ## 2.142.0 - 2025-02-28 From 12ae54e01bc359239708cdd300d7072ff15ee7d7 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 6 Mar 2025 06:30:10 +0100 Subject: [PATCH 118/164] Bugfix/fix activities import on non-empty activities page (#4398) * Add missing import functionality * Update changelog --- CHANGELOG.md | 1 + .../src/app/pages/portfolio/activities/activities-page.html | 5 ++--- .../src/lib/activities-table/activities-table.component.html | 5 ++++- .../src/lib/activities-table/activities-table.component.ts | 1 + 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44b6c720a..570112db2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed the missing import functionality on the non-empty activities page - Fixed the functionality to delete an asset profile of a custom currency in the admin control panel ## 2.143.0 - 2025-03-02 diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.html b/apps/client/src/app/pages/portfolio/activities/activities-page.html index 99eb16386..80ad71b79 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.html +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -6,9 +6,8 @@ [baseCurrency]="user?.settings?.baseCurrency" [dataSource]="dataSource" [deviceType]="deviceType" - [hasPermissionToCreateActivity]=" - hasPermissionToCreateActivity && user?.activitiesCount === 0 - " + [hasActivities]="user?.activitiesCount > 0" + [hasPermissionToCreateActivity]="hasPermissionToCreateActivity" [hasPermissionToDeleteActivity]="hasPermissionToDeleteActivity" [hasPermissionToExportActivities]="!hasImpersonationId" [locale]="user?.settings?.locale" diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index 4fdc41c59..e5b33efd2 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -500,7 +500,10 @@ /> @if ( - dataSource?.data.length === 0 && hasPermissionToCreateActivity && !isLoading + !hasActivities && + dataSource?.data.length === 0 && + hasPermissionToCreateActivity && + !isLoading ) {
    diff --git a/libs/ui/src/lib/activities-table/activities-table.component.ts b/libs/ui/src/lib/activities-table/activities-table.component.ts index 01b4c6ead..8e5a44a50 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.ts @@ -76,6 +76,7 @@ export class GfActivitiesTableComponent @Input() baseCurrency: string; @Input() dataSource: MatTableDataSource; @Input() deviceType: string; + @Input() hasActivities: boolean; @Input() hasPermissionToCreateActivity: boolean; @Input() hasPermissionToDeleteActivity: boolean; @Input() hasPermissionToExportActivities: boolean; From 72f1246b39a788aa12615ea6447818c7add92e73 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Mar 2025 08:11:56 +0100 Subject: [PATCH 119/164] Feature/update locales (#4399) * Update locales --- Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 10 +++++----- apps/client/src/locales/messages.de.xlf | 10 +++++----- apps/client/src/locales/messages.es.xlf | 10 +++++----- apps/client/src/locales/messages.fr.xlf | 10 +++++----- apps/client/src/locales/messages.it.xlf | 10 +++++----- apps/client/src/locales/messages.nl.xlf | 10 +++++----- apps/client/src/locales/messages.pl.xlf | 10 +++++----- apps/client/src/locales/messages.pt.xlf | 10 +++++----- apps/client/src/locales/messages.tr.xlf | 10 +++++----- apps/client/src/locales/messages.uk.xlf | 10 +++++----- apps/client/src/locales/messages.xlf | 10 +++++----- apps/client/src/locales/messages.zh.xlf | 10 +++++----- 12 files changed, 60 insertions(+), 60 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index ec0121ab5..1e905750c 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1723,7 +1723,7 @@ Realment vol eliminar el perfil d’aquest actiu? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -1731,7 +1731,7 @@ Realment vol eliminar aquests perfils? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -1739,7 +1739,7 @@ Oooh! No s’han pogut eliminar els perfils apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 @@ -6023,7 +6023,7 @@ Do you really want to delete these activities? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -6031,7 +6031,7 @@ Do you really want to delete this activity? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 0bd543de9..c83497776 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -2566,7 +2566,7 @@ Möchtest du diese Aktivität wirklich löschen? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -3942,7 +3942,7 @@ Möchtest du diese Aktivitäten wirklich löschen? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -6031,7 +6031,7 @@ Möchtest du dieses Anlageprofil wirklich löschen? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -6715,7 +6715,7 @@ Möchtest du diese Profile wirklich löschen? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6723,7 +6723,7 @@ Ups! Die Profile konnten nicht gelöscht werden. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index da0c0fb5c..3b5896525 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -2567,7 +2567,7 @@ ¿Estás seguro de eliminar esta operación? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -3943,7 +3943,7 @@ Do you really want to delete these activities? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -6032,7 +6032,7 @@ Do you really want to delete this asset profile? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -6716,7 +6716,7 @@ Estas seguro de borrar estos perfiles? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6724,7 +6724,7 @@ Oops! Could not delete profiles. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 77224f1c9..7a427083e 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -3086,7 +3086,7 @@ Voulez-vous vraiment supprimer cette activité ? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -3942,7 +3942,7 @@ Voulez-vous vraiment supprimer toutes vos activités ? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -6031,7 +6031,7 @@ Confirmez la suppressoion de ce profil d'actif? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -6715,7 +6715,7 @@ Confirmer la suppression de ces Profils? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6723,7 +6723,7 @@ Oops! Echec de la suppression de Profils. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 80ca9ced7..5813fb11b 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -2567,7 +2567,7 @@ Vuoi davvero eliminare questa attività? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -3943,7 +3943,7 @@ Vuoi davvero eliminare tutte le tue attività? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -6032,7 +6032,7 @@ Vuoi veramente eliminare il profilo di questo asset? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -6716,7 +6716,7 @@ Confermi di voler eliminare questi profili? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6724,7 +6724,7 @@ Ops! Impossibile eliminare i profili. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 8beeae481..77760e761 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -2566,7 +2566,7 @@ Wil je deze activiteit echt verwijderen? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -3942,7 +3942,7 @@ Wil je echt al je activiteiten verwijderen? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -6031,7 +6031,7 @@ Do you really want to delete this asset profile? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -6715,7 +6715,7 @@ Do you really want to delete these profiles? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6723,7 +6723,7 @@ Oops! Could not delete profiles. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index d2001157e..015e72359 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1455,7 +1455,7 @@ Czy na pewno chcesz usunąć ten profil aktywów? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -4207,7 +4207,7 @@ Czy na pewno chcesz usunąć te aktywności? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -5555,7 +5555,7 @@ Czy na pewno chcesz usunąć tę działalność? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -6715,7 +6715,7 @@ Czy na pewno chcesz usunąć te profile? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6723,7 +6723,7 @@ Ups! Nie udało się usunąć profili. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 10c72e589..515140679 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -2958,7 +2958,7 @@ Deseja realmente eliminar esta atividade? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -3942,7 +3942,7 @@ Deseja mesmo eliminar estas atividades? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -6031,7 +6031,7 @@ Do you really want to delete this asset profile? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -6715,7 +6715,7 @@ Do you really want to delete these profiles? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6723,7 +6723,7 @@ Oops! Could not delete profiles. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index ca2c9f99c..b5c2e6ae1 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -3715,7 +3715,7 @@ Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -5271,7 +5271,7 @@ TBu işlemi silmeyi gerçekten istiyor musunuz? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -6031,7 +6031,7 @@ Bu varlık profilini silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -6715,7 +6715,7 @@ Do you really want to delete these profiles? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6723,7 +6723,7 @@ Oops! Could not delete profiles. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index a6146f4b2..def058161 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1635,7 +1635,7 @@ Ви дійсно хочете видалити цей профіль активу? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -1643,7 +1643,7 @@ Упс! Не вдалося видалити профілі. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 @@ -1651,7 +1651,7 @@ Ви дійсно хочете видалити ці профілі? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6669,7 +6669,7 @@ Ви дійсно хочете видалити ці дії? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -6677,7 +6677,7 @@ Ви дійсно хочете видалити цю активність? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index cb3bc15b3..18ac0c2be 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1400,7 +1400,7 @@ Do you really want to delete this asset profile? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -3875,7 +3875,7 @@ Do you really want to delete these activities? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -5112,7 +5112,7 @@ Do you really want to delete this activity? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -6086,7 +6086,7 @@ Do you really want to delete these profiles? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6100,7 +6100,7 @@ Oops! Could not delete profiles. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 37db811ae..3f87d805b 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -1464,7 +1464,7 @@ 您确实要删除此资产配置文件吗? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 36 + 37 @@ -4216,7 +4216,7 @@ 您真的要删除所有活动吗? libs/ui/src/lib/activities-table/activities-table.component.ts - 218 + 219 @@ -5596,7 +5596,7 @@ 您确实要删除此活动吗? libs/ui/src/lib/activities-table/activities-table.component.ts - 228 + 229 @@ -6716,7 +6716,7 @@ Do you really want to delete these profiles? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 67 + 68 @@ -6724,7 +6724,7 @@ Oops! Could not delete profiles. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 55 + 56 From 25320e05d9f379194646e6a9fc42ad9fa8c856c9 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 6 Mar 2025 08:14:23 +0100 Subject: [PATCH 120/164] Release 2.144.0 (#4403) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 570112db2..432a953c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.144.0 - 2025-03-06 ### Fixed diff --git a/package-lock.json b/package-lock.json index 11e1b6ebd..cfda8ce42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.143.0", + "version": "2.144.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.143.0", + "version": "2.144.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 9df5e1172..4ca628470 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.143.0", + "version": "2.144.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From b260c4f450e126d656d8b81bdf3cc4377046e448 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 7 Mar 2025 19:48:03 +0100 Subject: [PATCH 121/164] Feature/extend personal finance tools 20250306 (#4406) * Extend personal finance tools * CoinStats * Fincake * Koinly * Nansen * Simply Wall St * Tradervue --- libs/common/src/lib/personal-finance-tools.ts | 57 +++++++++++++++++++ libs/ui/src/lib/i18n.ts | 3 + 2 files changed, 60 insertions(+) diff --git a/libs/common/src/lib/personal-finance-tools.ts b/libs/common/src/lib/personal-finance-tools.ts index e4c820fb7..936f3c6f6 100644 --- a/libs/common/src/lib/personal-finance-tools.ts +++ b/libs/common/src/lib/personal-finance-tools.ts @@ -82,6 +82,16 @@ export const personalFinanceTools: Product[] = [ regions: ['Global'], slogan: 'Take control of your financial future' }, + { + founded: 2017, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'coinstats', + name: 'CoinStats', + origin: 'Armenia', + pricingPerYear: '$168', + slogan: 'Manage All Your Wallets & Exchanges From One Place' + }, { founded: 2013, hasFreePlan: true, @@ -154,6 +164,7 @@ export const personalFinanceTools: Product[] = [ name: 'Delta Investment Tracker', note: 'Acquired by eToro', origin: 'Belgium', + pricingPerYear: '$150', slogan: 'The app to track all your investments. Make smart moves only.' }, { @@ -252,6 +263,13 @@ export const personalFinanceTools: Product[] = [ slogan: 'The most convenient mobile application for personal finance accounting' }, + { + founded: 2022, + key: 'fincake', + name: 'Fincake', + origin: 'British Virgin Islands', + slogan: 'Easy-to-use Portfolio Tracker' + }, { founded: 2023, hasFreePlan: true, @@ -340,6 +358,15 @@ export const personalFinanceTools: Product[] = [ pricingPerYear: '€119', slogan: 'ETF portfolios made simple' }, + { + founded: 2018, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'koinly', + name: 'Koinly', + origin: 'Singapore', + slogan: 'Track all your crypto wallets in one place' + }, { founded: 2016, hasFreePlan: true, @@ -469,6 +496,16 @@ export const personalFinanceTools: Product[] = [ slogan: 'Track your equity, fund, investment trust, ETF and pension investments in one place.' }, + { + founded: 2020, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'nansen', + name: 'Crypto Portfolio Tracker by Nansen', + origin: 'Singapore', + pricingPerYear: '$1188', + slogan: 'Your Complete Crypto Portfolio, Reimagined' + }, { founded: 2017, hasFreePlan: false, @@ -634,6 +671,16 @@ export const personalFinanceTools: Product[] = [ pricingPerYear: '€80', slogan: 'Stock Portfolio Tracker' }, + { + founded: 2014, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'simply-wallstreet', + name: 'Stock Portfolio Tracker & Visualizer by Simply Wall St', + origin: 'Australia', + pricingPerYear: '$120', + slogan: 'Smart portfolio tracker for informed investors' + }, { founded: 2021, hasFreePlan: true, @@ -706,6 +753,16 @@ export const personalFinanceTools: Product[] = [ slogan: 'Your financial life in a spreadsheet, automatically updated each day' }, + { + founded: 2011, + hasFreePlan: false, + hasSelfHostingAbility: false, + key: 'tradervue', + name: 'Tradervue', + origin: 'United States', + pricingPerYear: '$360', + slogan: 'The Trading Journal to Improve Your Trading Performance' + }, { hasFreePlan: true, hasSelfHostingAbility: false, diff --git a/libs/ui/src/lib/i18n.ts b/libs/ui/src/lib/i18n.ts index 7ea36123b..4c09a4fc0 100644 --- a/libs/ui/src/lib/i18n.ts +++ b/libs/ui/src/lib/i18n.ts @@ -70,9 +70,11 @@ const locales = { 'South America': $localize`South America`, // Countries + Armenia: $localize`Armenia`, Australia: $localize`Australia`, Austria: $localize`Austria`, Belgium: $localize`Belgium`, + 'British Virgin Islands': $localize`British Virgin Islands`, Bulgaria: $localize`Bulgaria`, Canada: $localize`Canada`, 'Czech Republic': $localize`Czech Republic`, @@ -86,6 +88,7 @@ const locales = { 'New Zealand': $localize`New Zealand`, Poland: $localize`Poland`, Romania: $localize`Romania`, + Singapore: $localize`Singapore`, 'South Africa': $localize`South Africa`, Switzerland: $localize`Switzerland`, Thailand: $localize`Thailand`, From 589eefaa764090516f55a16d70899df7fe05ff4a Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Fri, 7 Mar 2025 19:48:52 +0100 Subject: [PATCH 122/164] Feature/extend AI prompt API by mode (#4395) * Extend AI prompt API by mode * Update changelog --- CHANGELOG.md | 6 +++++ .../api/src/app/endpoints/ai/ai.controller.ts | 11 ++++++---- apps/api/src/app/endpoints/ai/ai.service.ts | 7 ++++++ .../analysis/analysis-page.component.ts | 6 ++--- .../portfolio/analysis/analysis-page.html | 22 +++++++++++++++++-- apps/client/src/app/services/data.service.ts | 11 +++++++--- .../src/lib/types/ai-prompt-mode.type.ts | 1 + libs/common/src/lib/types/index.ts | 2 ++ 8 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 libs/common/src/lib/types/ai-prompt-mode.type.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 432a953c0..88b90c943 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +- Added a _Copy portfolio data to clipboard for AI prompt_ action to the analysis page (experimental) + ## 2.144.0 - 2025-03-06 ### Fixed diff --git a/apps/api/src/app/endpoints/ai/ai.controller.ts b/apps/api/src/app/endpoints/ai/ai.controller.ts index 981b26aa2..910abbf96 100644 --- a/apps/api/src/app/endpoints/ai/ai.controller.ts +++ b/apps/api/src/app/endpoints/ai/ai.controller.ts @@ -6,9 +6,9 @@ import { } from '@ghostfolio/common/config'; import { AiPromptResponse } from '@ghostfolio/common/interfaces'; import { permissions } from '@ghostfolio/common/permissions'; -import type { RequestWithUser } from '@ghostfolio/common/types'; +import type { AiPromptMode, RequestWithUser } from '@ghostfolio/common/types'; -import { Controller, Get, Inject, UseGuards } from '@nestjs/common'; +import { Controller, Get, Inject, Param, UseGuards } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; @@ -21,11 +21,14 @@ export class AiController { @Inject(REQUEST) private readonly request: RequestWithUser ) {} - @Get('prompt') + @Get('prompt/:mode') @HasPermission(permissions.readAiPrompt) @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getPrompt(): Promise { + public async getPrompt( + @Param('mode') mode: AiPromptMode + ): Promise { const prompt = await this.aiService.getPrompt({ + mode, impersonationId: undefined, languageCode: this.request.user.Settings.settings.language ?? DEFAULT_LANGUAGE_CODE, diff --git a/apps/api/src/app/endpoints/ai/ai.service.ts b/apps/api/src/app/endpoints/ai/ai.service.ts index 59dec6add..d9090d77c 100644 --- a/apps/api/src/app/endpoints/ai/ai.service.ts +++ b/apps/api/src/app/endpoints/ai/ai.service.ts @@ -1,4 +1,5 @@ import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; +import type { AiPromptMode } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; @@ -9,11 +10,13 @@ export class AiService { public async getPrompt({ impersonationId, languageCode, + mode, userCurrency, userId }: { impersonationId: string; languageCode: string; + mode: AiPromptMode; userCurrency: string; userId: string; }) { @@ -43,6 +46,10 @@ export class AiService { ) ]; + if (mode === 'portfolio') { + return holdingsTable.join('\n'); + } + return [ `You are a neutral financial assistant. Please analyze the following investment portfolio (base currency being ${userCurrency}) in simple words.`, ...holdingsTable, diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts index 5eebb42ef..28c0b9c0e 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -12,7 +12,7 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; -import { GroupBy } from '@ghostfolio/common/types'; +import type { AiPromptMode, GroupBy } from '@ghostfolio/common/types'; import { translate } from '@ghostfolio/ui/i18n'; import { Clipboard } from '@angular/cdk/clipboard'; @@ -142,9 +142,9 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { this.fetchDividendsAndInvestments(); } - public onCopyPromptToClipboard() { + public onCopyPromptToClipboard(mode: AiPromptMode) { this.dataService - .fetchPrompt() + .fetchPrompt(mode) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ prompt }) => { this.clipboard.copy(prompt); diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html index 07ffa705d..84ca54e06 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -16,7 +16,7 @@ + diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 0bc4ebccc..e8d4b7826 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -46,7 +46,12 @@ import { User } from '@ghostfolio/common/interfaces'; import { filterGlobalPermissions } from '@ghostfolio/common/permissions'; -import { AccountWithValue, DateRange, GroupBy } from '@ghostfolio/common/types'; +import type { + AccountWithValue, + AiPromptMode, + DateRange, + GroupBy +} from '@ghostfolio/common/types'; import { translate } from '@ghostfolio/ui/i18n'; import { HttpClient, HttpParams } from '@angular/common/http'; @@ -650,8 +655,8 @@ export class DataService { return this.http.get('/api/v1/portfolio/report'); } - public fetchPrompt() { - return this.http.get('/api/v1/ai/prompt'); + public fetchPrompt(mode: AiPromptMode) { + return this.http.get(`/api/v1/ai/prompt/${mode}`); } public fetchPublicPortfolio(aAccessId: string) { diff --git a/libs/common/src/lib/types/ai-prompt-mode.type.ts b/libs/common/src/lib/types/ai-prompt-mode.type.ts new file mode 100644 index 000000000..00a031df0 --- /dev/null +++ b/libs/common/src/lib/types/ai-prompt-mode.type.ts @@ -0,0 +1 @@ +export type AiPromptMode = 'analysis' | 'portfolio'; diff --git a/libs/common/src/lib/types/index.ts b/libs/common/src/lib/types/index.ts index 9e8178d3c..668486a94 100644 --- a/libs/common/src/lib/types/index.ts +++ b/libs/common/src/lib/types/index.ts @@ -2,6 +2,7 @@ import type { AccessType } from './access-type.type'; import type { AccessWithGranteeUser } from './access-with-grantee-user.type'; import type { AccountWithPlatform } from './account-with-platform.type'; import type { AccountWithValue } from './account-with-value.type'; +import type { AiPromptMode } from './ai-prompt-mode.type'; import type { BenchmarkTrend } from './benchmark-trend.type'; import type { ColorScheme } from './color-scheme.type'; import type { DateRange } from './date-range.type'; @@ -24,6 +25,7 @@ export type { AccessWithGranteeUser, AccountWithPlatform, AccountWithValue, + AiPromptMode, BenchmarkTrend, ColorScheme, DateRange, From 9278adc6ba3ab1b0d6978ec06de6294a156bfcda Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 7 Mar 2025 21:12:55 +0100 Subject: [PATCH 123/164] Feature/update locales 20250307 (#4409) * Update translations * Update changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 4 + apps/client/src/locales/messages.ca.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.de.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.es.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.fr.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.it.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.nl.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.pl.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.pt.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.tr.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.uk.xlf | 126 +++++++++++++++--------- apps/client/src/locales/messages.xlf | 120 +++++++++++++--------- apps/client/src/locales/messages.zh.xlf | 126 +++++++++++++++--------- 13 files changed, 947 insertions(+), 563 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88b90c943..45af8de6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a _Copy portfolio data to clipboard for AI prompt_ action to the analysis page (experimental) +### Changed + +- Improved the language localization for German (`de`) + ## 2.144.0 - 2025-03-06 ### Fixed diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 1e905750c..3dc8d56f3 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2671,7 +2671,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2683,7 +2683,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -5107,7 +5107,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -5115,7 +5115,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -5123,7 +5123,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -5131,7 +5131,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -5139,7 +5139,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -5147,7 +5147,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -5155,7 +5155,7 @@ Top apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -5163,7 +5163,7 @@ Bottom apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -5171,7 +5171,7 @@ Portfolio Evolution apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -5179,7 +5179,7 @@ Investment Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -5187,7 +5187,7 @@ Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -5195,7 +5195,7 @@ Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -5203,7 +5203,7 @@ Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -5595,7 +5595,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -6391,7 +6391,7 @@ Japan libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6683,7 +6683,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6691,7 +6691,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6699,7 +6699,7 @@ Neutral libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6867,7 +6867,7 @@ Australia libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6875,7 +6875,7 @@ Austria libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6883,7 +6883,7 @@ Belgium libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6891,7 +6891,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6899,7 +6899,7 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6907,7 +6907,7 @@ Czech Republic libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6915,7 +6915,7 @@ Finland libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6923,7 +6923,7 @@ France libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6931,7 +6931,7 @@ Germany libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6939,7 +6939,7 @@ India libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6947,7 +6947,7 @@ Italy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6955,7 +6955,7 @@ Netherlands libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6963,7 +6963,7 @@ New Zealand libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6971,7 +6971,7 @@ Poland libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6979,7 +6979,7 @@ Romania libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6987,7 +6987,7 @@ South Africa libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6995,7 +6995,7 @@ Thailand libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7003,7 +7003,7 @@ United States libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7347,7 +7347,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7624,14 +7624,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7764,6 +7756,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index c83497776..962399d06 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -2134,7 +2134,7 @@ Zeitstrahl der Investitionen apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -2142,7 +2142,7 @@ Gewinner apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -2150,7 +2150,7 @@ Verlierer apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -2850,7 +2850,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2862,7 +2862,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -2986,7 +2986,7 @@ Portfolio Wertentwicklung apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -3306,7 +3306,7 @@ Zeitstrahl der Dividenden apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -4170,7 +4170,7 @@ Aktueller Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4178,7 +4178,7 @@ Längster Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4658,7 +4658,7 @@ Japan libs/ui/src/lib/i18n.ts - 84 + 86 @@ -5759,7 +5759,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -6111,7 +6111,7 @@ Extreme Angst libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6119,7 +6119,7 @@ Extreme Gier libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6127,7 +6127,7 @@ Neutral libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6315,7 +6315,7 @@ Absolute Anlage Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6323,7 +6323,7 @@ Anlage Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6331,7 +6331,7 @@ Absolute Währungsperformance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6339,7 +6339,7 @@ Währungsperformance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6347,7 +6347,7 @@ Absolute Netto Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6355,7 +6355,7 @@ Netto Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6867,7 +6867,7 @@ Australien libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6875,7 +6875,7 @@ Österreich libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6883,7 +6883,7 @@ Belgien libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6891,7 +6891,7 @@ Bulgarien libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6899,7 +6899,7 @@ Kanada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6907,7 +6907,7 @@ Tschechien libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6915,7 +6915,7 @@ Finnland libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6923,7 +6923,7 @@ Frankreich libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6931,7 +6931,7 @@ Deutschland libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6939,7 +6939,7 @@ Indien libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6947,7 +6947,7 @@ Italien libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6955,7 +6955,7 @@ Niederlande libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6963,7 +6963,7 @@ Neuseeland libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6971,7 +6971,7 @@ Polen libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6979,7 +6979,7 @@ Rumänien libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6987,7 +6987,7 @@ Südafrika libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6995,7 +6995,7 @@ Thailand libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7003,7 +7003,7 @@ USA libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7347,7 +7347,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7624,14 +7624,6 @@ 153 - - Copy AI prompt to clipboard - Kopiere KI-Anweisung die Zwischenablage - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link wurde in die Zwischenablage kopiert @@ -7764,6 +7756,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Kopiere Portfolio-Daten in die Zwischenablage für KI-Anweisung + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Kopiere KI-Anweisung in die Zwischenablage für Analyse + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenien + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + Britische Jungferninseln + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapur + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 3b5896525..0fca2e9e9 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -2135,7 +2135,7 @@ Cronología de la inversión apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -2143,7 +2143,7 @@ Lo mejor apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -2151,7 +2151,7 @@ Lo peor apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -2851,7 +2851,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2863,7 +2863,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -2987,7 +2987,7 @@ Evolución cartera apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -3319,7 +3319,7 @@ Calendario de dividendos apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -4171,7 +4171,7 @@ Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4179,7 +4179,7 @@ Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4659,7 +4659,7 @@ Japan libs/ui/src/lib/i18n.ts - 84 + 86 @@ -5760,7 +5760,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -6112,7 +6112,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6120,7 +6120,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6128,7 +6128,7 @@ Neutral libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6316,7 +6316,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6324,7 +6324,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6332,7 +6332,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6340,7 +6340,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6348,7 +6348,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6356,7 +6356,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6868,7 +6868,7 @@ Australia libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6876,7 +6876,7 @@ Austria libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6884,7 +6884,7 @@ Belgium libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6892,7 +6892,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6900,7 +6900,7 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6908,7 +6908,7 @@ Czech Republic libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6916,7 +6916,7 @@ Finland libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6924,7 +6924,7 @@ France libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6932,7 +6932,7 @@ Germany libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6940,7 +6940,7 @@ India libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6948,7 +6948,7 @@ Italy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6956,7 +6956,7 @@ Netherlands libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6964,7 +6964,7 @@ New Zealand libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6972,7 +6972,7 @@ Poland libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6980,7 +6980,7 @@ Romania libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6988,7 +6988,7 @@ South Africa libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6996,7 +6996,7 @@ Thailand libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7004,7 +7004,7 @@ United States libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7348,7 +7348,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7625,14 +7625,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7765,6 +7757,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 7a427083e..244d0c494 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1378,7 +1378,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -1390,7 +1390,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -2774,7 +2774,7 @@ Haut apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -2782,7 +2782,7 @@ Bas apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -2790,7 +2790,7 @@ Évolution du Portefeuille apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -2798,7 +2798,7 @@ Historique des Investissements apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -2806,7 +2806,7 @@ Historique des Dividendes apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -4170,7 +4170,7 @@ Série en cours apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4178,7 +4178,7 @@ Série la plus longue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4658,7 +4658,7 @@ Japon libs/ui/src/lib/i18n.ts - 84 + 86 @@ -5759,7 +5759,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -6111,7 +6111,7 @@ Extreme Peur libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6119,7 +6119,7 @@ Extreme Cupidité libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6127,7 +6127,7 @@ Neutre libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6315,7 +6315,7 @@ Performance des Actifs en valeur absolue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6323,7 +6323,7 @@ Performance des Actifs apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6331,7 +6331,7 @@ Performance des devises en valeur absolue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6339,7 +6339,7 @@ Performance des devises apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6347,7 +6347,7 @@ Performance nette absolue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6355,7 +6355,7 @@ Performance nette apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6867,7 +6867,7 @@ Australie libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6875,7 +6875,7 @@ Autriche libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6883,7 +6883,7 @@ Belgique libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6891,7 +6891,7 @@ Bulgarie libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6899,7 +6899,7 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6907,7 +6907,7 @@ République Tchèque libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6915,7 +6915,7 @@ Finlande libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6923,7 +6923,7 @@ France libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6931,7 +6931,7 @@ Allemagne libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6939,7 +6939,7 @@ Inde libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6947,7 +6947,7 @@ Italie libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6955,7 +6955,7 @@ Pays-Bas libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6963,7 +6963,7 @@ Nouvelle-Zélande libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6971,7 +6971,7 @@ Pologne libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6979,7 +6979,7 @@ Roumanie libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6987,7 +6987,7 @@ Afrique du Sud libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6995,7 +6995,7 @@ Thaïlande libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7003,7 +7003,7 @@ Etats-Unis libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7347,7 +7347,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7624,14 +7624,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7764,6 +7756,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 5813fb11b..940c52abe 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -2135,7 +2135,7 @@ Cronologia degli investimenti apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -2143,7 +2143,7 @@ In alto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -2151,7 +2151,7 @@ In basso apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -2851,7 +2851,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2863,7 +2863,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -2987,7 +2987,7 @@ Evoluzione del portafoglio apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -3319,7 +3319,7 @@ Cronologia dei dividendi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -4171,7 +4171,7 @@ Serie attuale apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4179,7 +4179,7 @@ Serie più lunga apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4659,7 +4659,7 @@ Giappone libs/ui/src/lib/i18n.ts - 84 + 86 @@ -5760,7 +5760,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -6112,7 +6112,7 @@ Paura estrema libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6120,7 +6120,7 @@ Avidità estrema libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6128,7 +6128,7 @@ Neutrale libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6316,7 +6316,7 @@ Rendimento assoluto dell'Asset apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6324,7 +6324,7 @@ Rendimento dell'Asset apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6332,7 +6332,7 @@ Rendimento assoluto della Valuta apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6340,7 +6340,7 @@ Rendimento della Valuta apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6348,7 +6348,7 @@ Rendimento assoluto della Valuta apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6356,7 +6356,7 @@ Rendimento Netto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6868,7 +6868,7 @@ Australia libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6876,7 +6876,7 @@ Austria libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6884,7 +6884,7 @@ Belgio libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6892,7 +6892,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6900,7 +6900,7 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6908,7 +6908,7 @@ Repubblica Ceca libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6916,7 +6916,7 @@ Finlandia libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6924,7 +6924,7 @@ Francia libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6932,7 +6932,7 @@ Germania libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6940,7 +6940,7 @@ India libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6948,7 +6948,7 @@ Italia libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6956,7 +6956,7 @@ Olanda libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6964,7 +6964,7 @@ Nuova Zelanda libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6972,7 +6972,7 @@ Polonia libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6980,7 +6980,7 @@ Romania libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6988,7 +6988,7 @@ Sud Africa libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6996,7 +6996,7 @@ Tailandia libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7004,7 +7004,7 @@ Stati Uniti libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7348,7 +7348,7 @@ Ucraina libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7625,14 +7625,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7765,6 +7757,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 77760e761..d43fae4d6 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -2134,7 +2134,7 @@ Tijdlijn investeringen apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -2142,7 +2142,7 @@ Winnaars apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -2150,7 +2150,7 @@ Verliezers apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -2850,7 +2850,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2862,7 +2862,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -2986,7 +2986,7 @@ Waardeontwikkeling van portefeuille apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -3318,7 +3318,7 @@ Tijdlijn dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -4170,7 +4170,7 @@ Huidige reeks apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4178,7 +4178,7 @@ Langste reeks apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4658,7 +4658,7 @@ Japan libs/ui/src/lib/i18n.ts - 84 + 86 @@ -5759,7 +5759,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -6111,7 +6111,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6119,7 +6119,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6127,7 +6127,7 @@ Neutral libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6315,7 +6315,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6323,7 +6323,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6331,7 +6331,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6339,7 +6339,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6347,7 +6347,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6355,7 +6355,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6867,7 +6867,7 @@ Australia libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6875,7 +6875,7 @@ Austria libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6883,7 +6883,7 @@ Belgium libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6891,7 +6891,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6899,7 +6899,7 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6907,7 +6907,7 @@ Czech Republic libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6915,7 +6915,7 @@ Finland libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6923,7 +6923,7 @@ France libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6931,7 +6931,7 @@ Germany libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6939,7 +6939,7 @@ India libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6947,7 +6947,7 @@ Italy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6955,7 +6955,7 @@ Netherlands libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6963,7 +6963,7 @@ New Zealand libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6971,7 +6971,7 @@ Poland libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6979,7 +6979,7 @@ Romania libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6987,7 +6987,7 @@ South Africa libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6995,7 +6995,7 @@ Thailand libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7003,7 +7003,7 @@ United States libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7347,7 +7347,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7624,14 +7624,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7764,6 +7756,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 015e72359..b6476dd9b 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2327,7 +2327,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2339,7 +2339,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -4699,7 +4699,7 @@ Największe wzrosty apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -4707,7 +4707,7 @@ Największy spadek apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -4715,7 +4715,7 @@ Rozwój portfela apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -4723,7 +4723,7 @@ Oś czasu inwestycji apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -4731,7 +4731,7 @@ Obecna passa apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4739,7 +4739,7 @@ Najdłuższa passa apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4747,7 +4747,7 @@ Oś czasu dywidend apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -5383,7 +5383,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -5803,7 +5803,7 @@ Japonia libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6087,7 +6087,7 @@ Skrajny Strach libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6095,7 +6095,7 @@ Skrajna Zachłanność libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6103,7 +6103,7 @@ Neutralny libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6315,7 +6315,7 @@ Łączny wynik aktywów apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6323,7 +6323,7 @@ Wyniki aktywów apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6331,7 +6331,7 @@ Łączny wynik walut apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6339,7 +6339,7 @@ Wynik walut apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6347,7 +6347,7 @@ Łączna wartość netto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6355,7 +6355,7 @@ Wynik netto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6867,7 +6867,7 @@ Australia libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6875,7 +6875,7 @@ Austria libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6883,7 +6883,7 @@ Belgia libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6891,7 +6891,7 @@ Bułgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6899,7 +6899,7 @@ Kanada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6907,7 +6907,7 @@ Czechy libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6915,7 +6915,7 @@ Finlandia libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6923,7 +6923,7 @@ Francja libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6931,7 +6931,7 @@ Niemcy libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6939,7 +6939,7 @@ Indie libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6947,7 +6947,7 @@ Włochy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6955,7 +6955,7 @@ Holandia libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6963,7 +6963,7 @@ Nowa Zelandia libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6971,7 +6971,7 @@ Polska libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6979,7 +6979,7 @@ Rumunia libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6987,7 +6987,7 @@ Południowa Afryka libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6995,7 +6995,7 @@ Tajlandia libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7003,7 +7003,7 @@ Stany Zjednoczone libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7347,7 +7347,7 @@ Ukraina libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7624,14 +7624,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7764,6 +7756,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 515140679..6f2e546f8 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1250,7 +1250,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -1262,7 +1262,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -2658,7 +2658,7 @@ Topo apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -2666,7 +2666,7 @@ Fundo apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -2674,7 +2674,7 @@ Evolução do Portefólio apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -2682,7 +2682,7 @@ Cronograma de Investimento apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -3386,7 +3386,7 @@ Cronograma de Dividendos apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -4170,7 +4170,7 @@ Série Atual apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4178,7 +4178,7 @@ Série mais Longa apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4658,7 +4658,7 @@ Japão libs/ui/src/lib/i18n.ts - 84 + 86 @@ -5759,7 +5759,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -6111,7 +6111,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6119,7 +6119,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6127,7 +6127,7 @@ Neutral libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6315,7 +6315,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6323,7 +6323,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6331,7 +6331,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6339,7 +6339,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6347,7 +6347,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6355,7 +6355,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6867,7 +6867,7 @@ Australia libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6875,7 +6875,7 @@ Austria libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6883,7 +6883,7 @@ Belgium libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6891,7 +6891,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6899,7 +6899,7 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6907,7 +6907,7 @@ Czech Republic libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6915,7 +6915,7 @@ Finland libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6923,7 +6923,7 @@ France libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6931,7 +6931,7 @@ Germany libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6939,7 +6939,7 @@ India libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6947,7 +6947,7 @@ Italy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6955,7 +6955,7 @@ Netherlands libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6963,7 +6963,7 @@ New Zealand libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6971,7 +6971,7 @@ Poland libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6979,7 +6979,7 @@ Romania libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6987,7 +6987,7 @@ South Africa libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6995,7 +6995,7 @@ Thailand libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7003,7 +7003,7 @@ United States libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7347,7 +7347,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7624,14 +7624,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7764,6 +7756,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index b5c2e6ae1..3b2927d10 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2179,7 +2179,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2191,7 +2191,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -4183,7 +4183,7 @@ Üst apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -4191,7 +4191,7 @@ Alt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -4199,7 +4199,7 @@ Portföyün Gelişimi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -4207,7 +4207,7 @@ Yatırım Zaman Çizelgesi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -4215,7 +4215,7 @@ Güncel Seri apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4223,7 +4223,7 @@ En Uzun Seri apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4231,7 +4231,7 @@ Temettü Zaman Çizelgesi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -4859,7 +4859,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -5483,7 +5483,7 @@ Japan libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6111,7 +6111,7 @@ Aşırı Korku libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6119,7 +6119,7 @@ Aşırı Açgözlülük libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6127,7 +6127,7 @@ Nötr libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6315,7 +6315,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6323,7 +6323,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6331,7 +6331,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6339,7 +6339,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6347,7 +6347,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6355,7 +6355,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6867,7 +6867,7 @@ Australia libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6875,7 +6875,7 @@ Austria libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6883,7 +6883,7 @@ Belgium libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6891,7 +6891,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6899,7 +6899,7 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6907,7 +6907,7 @@ Czech Republic libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6915,7 +6915,7 @@ Finland libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6923,7 +6923,7 @@ France libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6931,7 +6931,7 @@ Germany libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6939,7 +6939,7 @@ India libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6947,7 +6947,7 @@ Italy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6955,7 +6955,7 @@ Netherlands libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6963,7 +6963,7 @@ New Zealand libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6971,7 +6971,7 @@ Poland libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6979,7 +6979,7 @@ Romania libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6987,7 +6987,7 @@ South Africa libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6995,7 +6995,7 @@ Thailand libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7003,7 +7003,7 @@ United States libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7347,7 +7347,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7624,14 +7624,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7764,6 +7756,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index def058161..c192795af 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2799,7 +2799,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2811,7 +2811,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -5383,7 +5383,7 @@ Абсолютна прибутковість активів apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -5391,7 +5391,7 @@ Прибутковість активів apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -5399,7 +5399,7 @@ Абсолютна прибутковість валюти apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -5407,7 +5407,7 @@ Прибутковість валюти apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -5415,7 +5415,7 @@ Абсолютна чиста прибутковість apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -5423,7 +5423,7 @@ Чиста прибутковість apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -5431,7 +5431,7 @@ Топ apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -5439,7 +5439,7 @@ Низ apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -5447,7 +5447,7 @@ Еволюція портфеля apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -5455,7 +5455,7 @@ Інвестиційний графік apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -5463,7 +5463,7 @@ Поточна серія apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -5471,7 +5471,7 @@ Найдовша серія apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -5479,7 +5479,7 @@ Графік дивідендів apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -6009,7 +6009,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -7385,7 +7385,7 @@ Австралія libs/ui/src/lib/i18n.ts - 73 + 74 @@ -7393,7 +7393,7 @@ Австрія libs/ui/src/lib/i18n.ts - 74 + 75 @@ -7401,7 +7401,7 @@ Бельгія libs/ui/src/lib/i18n.ts - 75 + 76 @@ -7409,7 +7409,7 @@ Болгарія libs/ui/src/lib/i18n.ts - 76 + 78 @@ -7417,7 +7417,7 @@ Канада libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7425,7 +7425,7 @@ Чеська Республіка libs/ui/src/lib/i18n.ts - 78 + 80 @@ -7433,7 +7433,7 @@ Фінляндія libs/ui/src/lib/i18n.ts - 79 + 81 @@ -7441,7 +7441,7 @@ Франція libs/ui/src/lib/i18n.ts - 80 + 82 @@ -7449,7 +7449,7 @@ Німеччина libs/ui/src/lib/i18n.ts - 81 + 83 @@ -7457,7 +7457,7 @@ Індія libs/ui/src/lib/i18n.ts - 82 + 84 @@ -7465,7 +7465,7 @@ Італія libs/ui/src/lib/i18n.ts - 83 + 85 @@ -7473,7 +7473,7 @@ Японія libs/ui/src/lib/i18n.ts - 84 + 86 @@ -7481,7 +7481,7 @@ Нідерланди libs/ui/src/lib/i18n.ts - 85 + 87 @@ -7489,7 +7489,7 @@ Нова Зеландія libs/ui/src/lib/i18n.ts - 86 + 88 @@ -7497,7 +7497,7 @@ Польща libs/ui/src/lib/i18n.ts - 87 + 89 @@ -7505,7 +7505,7 @@ Румунія libs/ui/src/lib/i18n.ts - 88 + 90 @@ -7513,7 +7513,7 @@ Південна Африка libs/ui/src/lib/i18n.ts - 89 + 92 @@ -7521,7 +7521,7 @@ Таїланд libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7529,7 +7529,7 @@ Україна libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7537,7 +7537,7 @@ Сполучені Штати libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7545,7 +7545,7 @@ Екстремальний страх libs/ui/src/lib/i18n.ts - 96 + 99 @@ -7553,7 +7553,7 @@ Екстремальна жадібність libs/ui/src/lib/i18n.ts - 97 + 100 @@ -7561,7 +7561,7 @@ Нейтрально libs/ui/src/lib/i18n.ts - 100 + 103 @@ -7632,14 +7632,6 @@ 153 - - Copy AI prompt to clipboard - Скопіюйте запит AI в буфер обміну - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Early Access Ранній доступ @@ -7764,6 +7756,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 18ac0c2be..7dc410df5 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2188,7 +2188,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2199,7 +2199,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -4315,49 +4315,49 @@ Top apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 Bottom apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 Portfolio Evolution apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 Investment Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -4951,7 +4951,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -5345,7 +5345,7 @@ Japan libs/ui/src/lib/i18n.ts - 84 + 86 @@ -5594,21 +5594,21 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 96 + 99 Extreme Greed libs/ui/src/lib/i18n.ts - 97 + 100 Neutral libs/ui/src/lib/i18n.ts - 100 + 103 @@ -5733,21 +5733,21 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -5769,21 +5769,21 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6149,35 +6149,35 @@ Thailand libs/ui/src/lib/i18n.ts - 91 + 94 India libs/ui/src/lib/i18n.ts - 82 + 84 Austria libs/ui/src/lib/i18n.ts - 74 + 75 Poland libs/ui/src/lib/i18n.ts - 87 + 89 Italy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6219,21 +6219,21 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 New Zealand libs/ui/src/lib/i18n.ts - 86 + 88 Netherlands libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6268,21 +6268,21 @@ Romania libs/ui/src/lib/i18n.ts - 88 + 90 Germany libs/ui/src/lib/i18n.ts - 81 + 83 United States libs/ui/src/lib/i18n.ts - 93 + 96 @@ -6296,7 +6296,7 @@ Belgium libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6310,28 +6310,28 @@ Czech Republic libs/ui/src/lib/i18n.ts - 78 + 80 Australia libs/ui/src/lib/i18n.ts - 73 + 74 South Africa libs/ui/src/lib/i18n.ts - 89 + 92 Bulgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6345,14 +6345,14 @@ Finland libs/ui/src/lib/i18n.ts - 79 + 81 France libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6632,7 +6632,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -6891,13 +6891,6 @@ 57 - - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - AI prompt has been copied to the clipboard @@ -7021,6 +7014,41 @@ 378 + + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + + + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 3f87d805b..15f8c9d83 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2336,7 +2336,7 @@ libs/ui/src/lib/i18n.ts - 98 + 101 @@ -2348,7 +2348,7 @@ libs/ui/src/lib/i18n.ts - 99 + 102 @@ -4708,7 +4708,7 @@ 顶部 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 197 + 215 @@ -4716,7 +4716,7 @@ 底部 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 246 + 264 @@ -4724,7 +4724,7 @@ 投资组合演变 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 299 + 317 @@ -4732,7 +4732,7 @@ 投资时间表 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 326 + 344 @@ -4740,7 +4740,7 @@ 当前连胜 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 347 + 365 @@ -4748,7 +4748,7 @@ 最长连续纪录 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 356 + 374 @@ -4756,7 +4756,7 @@ 股息时间表 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 383 + 401 @@ -5416,7 +5416,7 @@ libs/ui/src/lib/i18n.ts - 90 + 93 @@ -5860,7 +5860,7 @@ 日本 libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6144,7 +6144,7 @@ 极度恐惧 libs/ui/src/lib/i18n.ts - 96 + 99 @@ -6152,7 +6152,7 @@ 极度贪婪 libs/ui/src/lib/i18n.ts - 97 + 100 @@ -6160,7 +6160,7 @@ 中性的 libs/ui/src/lib/i18n.ts - 100 + 103 @@ -6300,7 +6300,7 @@ 绝对货币表现 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 103 + 121 @@ -6308,7 +6308,7 @@ 绝对净性能 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 150 + 168 @@ -6316,7 +6316,7 @@ 绝对资产绩效 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 60 + 78 @@ -6340,7 +6340,7 @@ 资产绩效 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 81 + 99 @@ -6348,7 +6348,7 @@ 净绩效 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + 187 @@ -6356,7 +6356,7 @@ 货币表现 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 127 + 145 @@ -6868,7 +6868,7 @@ Australia libs/ui/src/lib/i18n.ts - 73 + 74 @@ -6876,7 +6876,7 @@ Austria libs/ui/src/lib/i18n.ts - 74 + 75 @@ -6884,7 +6884,7 @@ Belgium libs/ui/src/lib/i18n.ts - 75 + 76 @@ -6892,7 +6892,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6900,7 +6900,7 @@ Canada libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6908,7 +6908,7 @@ Czech Republic libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6916,7 +6916,7 @@ Finland libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6924,7 +6924,7 @@ France libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6932,7 +6932,7 @@ Germany libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6940,7 +6940,7 @@ India libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6948,7 +6948,7 @@ Italy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6956,7 +6956,7 @@ Netherlands libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6964,7 +6964,7 @@ New Zealand libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6972,7 +6972,7 @@ Poland libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6980,7 +6980,7 @@ Romania libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6988,7 +6988,7 @@ South Africa libs/ui/src/lib/i18n.ts - 89 + 92 @@ -6996,7 +6996,7 @@ Thailand libs/ui/src/lib/i18n.ts - 91 + 94 @@ -7004,7 +7004,7 @@ United States libs/ui/src/lib/i18n.ts - 93 + 96 @@ -7348,7 +7348,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 92 + 95 @@ -7625,14 +7625,6 @@ 153 - - Copy AI prompt to clipboard - Copy AI prompt to clipboard - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 27 - - Link has been copied to the clipboard Link has been copied to the clipboard @@ -7765,6 +7757,46 @@ 378 + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 28 + + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 44 + + + + Armenia + Armenia + + libs/ui/src/lib/i18n.ts + 73 + + + + British Virgin Islands + British Virgin Islands + + libs/ui/src/lib/i18n.ts + 77 + + + + Singapore + Singapore + + libs/ui/src/lib/i18n.ts + 91 + + From ff73e7e0ee364701501d0198e995ff2b9f3e46b8 Mon Sep 17 00:00:00 2001 From: Tobias Kugel <78074722+tobikugel@users.noreply.github.com> Date: Fri, 7 Mar 2025 17:34:29 -0300 Subject: [PATCH 124/164] Feature/adapt style of X-ray rule to summary (#4394) * Adapt style of X-ray rule to summary * Update changelog --- CHANGELOG.md | 1 + .../app/components/rule/rule.component.scss | 2 +- .../portfolio/x-ray/x-ray-page.component.html | 63 ++++++++++++++----- .../portfolio/x-ray/x-ray-page.component.scss | 14 +++++ 4 files changed, 65 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45af8de6b..5c9bda697 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the style of the summary on the _X-ray_ page - Improved the language localization for German (`de`) ## 2.144.0 - 2025-03-06 diff --git a/apps/client/src/app/components/rule/rule.component.scss b/apps/client/src/app/components/rule/rule.component.scss index 54ddce823..adb081abc 100644 --- a/apps/client/src/app/components/rule/rule.component.scss +++ b/apps/client/src/app/components/rule/rule.component.scss @@ -2,7 +2,7 @@ display: block; .icon-container { - background-color: rgba(var(--dark-primary-text), 0.05); + background-color: rgba(var(--palette-foreground-base), 0.02); border-radius: 0.25rem; height: 2rem; diff --git a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html index 6ec5722b7..24ca0f474 100644 --- a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html +++ b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html @@ -7,23 +7,58 @@ risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy.

    -

    +

    @if (isLoading) { - +
    + + +
    } @else { - {{ statistics?.rulesFulfilledCount }} - out of - {{ statistics?.rulesActiveCount }} - rules align with your portfolio. +
    + @if ( + statistics?.rulesActiveCount === 0 || + statistics?.rulesFulfilledCount === 0 + ) { + + } @else if ( + statistics?.rulesFulfilledCount === statistics?.rulesActiveCount + ) { + + } @else { + + } +
    +
    + {{ statistics?.rulesFulfilledCount }} + out of + {{ statistics?.rulesActiveCount }} + rules align with your portfolio. +
    } -

    +
    Date: Sat, 8 Mar 2025 08:36:27 +0100 Subject: [PATCH 125/164] Update locales (#4411) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.de.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.es.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.fr.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.it.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.nl.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.pl.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.pt.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.tr.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.uk.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.xlf | 20 ++++++++++---------- apps/client/src/locales/messages.zh.xlf | 20 ++++++++++---------- 12 files changed, 120 insertions(+), 120 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 3dc8d56f3..24df1cef4 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2603,7 +2603,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -2975,7 +2975,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -5243,7 +5243,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5251,7 +5251,7 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7035,7 +7035,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7437,7 +7437,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7565,7 +7565,7 @@ out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7573,7 +7573,7 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7589,7 +7589,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7645,7 +7645,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 962399d06..5f3f0b8e5 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1242,7 +1242,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -3758,7 +3758,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -5903,7 +5903,7 @@ Währungsklumpenrisiken apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5911,7 +5911,7 @@ Kontoklumpenrisiken apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7035,7 +7035,7 @@ Inaktiv apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7437,7 +7437,7 @@ Wirtschaftsraumklumpenrisiken apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7565,7 +7565,7 @@ von apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7573,7 +7573,7 @@ Regeln werden von Ihrem Portfolio erfüllt. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7589,7 +7589,7 @@ Anlageklasseklumpenrisiken apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7645,7 +7645,7 @@ Regionale Marktklumpenrisiken apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 0fca2e9e9..15254d8f2 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1243,7 +1243,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -3759,7 +3759,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -5904,7 +5904,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5912,7 +5912,7 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7036,7 +7036,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7438,7 +7438,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7566,7 +7566,7 @@ out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7574,7 +7574,7 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7590,7 +7590,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7646,7 +7646,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 244d0c494..e249579de 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1586,7 +1586,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -3758,7 +3758,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -5903,7 +5903,7 @@ Risques de change apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5911,7 +5911,7 @@ Risques liés aux regroupements de comptes apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7035,7 +7035,7 @@ Inactif apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7437,7 +7437,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7565,7 +7565,7 @@ out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7573,7 +7573,7 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7589,7 +7589,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7645,7 +7645,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 940c52abe..bf05d1e07 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1243,7 +1243,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -3759,7 +3759,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -5904,7 +5904,7 @@ Rischio di Concentrazione Valutario apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5912,7 +5912,7 @@ Rischi di Concentrazione dei Conti apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7036,7 +7036,7 @@ Inattivo apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7438,7 +7438,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7566,7 +7566,7 @@ out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7574,7 +7574,7 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7590,7 +7590,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7646,7 +7646,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index d43fae4d6..d6678c99a 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1242,7 +1242,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -3758,7 +3758,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -5903,7 +5903,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5911,7 +5911,7 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7035,7 +7035,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7437,7 +7437,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7565,7 +7565,7 @@ out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7573,7 +7573,7 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7589,7 +7589,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7645,7 +7645,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index b6476dd9b..485c86d7c 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2587,7 +2587,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -2635,7 +2635,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -4779,7 +4779,7 @@ Ryzyko związane z klastrem walutowym apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -4787,7 +4787,7 @@ Ryzyko związane z klastrem kont apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7035,7 +7035,7 @@ Nieaktywny apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7437,7 +7437,7 @@ Ryzyko związane z klastrem rynków gospodarczych apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7565,7 +7565,7 @@ poza apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7573,7 +7573,7 @@ zasady zgodne z Twoim portfelem. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7589,7 +7589,7 @@ Ryzyko klastra klasy aktywów apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7645,7 +7645,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 6f2e546f8..4c4a763fb 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1466,7 +1466,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -3758,7 +3758,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -5903,7 +5903,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5911,7 +5911,7 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7035,7 +7035,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7437,7 +7437,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7565,7 +7565,7 @@ out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7573,7 +7573,7 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7589,7 +7589,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7645,7 +7645,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 3b2927d10..c84ddb5f1 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2471,7 +2471,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -2627,7 +2627,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -5903,7 +5903,7 @@ Kur Kümelenme Riskleri (Currency Cluster Risks) apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5911,7 +5911,7 @@ Hesap Kümelenme Riski (Account Cluster Risks) apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7035,7 +7035,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7437,7 +7437,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7565,7 +7565,7 @@ out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7573,7 +7573,7 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7589,7 +7589,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7645,7 +7645,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index c192795af..0ac3b347b 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2731,7 +2731,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -3071,7 +3071,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -5527,7 +5527,7 @@ з apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -5535,7 +5535,7 @@ правила узгоджуються з вашим портфелем. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -5543,7 +5543,7 @@ Ризики зосередження валюти apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -5551,7 +5551,7 @@ Ризики зосередження класу активів apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -5559,7 +5559,7 @@ Ризики зосередження рахунків apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -5567,7 +5567,7 @@ Ризики зосередження економічного ринку apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -5575,7 +5575,7 @@ Неактивний apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7645,7 +7645,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 7dc410df5..4241f4601 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2422,7 +2422,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -2465,7 +2465,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -4385,14 +4385,14 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 Account Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -6380,7 +6380,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -6727,7 +6727,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -6846,14 +6846,14 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -6867,7 +6867,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -6916,7 +6916,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 15f8c9d83..3d07023d9 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2596,7 +2596,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 178 + 213 @@ -2644,7 +2644,7 @@ apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 34 + 69 @@ -4788,7 +4788,7 @@ 货币集群风险 apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + 93 @@ -4796,7 +4796,7 @@ 账户集群风险 apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 106 + 141 @@ -7036,7 +7036,7 @@ Inactive apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 197 + 232 @@ -7438,7 +7438,7 @@ Economic Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 130 + 165 @@ -7566,7 +7566,7 @@ out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 22 + 56 @@ -7574,7 +7574,7 @@ rules align with your portfolio. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 24 + 58 @@ -7590,7 +7590,7 @@ Asset Class Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 82 + 117 @@ -7646,7 +7646,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 154 + 189 From bdde9dd314c96c6460030aaba43a3452aa3b616d Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sun, 9 Mar 2025 03:33:47 +0700 Subject: [PATCH 126/164] Task/upgrade to simplewebauthn version 13.1 (#4407) * Upgrade to simplewebauthn version 13.1 * Update changelog --- CHANGELOG.md | 4 ++ apps/api/src/app/auth/web-auth.service.ts | 33 ++++++++------ .../src/app/services/web-authn.service.ts | 6 +-- package-lock.json | 43 +++++-------------- package.json | 5 +-- 5 files changed, 39 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c9bda697..c7006932f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## 2.144.0 - 2025-03-06 +### Changed + +- Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `9.0` to `13.1` + ### Fixed - Fixed the missing import functionality on the non-empty activities page diff --git a/apps/api/src/app/auth/web-auth.service.ts b/apps/api/src/app/auth/web-auth.service.ts index 2f8dd1018..5678ef7fe 100644 --- a/apps/api/src/app/auth/web-auth.service.ts +++ b/apps/api/src/app/auth/web-auth.service.ts @@ -24,6 +24,7 @@ import { verifyRegistrationResponse, VerifyRegistrationResponseOpts } from '@simplewebauthn/server'; +import { isoBase64URL, isoUint8Array } from '@simplewebauthn/server/helpers'; import { AssertionCredentialJSON, @@ -54,10 +55,9 @@ export class WebAuthService { const opts: GenerateRegistrationOptionsOpts = { rpName: 'Ghostfolio', rpID: this.rpID, - userID: user.id, + userID: isoUint8Array.fromUTF8String(user.id), userName: '', timeout: 60000, - attestationType: 'indirect', authenticatorSelection: { authenticatorAttachment: 'platform', requireResidentKey: false, @@ -111,11 +111,17 @@ export class WebAuthService { where: { userId: user.id } }); if (registrationInfo && verified) { - const { counter, credentialID, credentialPublicKey } = registrationInfo; + const { + credential: { + counter, + id: credentialId, + publicKey: credentialPublicKey + } + } = registrationInfo; - let existingDevice = devices.find( - (device) => device.credentialId === credentialID - ); + let existingDevice = devices.find((device) => { + return isoBase64URL.fromBuffer(device.credentialId) === credentialId; + }); if (!existingDevice) { /** @@ -123,7 +129,7 @@ export class WebAuthService { */ existingDevice = await this.deviceService.createAuthDevice({ counter, - credentialId: Buffer.from(credentialID), + credentialId: Buffer.from(credentialId), credentialPublicKey: Buffer.from(credentialPublicKey), User: { connect: { id: user.id } } }); @@ -148,9 +154,8 @@ export class WebAuthService { const opts: GenerateAuthenticationOptionsOpts = { allowCredentials: [ { - id: device.credentialId, - transports: ['internal'], - type: 'public-key' + id: isoBase64URL.fromBuffer(device.credentialId), + transports: ['internal'] } ], rpID: this.rpID, @@ -187,10 +192,10 @@ export class WebAuthService { let verification: VerifiedAuthenticationResponse; try { const opts: VerifyAuthenticationResponseOpts = { - authenticator: { - credentialID: device.credentialId, - credentialPublicKey: device.credentialPublicKey, - counter: device.counter + credential: { + counter: device.counter, + id: isoBase64URL.fromBuffer(device.credentialId), + publicKey: device.credentialPublicKey }, expectedChallenge: `${user.authChallenge}`, expectedOrigin: this.expectedOrigin, diff --git a/apps/client/src/app/services/web-authn.service.ts b/apps/client/src/app/services/web-authn.service.ts index c5e186362..76352cb7b 100644 --- a/apps/client/src/app/services/web-authn.service.ts +++ b/apps/client/src/app/services/web-authn.service.ts @@ -45,7 +45,7 @@ export class WebAuthnService { return of(null); }), switchMap((attOps) => { - return startRegistration(attOps); + return startRegistration({ optionsJSON: attOps }); }), switchMap((credential) => { return this.http.post( @@ -89,8 +89,8 @@ export class WebAuthnService { { deviceId } ) .pipe( - switchMap((requestOptionsJSON) => { - return startAuthentication(requestOptionsJSON); + switchMap((optionsJSON) => { + return startAuthentication({ optionsJSON }); }), switchMap((credential) => { return this.http.post<{ authToken: string }>( diff --git a/package-lock.json b/package-lock.json index cfda8ce42..b03084f50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,8 +41,8 @@ "@nestjs/schedule": "4.1.2", "@nestjs/serve-static": "4.0.2", "@prisma/client": "6.4.1", - "@simplewebauthn/browser": "9.0.1", - "@simplewebauthn/server": "9.0.3", + "@simplewebauthn/browser": "13.1.0", + "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "5.4.0", "alphavantage": "2.2.0", "big.js": "6.2.2", @@ -120,7 +120,6 @@ "@nx/web": "20.3.2", "@nx/workspace": "20.3.2", "@schematics/angular": "19.0.6", - "@simplewebauthn/types": "9.0.1", "@storybook/addon-essentials": "8.4.7", "@storybook/addon-interactions": "8.4.7", "@storybook/angular": "8.4.7", @@ -9225,18 +9224,15 @@ } }, "node_modules/@simplewebauthn/browser": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-9.0.1.tgz", - "integrity": "sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw==", - "license": "MIT", - "dependencies": { - "@simplewebauthn/types": "^9.0.1" - } + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.1.0.tgz", + "integrity": "sha512-WuHZ/PYvyPJ9nxSzgHtOEjogBhwJfC8xzYkPC+rR/+8chl/ft4ngjiK8kSU5HtRJfczupyOh33b25TjYbvwAcg==", + "license": "MIT" }, "node_modules/@simplewebauthn/server": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.3.tgz", - "integrity": "sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-13.1.1.tgz", + "integrity": "sha512-1hsLpRHfSuMB9ee2aAdh0Htza/X3f4djhYISrggqGe3xopNjOcePiSDkDDoPzDYaaMCrbqGP1H2TYU7bgL9PmA==", "license": "MIT", "dependencies": { "@hexagon/base64": "^1.1.27", @@ -9245,29 +9241,12 @@ "@peculiar/asn1-ecc": "^2.3.8", "@peculiar/asn1-rsa": "^2.3.8", "@peculiar/asn1-schema": "^2.3.8", - "@peculiar/asn1-x509": "^2.3.8", - "@simplewebauthn/types": "^9.0.1", - "cross-fetch": "^4.0.0" + "@peculiar/asn1-x509": "^2.3.8" }, "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@simplewebauthn/server/node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" + "node": ">=20.0.0" } }, - "node_modules/@simplewebauthn/types": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz", - "integrity": "sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==", - "license": "MIT" - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", diff --git a/package.json b/package.json index 4ca628470..ce4ce4f2a 100644 --- a/package.json +++ b/package.json @@ -87,8 +87,8 @@ "@nestjs/schedule": "4.1.2", "@nestjs/serve-static": "4.0.2", "@prisma/client": "6.4.1", - "@simplewebauthn/browser": "9.0.1", - "@simplewebauthn/server": "9.0.3", + "@simplewebauthn/browser": "13.1.0", + "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "5.4.0", "alphavantage": "2.2.0", "big.js": "6.2.2", @@ -166,7 +166,6 @@ "@nx/web": "20.3.2", "@nx/workspace": "20.3.2", "@schematics/angular": "19.0.6", - "@simplewebauthn/types": "9.0.1", "@storybook/addon-essentials": "8.4.7", "@storybook/addon-interactions": "8.4.7", "@storybook/angular": "8.4.7", From d346f6b9fabd7cf1e2cbbf106f6517067520ef49 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 8 Mar 2025 21:36:13 +0100 Subject: [PATCH 127/164] Bugfix/fix changelog (#4412) * Update changelog --- CHANGELOG.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7006932f..6b5c01483 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,13 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the style of the summary on the _X-ray_ page - Improved the language localization for German (`de`) +- Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `9.0` to `13.1` ## 2.144.0 - 2025-03-06 -### Changed - -- Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `9.0` to `13.1` - ### Fixed - Fixed the missing import functionality on the non-empty activities page From 25d0c1c8a04df9275a7e341a2a00b58b287271c5 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 9 Mar 2025 10:22:32 +0100 Subject: [PATCH 128/164] Bugfix/fix symbols in API page (#4408) * Fix symbols --- apps/client/src/app/pages/api/api-page.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/app/pages/api/api-page.component.ts b/apps/client/src/app/pages/api/api-page.component.ts index 039bf8691..350650060 100644 --- a/apps/client/src/app/pages/api/api-page.component.ts +++ b/apps/client/src/app/pages/api/api-page.component.ts @@ -40,8 +40,8 @@ export class GfApiPageComponent implements OnInit { this.apiKey = prompt($localize`Please enter your Ghostfolio API key:`); this.dividends$ = this.fetchDividends({ symbol: 'KO' }); - this.historicalData$ = this.fetchHistoricalData({ symbol: 'AAPL.US' }); - this.quotes$ = this.fetchQuotes({ symbols: ['AAPL.US', 'VOO.US'] }); + this.historicalData$ = this.fetchHistoricalData({ symbol: 'AAPL' }); + this.quotes$ = this.fetchQuotes({ symbols: ['AAPL', 'VOO.US'] }); this.status$ = this.fetchStatus(); this.symbols$ = this.fetchSymbols({ query: 'apple' }); } From cb1f488eb46728d3462726e7f43ca0c18ac3c7f8 Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Sun, 9 Mar 2025 10:56:39 +0100 Subject: [PATCH 129/164] Feature/extend export by account balances (#4390) * Extend export by account balances * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/account/account.service.ts | 20 ++++++++++++++++--- apps/api/src/app/export/export.service.ts | 5 +++++ .../src/lib/interfaces/export.interface.ts | 4 +++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b5c01483..05daaabf2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Extended the export functionality by the account balances - Added a _Copy portfolio data to clipboard for AI prompt_ action to the analysis page (experimental) ### Changed diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index df369859b..aab4c0766 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -7,7 +7,13 @@ import { Filter } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; -import { Account, Order, Platform, Prisma } from '@prisma/client'; +import { + Account, + AccountBalance, + Order, + Platform, + Prisma +} from '@prisma/client'; import { Big } from 'big.js'; import { format } from 'date-fns'; import { groupBy } from 'lodash'; @@ -56,13 +62,19 @@ export class AccountService { orderBy?: Prisma.AccountOrderByWithRelationInput; }): Promise< (Account & { + balances?: AccountBalance[]; Order?: Order[]; Platform?: Platform; })[] > { const { include = {}, skip, take, cursor, where, orderBy } = params; - include.balances = { orderBy: { date: 'desc' }, take: 1 }; + const isBalancesIncluded = !!include.balances; + + include.balances = { + orderBy: { date: 'desc' }, + ...(isBalancesIncluded ? {} : { take: 1 }) + }; const accounts = await this.prismaService.account.findMany({ cursor, @@ -76,7 +88,9 @@ export class AccountService { return accounts.map((account) => { account = { ...account, balance: account.balances[0]?.value ?? 0 }; - delete account.balances; + if (!isBalancesIncluded) { + delete account.balances; + } return account; }); diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index c6c24d6af..8b9d2c56c 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -31,6 +31,7 @@ export class ExportService { const accounts = ( await this.accountService.accounts({ include: { + balances: true, Platform: true }, orderBy: { @@ -41,6 +42,7 @@ export class ExportService { ).map( ({ balance, + balances, comment, currency, id, @@ -55,6 +57,9 @@ export class ExportService { return { balance, + balances: balances.map(({ date, value }) => { + return { date: date.toISOString(), value }; + }), comment, currency, id, diff --git a/libs/common/src/lib/interfaces/export.interface.ts b/libs/common/src/lib/interfaces/export.interface.ts index 14a017428..0772159e6 100644 --- a/libs/common/src/lib/interfaces/export.interface.ts +++ b/libs/common/src/lib/interfaces/export.interface.ts @@ -1,7 +1,9 @@ import { Account, Order, Platform, Tag } from '@prisma/client'; export interface Export { - accounts: Omit[]; + accounts: (Omit & { + balances: { date: string; value: number }[]; + })[]; activities: (Omit< Order, | 'accountUserId' From 52081d6741cafc8fb87ffa83d062ed1d577978a8 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 9 Mar 2025 12:07:23 +0100 Subject: [PATCH 130/164] Bugfix/exclude Storybook from html template middleware (#4414) * Exclude storybook * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/middlewares/html-template.middleware.ts | 1 + 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05daaabf2..f153f2831 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for German (`de`) - Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `9.0` to `13.1` +### Fixed + +- Fixed an issue with serving _Storybook_ + ## 2.144.0 - 2025-03-06 ### Fixed diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index 6c929c388..b6c8f2e54 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -129,6 +129,7 @@ export const HtmlTemplateMiddleware = async ( if ( path.startsWith('/api/') || + path.startsWith('/development/storybook') || isFileRequest(path) || !environment.production ) { From 6bdfd8984ff9614a1d452a14bc39b27a669defe1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 9 Mar 2025 12:28:33 +0100 Subject: [PATCH 131/164] Bugfix/fix fetching dividend and historical market data in Financial Modeling Prep service (#4416) * Add default values * Update changelog --- CHANGELOG.md | 2 ++ .../financial-modeling-prep.service.ts | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f153f2831..579536ef7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed an issue to get dividends in the _Financial Modeling Prep_ service +- Fixed an issue to get historical market data in the _Financial Modeling Prep_ service - Fixed an issue with serving _Storybook_ ## 2.144.0 - 2025-03-06 diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index 2d42fe21c..6a3d0d41f 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -244,7 +244,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { [date: string]: IDataProviderHistoricalResponse; } = {}; - const { historical } = await fetch( + const { historical = [] } = await fetch( `${this.URL}/historical-price-full/stock_dividend/${symbol}?apikey=${this.apiKey}`, { signal: AbortSignal.timeout(requestTimeout) @@ -305,7 +305,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { ? addYears(currentFrom, MAX_YEARS_PER_REQUEST) : to; - const { historical } = await fetch( + const { historical = [] } = await fetch( `${this.URL}/historical-price-full/${symbol}?apikey=${this.apiKey}&from=${format(currentFrom, DATE_FORMAT)}&to=${format(currentTo, DATE_FORMAT)}`, { signal: AbortSignal.timeout(requestTimeout) From 7ca07202447e3f86c4315599dfc60bdd18d78fae Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 9 Mar 2025 12:31:11 +0100 Subject: [PATCH 132/164] Release 2.145.0 (#4417) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 579536ef7..bc5eba78f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.145.0 - 2025-03-09 ### Added diff --git a/package-lock.json b/package-lock.json index b03084f50..3d147aafd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.144.0", + "version": "2.145.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.144.0", + "version": "2.145.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index ce4ce4f2a..430621aed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.144.0", + "version": "2.145.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From feea2ced8279fa851e0a7af7ea62ac5f7e169c11 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 10 Mar 2025 17:40:38 +0100 Subject: [PATCH 133/164] Feature/update certificate for development (#4418) * Update certificate for development * Extend documentation --- DEVELOPMENT.md | 9 +++++++ apps/client/localhost.cert | 34 +++++++++++++------------ apps/client/localhost.pem | 52 +++++++++++++++++++------------------- 3 files changed, 53 insertions(+), 42 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 9e32b56eb..cea43095d 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -101,3 +101,12 @@ https://www.prisma.io/docs/concepts/components/prisma-migrate/db-push Run `npm run prisma migrate dev --name added_job_title` https://www.prisma.io/docs/concepts/components/prisma-migrate#getting-started-with-prisma-migrate + +## SSL + +Generate `localhost.cert` and `localhost.pem` files. + +``` +openssl req -x509 -newkey rsa:2048 -nodes -keyout apps/client/localhost.pem -out apps/client/localhost.cert -days 365 \ + -subj "/C=CH/ST=State/L=City/O=Organization/OU=Unit/CN=localhost" +``` diff --git a/apps/client/localhost.cert b/apps/client/localhost.cert index 12f31dd27..882ddd2a4 100644 --- a/apps/client/localhost.cert +++ b/apps/client/localhost.cert @@ -1,18 +1,20 @@ -----BEGIN CERTIFICATE----- -MIIC5TCCAc2gAwIBAgIJAJAMHOFnJ6oyMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV -BAMMCWxvY2FsaG9zdDAeFw0yNDAyMjcxNTQ2MzFaFw0yNDAzMjgxNTQ2MzFaMBQx -EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAJ0hRjViikEKVIyukXR4CfuYVvFEFzB6AwAQ9Jrz2MseqpLacLTXFFAS54mp -iDuqPBzs9ta40mlSrqSBuAWKikpW5kTNnmqUnDZ6iSJezbYWx9YyULGqqb1q3C4/ -5pH9m6NHJ+2uaUNKlDxYNKbntqs3drQEdxH9yv672Z53nvogTcf9jz6zjutEQGSV -HgVkCTTQmzf3+3st+VJ5D8JeYFR+tpZ6yleqgXFaTMtPZRfKLvTkQ+KeyCJLnsUJ -BQvdCKI0PGsG6d6ygXFmSePolD9KW3VTKKDPCsndID89vAnRWDj9UhzvycxmKpcF -GrUPH5+Pis1PM1R7OnAvnFygnyECAwEAAaM6MDgwFAYDVR0RBA0wC4IJbG9jYWxo -b3N0MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0B -AQsFAAOCAQEAOdzrY3RTAPnBVAd3/GKIEkielYyOgKPnvd+RcOB+je8cXZY+vaxX -uEFP0526G00+kRZ2Tx9t0SmjoSpwg3lHUPMko0dIxgRlqISDAohdrEptHpcVujsD -ak88LLnAurr60JNjWX2wbEoJ18KLtqGSnATdmCgKwDPIN5a7+ssp44BGyzH6VYCg -wV3VjJl0pp4C5M0Jfu0p1FrQjzIVhgqR7JFYmvqIogWrGwYAQK/3XRXq8t48J5X3 -IsfWiLAA2ZdCoWAnZ6PAGBOoGivtkJm967pHjd/28qYY6mQo4sN2ksEOjx6/YslF -2mOJdLV/DzqoggUsTpPEG0dRhzQLTGHKDQ== +MIIDSDCCAjACCQCQ2ForVhz+uDANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJD +SDEOMAwGA1UECAwFU3RhdGUxDTALBgNVBAcMBENpdHkxFTATBgNVBAoMDE9yZ2Fu +aXphdGlvbjENMAsGA1UECwwEVW5pdDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1 +MDMwOTE2MzQxM1oXDTI2MDMwOTE2MzQxM1owZjELMAkGA1UEBhMCQ0gxDjAMBgNV +BAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5MRUwEwYDVQQKDAxPcmdhbml6YXRpb24x +DTALBgNVBAsMBFVuaXQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMkJRKPgV8NDcoIakPc7sZVXQ9VK2PGb8+lF/1Lv +NcIZpD40+p4DzuEw0bjRn17IDClyLMaLbZNtIyTPSkFaffL+rJ0JvnKdG50s+HId +YNuCwKkgHg4hTXFzOPpT3HMG3UxyEwFOm25GMFiikfT96ukMAAkanMqYKZQOClRU +Cw4LP3g0Oks58obbRy4Wltp88K8LJrR+j81+AjElTIGXHhChXzV/NjJ14TMNy5hZ +lwV4xUSwvNqOvWGMIR7J77fINF130ghTSnvzCS52dCeom2I4Lvncz3m37lDttCOs +Wm/i651ro7pwFEs/lJmrnFHPtph2ayPcHBmrQCgLc5xMUMcCAwEAATANBgkqhkiG +9w0BAQsFAAOCAQEAhRA1/+Gl2VH34yN/FvrE5cY0W4ghSCuTdK9pGeo8AcN+TScU +7O+hVsEwZDrYKuDvG8Ab//A+uv5gbfGbYPJVIdJ3Q8HKijNZmbwAgANJU/c0WwOx +XBQ9mCzWRcJxQeUUgh4DT4lZCOfR5pIvAJpKScTcF/yp5gOgrgJH1GHFEYYPoXWO +ezPPMwCNbfamUPlZZnHu74fUrFrDPI9c/YSu8Ex/LegZXJAEzA+8I0g64rjGtzJp +fkRDyQcBuT5SVa+USBlALQmdIuT/fN6R729DcGzvV8JqdoG9sLra4hrRCn3+A3c9 +izZguW1BQNQ2N7II6QCDnWkdUFSQCiQunX/xsg== -----END CERTIFICATE----- diff --git a/apps/client/localhost.pem b/apps/client/localhost.pem index dc2a7ff5a..05a480779 100644 --- a/apps/client/localhost.pem +++ b/apps/client/localhost.pem @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCdIUY1YopBClSM -rpF0eAn7mFbxRBcwegMAEPSa89jLHqqS2nC01xRQEueJqYg7qjwc7PbWuNJpUq6k -gbgFiopKVuZEzZ5qlJw2eokiXs22FsfWMlCxqqm9atwuP+aR/ZujRyftrmlDSpQ8 -WDSm57arN3a0BHcR/cr+u9med576IE3H/Y8+s47rREBklR4FZAk00Js39/t7LflS -eQ/CXmBUfraWespXqoFxWkzLT2UXyi705EPinsgiS57FCQUL3QiiNDxrBunesoFx -Zknj6JQ/Slt1UyigzwrJ3SA/PbwJ0Vg4/VIc78nMZiqXBRq1Dx+fj4rNTzNUezpw -L5xcoJ8hAgMBAAECggEAPU5YOEgELTA8oM8TjV+wdWuQsH2ilpVkSkhTR4nQkh+a -6cU0qDoqgLt/fySYNL9MyPRjso9V+SX7YdAC3paZMjwJh9q57lehQ1g33SMkG+Fz -gs0K0ucFZxQkaB8idN+ANAp1N7UO+ORGRe0cTeqmSNNRCxea5XgiFZVxaPS/IFOR -vVdXS1DulgwHh4H0ljKmkj7jc9zPBSc9ccW5Ml2q4a26Atu4IC/Mlp/DF4GNELbD -ebi9ZOZG33ip2bdhj3WX7NW9GJaaViKtVUpcpR6u+6BfvTXQ6xrqdoxXk9fnPzzf -sSoLPTt8yO4RavP1zQU22PhgIcWudhCiy/2Nv+uLqQKBgQDMPh1/xwdFl8yES8dy -f0xJyCDWPiB+xzGwcOAC90FrNZaqG0WWs3VHE4cilaWjCflvdR6aAEDEY68sZJhl -h+ChT/g61QLMOI+VIDQ1kJXKYgfS/B+BE1PZ0EkuymKFOvbNO8agHodB8CqnZaQh -bLuZaDnZ0JLK4im3KPt70+aKYwKBgQDE8s6xl0SLu+yJLo3VklCRD67Z8/jlvx2t -h3DF6NG8pB3QmvKdJWFKuLAWLGflJwbUW9Pt3hXkc0649KQrtiIYC0ZMh9KMaVCk -WmjS/n2eIUQZ7ZUlwFesi4p4iGynVBavIY8TJ6Y+K3TvsJgXP3IZ96r689PQJo8E -KbSeyYzFqwKBgGQTS4EAlJ+U8bEhMGj51veQCAbyChoUoFRD+n95h6RwbZKMKlzd -MenRt7VKfg6VJJNoX8Y1uYaBEaQ+5i1Zlsdz1718AhLu4+u+C9bzMXIo9ox63TTx -s3RWioVSxVNiwOtvDrQGQWAdvcioFPQLwyA34aDIgiTHDImimxbhjWThAoGAWOqW -Tq9QjxWk0Lpn5ohMP3GpK1VuhasnJvUDARb/uf8ORuPtrOz3Y9jGBvy9W0OnXbCn -mbiugZldbTtl8yYjdl+AuYSIlkPl2I3IzZl/9Shnqp0MvSJ9crT9KzXMeC8Knr6z -7Z30/BR6ksxTngtS5E5grzPt6Qe/gc2ich3kpEkCgYBfBHUhVIKVrDW/8a7U2679 -Wj4i9us/M3iPMxcTv7/ZAg08TEvNBQYtvVQLu0NfDKXx8iGKJJ6evIYgNXVm2sPq -VzSgwGCALi1X0443amZU+mnX+/9RnBqyM+PJU8570mM83jqKlY/BEsi0aqxTioFG -an3xbjjN+Rq9iKLzmPxIMg== +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJCUSj4FfDQ3KC +GpD3O7GVV0PVStjxm/PpRf9S7zXCGaQ+NPqeA87hMNG40Z9eyAwpcizGi22TbSMk +z0pBWn3y/qydCb5ynRudLPhyHWDbgsCpIB4OIU1xczj6U9xzBt1MchMBTptuRjBY +opH0/erpDAAJGpzKmCmUDgpUVAsOCz94NDpLOfKG20cuFpbafPCvCya0fo/NfgIx +JUyBlx4QoV81fzYydeEzDcuYWZcFeMVEsLzajr1hjCEeye+3yDRdd9IIU0p78wku +dnQnqJtiOC753M95t+5Q7bQjrFpv4uuda6O6cBRLP5SZq5xRz7aYdmsj3BwZq0Ao +C3OcTFDHAgMBAAECggEBALJQqDN7QB0QbDb+fWrt5bwDJUXBF+BmZdiZn7jeOJ6r +w8TxlQIneo6/kKYQOP4HDtKMVS7eaRkFCtERlFmXfHPWdSDtjaF3vRCS3OPLLyhF +N8JLnJ0H6PsiKn3PeJAGnK+71yOnp7IOS7+yoyfdOUnwvO9WTZBdmzOZqIvX595R +g7R5yjSYjzFMmaCpyab6kiD7b4bHzDIrB0XuouT2W/fS/i1srwc3eDk78ZyioyiB +g6GDuOwqDfPmkUqKo2oXSoSR8yCwSSdlClc7aOowoNxbsksTDjXf1k02n0lG5MHU +ldCX02WdA0JFW8Os0Ig+YBq7wSkB5oNVt7gEek/MB0ECgYEA+ATkyfX9/5X2kUMY +MatUqKOvLUtyIfHeYUy/Dm+9JlZlrxD0dRAKWhnhRR16v5cwN2RVtEvMDsV1AGHN +e/fh315aAq+I6/eY6syXfkeHHs5UIRPrOlIcp1Ogfg99xpOT0/TZy9bB7lKvtYes +GmKO8n7md1TptdxilSNORI60KvECgYEAz4FX6vH76HgV/seY+vePrj5nFCZnDru7 +16w5LYoHaX0hABJ0qZCqZozdPf9mqM5Ldc8PUbvVsFqXyaHwBAKUsH44a3aLxcXU +JMsQanU5I87SWP/S8Xu2Yxc10L66Oc5VdAeraZvb+wJqTkYKhDYOJVMjyuI/vkAw +fqMPI6wShzcCgYEAndYnb6uf4Eakap9jR0C8mLHKaq3nzVhqaEt6DwrnOf2jqnzE +xbbWj66GoQB4vHLP2YB91kaibwgURJD5PxpqYUdfSvRA08J3S322L0P/5ofyHDbb +7PqSh539thvPtE74tdvNux5Jvoxai9Dyorv0Mri1nF2qefTtu/GC/rg+SlECgYB2 +FaYhhomTVls1/QIat6zlPI/OULhPExineFOljaoAJvwTnW0UXcYKy9jPgjs6jwM0 +TJvsKFdHn5ZHYUdEEO/qrDmRNgn+h0Ddm02BN6pHrVfY2+SAFaXKKBgw7YjugnPw +rrimRdLeuhYi6wrrCBPuu6xftXcO3lp6hnKEG1UD6wKBgEh/C7HQ6cjb7Rr15eRq +2VOgeuz7o2v/OC+jO6yFGRrs2VKoBuJpw/6jx806Cbi2jLEwim21iNYW/2McOWP3 +YUvni7qHXfll8d4sSAuCTA4K/N0MJ/3XbGBPDm/83J2o7uz2GFkQRruruaERvDMF +x26H2i3DOUFzdgbkoNB0ifHd -----END PRIVATE KEY----- From 70cd1a89b513bb58441d1b9f9c23a25cdf0b4816 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 10 Mar 2025 20:45:41 +0100 Subject: [PATCH 134/164] Feature/extend Ghostfolio data provider (#4420) * Extend Ghostfolio data provider --- .../ghostfolio/ghostfolio.controller.ts | 36 ++++++++++ .../ghostfolio/ghostfolio.service.ts | 43 +++++++++++- .../alpha-vantage/alpha-vantage.service.ts | 5 +- .../coingecko/coingecko.service.ts | 5 +- .../eod-historical-data.service.ts | 5 +- .../financial-modeling-prep.service.ts | 38 ++++------- .../ghostfolio/ghostfolio.service.ts | 68 +++++++++++++------ .../google-sheets/google-sheets.service.ts | 5 +- .../interfaces/data-provider.interface.ts | 10 ++- .../data-provider/manual/manual.service.ts | 5 +- .../rapid-api/rapid-api.service.ts | 5 +- .../yahoo-finance/yahoo-finance.service.ts | 5 +- libs/common/src/lib/interfaces/index.ts | 2 + ...tfolio-asset-profile-response.interface.ts | 4 ++ 14 files changed, 165 insertions(+), 71 deletions(-) create mode 100644 libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts diff --git a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts index f3386f8a7..83c7317f0 100644 --- a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts +++ b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts @@ -2,6 +2,7 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorat import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { parseDate } from '@ghostfolio/common/helper'; import { + DataProviderGhostfolioAssetProfileResponse, DataProviderGhostfolioStatusResponse, DividendsResponse, HistoricalResponse, @@ -37,6 +38,41 @@ export class GhostfolioController { @Inject(REQUEST) private readonly request: RequestWithUser ) {} + @Get('asset-profile/:symbol') + @HasPermission(permissions.enableDataProviderGhostfolio) + @UseGuards(AuthGuard('api-key'), HasPermissionGuard) + public async getAssetProfile( + @Param('symbol') symbol: string + ): Promise { + const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); + + if ( + this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests + ) { + throw new HttpException( + getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), + StatusCodes.TOO_MANY_REQUESTS + ); + } + + try { + const assetProfile = await this.ghostfolioService.getAssetProfile({ + symbol + }); + + await this.ghostfolioService.incrementDailyRequests({ + userId: this.request.user.id + }); + + return assetProfile; + } catch { + throw new HttpException( + getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), + StatusCodes.INTERNAL_SERVER_ERROR + ); + } + } + /** * @deprecated */ diff --git a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts index 78685a61b..7281697bd 100644 --- a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts +++ b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts @@ -1,6 +1,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -15,6 +16,7 @@ import { } from '@ghostfolio/common/config'; import { PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS } from '@ghostfolio/common/config'; import { + DataProviderGhostfolioAssetProfileResponse, DataProviderInfo, DividendsResponse, HistoricalResponse, @@ -25,7 +27,7 @@ import { import { UserWithSettings } from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; -import { DataSource } from '@prisma/client'; +import { DataSource, SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; @Injectable() @@ -37,6 +39,44 @@ export class GhostfolioService { private readonly propertyService: PropertyService ) {} + public async getAssetProfile({ + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), + symbol + }: GetAssetProfileParams) { + let result: DataProviderGhostfolioAssetProfileResponse = {}; + + try { + const promises: Promise>[] = []; + + for (const dataProviderService of this.getDataProviderServices()) { + promises.push( + dataProviderService + .getAssetProfile({ + requestTimeout, + symbol + }) + .then((assetProfile) => { + result = { + ...result, + ...assetProfile, + dataSource: DataSource.GHOSTFOLIO + }; + + return assetProfile; + }) + ); + } + + await Promise.all(promises); + + return result; + } catch (error) { + Logger.error(error, 'GhostfolioService'); + + throw error; + } + } + public async getDividends({ from, granularity, @@ -277,6 +317,7 @@ export class GhostfolioService { }); results.items = filteredItems; + return results; } catch (error) { Logger.error(error, 'GhostfolioService'); diff --git a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts index 5c9eee127..606e6b7fd 100644 --- a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts +++ b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts @@ -1,6 +1,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -41,9 +42,7 @@ export class AlphaVantageService implements DataProviderInterface { public async getAssetProfile({ symbol - }: { - symbol: string; - }): Promise> { + }: GetAssetProfileParams): Promise> { return { symbol, dataSource: this.getName() diff --git a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts index fb1fa9b63..d53355b9c 100644 --- a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts +++ b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts @@ -1,6 +1,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -56,9 +57,7 @@ export class CoinGeckoService implements DataProviderInterface { public async getAssetProfile({ symbol - }: { - symbol: string; - }): Promise> { + }: GetAssetProfileParams): Promise> { const response: Partial = { symbol, assetClass: AssetClass.LIQUIDITY, diff --git a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts index e427a830a..376b8f159 100644 --- a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts +++ b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts @@ -1,6 +1,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -51,9 +52,7 @@ export class EodHistoricalDataService implements DataProviderInterface { public async getAssetProfile({ symbol - }: { - symbol: string; - }): Promise> { + }: GetAssetProfileParams): Promise> { const [searchResult] = await this.getSearchResult(symbol); return { diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index 6a3d0d41f..5216ed214 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -2,6 +2,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/con import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -56,10 +57,9 @@ export class FinancialModelingPrepService implements DataProviderInterface { } public async getAssetProfile({ + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbol - }: { - symbol: string; - }): Promise> { + }: GetAssetProfileParams): Promise> { const response: Partial = { symbol, dataSource: this.getName() @@ -70,9 +70,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { const [quote] = await fetch( `${this.URL}/quote/${symbol}?apikey=${this.apiKey}`, { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ).then((res) => res.json()); @@ -84,9 +82,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { const [assetProfile] = await fetch( `${this.URL}/profile/${symbol}?apikey=${this.apiKey}`, { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ).then((res) => res.json()); @@ -100,9 +96,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { const etfCountryWeightings = await fetch( `${this.URL}/etf-country-weightings/${symbol}?apikey=${this.apiKey}`, { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ).then((res) => res.json()); @@ -127,9 +121,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { const [etfInformation] = await fetch( `${this.getUrl({ version: 4 })}/etf-info?symbol=${symbol}&apikey=${this.apiKey}`, { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ).then((res) => res.json()); @@ -140,9 +132,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { const [portfolioDate] = await fetch( `${this.getUrl({ version: 4 })}/etf-holdings/portfolio-date?symbol=${symbol}&apikey=${this.apiKey}`, { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ).then((res) => res.json()); @@ -150,9 +140,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { const etfHoldings = await fetch( `${this.getUrl({ version: 4 })}/etf-holdings?date=${portfolioDate.date}&symbol=${symbol}&apikey=${this.apiKey}`, { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ).then((res) => res.json()); @@ -170,9 +158,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { const etfSectorWeightings = await fetch( `${this.URL}/etf-sector-weightings/${symbol}?apikey=${this.apiKey}`, { - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ).then((res) => res.json()); @@ -211,7 +197,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { if (error?.name === 'AbortError') { message = `RequestError: The operation to get the asset profile for ${symbol} was aborted because the request to the data provider took more than ${( - this.configurationService.get('REQUEST_TIMEOUT') / 1000 + requestTimeout / 1000 ).toFixed(3)} seconds`; } @@ -376,7 +362,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { if (error?.name === 'AbortError') { message = `RequestError: The operation to get the quotes was aborted because the request to the data provider took more than ${( - this.configurationService.get('REQUEST_TIMEOUT') / 1000 + requestTimeout / 1000 ).toFixed(3)} seconds`; } diff --git a/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts b/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts index a674d479a..097464e2f 100644 --- a/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts +++ b/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts @@ -2,6 +2,7 @@ import { environment } from '@ghostfolio/api/environments/environment'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -18,6 +19,7 @@ import { } from '@ghostfolio/common/config'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { + DataProviderGhostfolioAssetProfileResponse, DataProviderInfo, DividendsResponse, HistoricalResponse, @@ -46,21 +48,46 @@ export class GhostfolioService implements DataProviderInterface { } public async getAssetProfile({ + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), symbol - }: { - symbol: string; - }): Promise> { - const { items } = await this.search({ query: symbol }); - const searchResult = items?.[0]; + }: GetAssetProfileParams): Promise> { + let response: DataProviderGhostfolioAssetProfileResponse = {}; - return { - symbol, - assetClass: searchResult?.assetClass, - assetSubClass: searchResult?.assetSubClass, - currency: searchResult?.currency, - dataSource: this.getName(), - name: searchResult?.name - }; + try { + const assetProfile = (await fetch( + `${this.URL}/v1/data-providers/ghostfolio/asset-profile/${symbol}`, + { + headers: await this.getRequestHeaders(), + signal: AbortSignal.timeout(requestTimeout) + } + ).then((res) => + res.json() + )) as DataProviderGhostfolioAssetProfileResponse; + + response = assetProfile; + } catch (error) { + let message = error; + + if (error.name === 'AbortError') { + message = `RequestError: The operation to get the quotes was aborted because the request to the data provider took more than ${( + requestTimeout / 1000 + ).toFixed(3)} seconds`; + } else if (error.response?.statusCode === StatusCodes.TOO_MANY_REQUESTS) { + message = 'RequestError: The daily request limit has been exceeded'; + } else if (error.response?.statusCode === StatusCodes.UNAUTHORIZED) { + if (!error.request?.options?.headers?.authorization?.includes('-')) { + message = + 'RequestError: The provided API key is invalid. Please update it in the Settings section of the Admin Control panel.'; + } else { + message = + 'RequestError: The provided API key has expired. Please request a new one and update it in the Settings section of the Admin Control panel.'; + } + } + + Logger.error(message, 'GhostfolioService'); + } + + return response; } public getDataProviderInfo(): DataProviderInfo { @@ -203,7 +230,7 @@ export class GhostfolioService implements DataProviderInterface { if (error.name === 'AbortError') { message = `RequestError: The operation to get the quotes was aborted because the request to the data provider took more than ${( - this.configurationService.get('REQUEST_TIMEOUT') / 1000 + requestTimeout / 1000 ).toFixed(3)} seconds`; } else if (error.response?.statusCode === StatusCodes.TOO_MANY_REQUESTS) { message = 'RequestError: The daily request limit has been exceeded'; @@ -224,10 +251,13 @@ export class GhostfolioService implements DataProviderInterface { } public getTestSymbol() { - return 'AAPL.US'; + return 'AAPL'; } - public async search({ query }: GetSearchParams): Promise { + public async search({ + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT'), + query + }: GetSearchParams): Promise { let searchResult: LookupResponse = { items: [] }; try { @@ -235,9 +265,7 @@ export class GhostfolioService implements DataProviderInterface { `${this.URL}/v2/data-providers/ghostfolio/lookup?query=${query}`, { headers: await this.getRequestHeaders(), - signal: AbortSignal.timeout( - this.configurationService.get('REQUEST_TIMEOUT') - ) + signal: AbortSignal.timeout(requestTimeout) } ).then((res) => res.json())) as LookupResponse; } catch (error) { @@ -245,7 +273,7 @@ export class GhostfolioService implements DataProviderInterface { if (error.name === 'AbortError') { message = `RequestError: The operation to search for ${query} was aborted because the request to the data provider took more than ${( - this.configurationService.get('REQUEST_TIMEOUT') / 1000 + requestTimeout / 1000 ).toFixed(3)} seconds`; } else if (error.response?.statusCode === StatusCodes.TOO_MANY_REQUESTS) { message = 'RequestError: The daily request limit has been exceeded'; diff --git a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts index f18d670d1..0c466972d 100644 --- a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts +++ b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts @@ -1,6 +1,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -37,9 +38,7 @@ export class GoogleSheetsService implements DataProviderInterface { public async getAssetProfile({ symbol - }: { - symbol: string; - }): Promise> { + }: GetAssetProfileParams): Promise> { return { symbol, dataSource: this.getName() diff --git a/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts b/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts index 5c316aac2..475205a01 100644 --- a/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts +++ b/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts @@ -15,9 +15,7 @@ export interface DataProviderInterface { getAssetProfile({ symbol - }: { - symbol: string; - }): Promise>; + }: GetAssetProfileParams): Promise>; getDataProviderInfo(): DataProviderInfo; @@ -55,6 +53,11 @@ export interface DataProviderInterface { search({ includeIndices, query }: GetSearchParams): Promise; } +export interface GetAssetProfileParams { + requestTimeout?: number; + symbol: string; +} + export interface GetDividendsParams { from: Date; granularity?: Granularity; @@ -79,5 +82,6 @@ export interface GetQuotesParams { export interface GetSearchParams { includeIndices?: boolean; query: string; + requestTimeout?: number; userId?: string; } diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index dfda922c6..331806098 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -1,6 +1,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -43,9 +44,7 @@ export class ManualService implements DataProviderInterface { public async getAssetProfile({ symbol - }: { - symbol: string; - }): Promise> { + }: GetAssetProfileParams): Promise> { const assetProfile: Partial = { symbol, dataSource: this.getName() diff --git a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts index 4c9bb2717..7762be426 100644 --- a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts +++ b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts @@ -1,6 +1,7 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -33,9 +34,7 @@ export class RapidApiService implements DataProviderInterface { public async getAssetProfile({ symbol - }: { - symbol: string; - }): Promise> { + }: GetAssetProfileParams): Promise> { return { symbol, dataSource: this.getName() diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index 27da18ab0..72ae1ff97 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -2,6 +2,7 @@ import { CryptocurrencyService } from '@ghostfolio/api/services/cryptocurrency/c import { YahooFinanceDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service'; import { DataProviderInterface, + GetAssetProfileParams, GetDividendsParams, GetHistoricalParams, GetQuotesParams, @@ -43,9 +44,7 @@ export class YahooFinanceService implements DataProviderInterface { public async getAssetProfile({ symbol - }: { - symbol: string; - }): Promise> { + }: GetAssetProfileParams): Promise> { return this.yahooFinanceDataEnhancerService.getAssetProfile(symbol); } diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index 7ad4948dc..3dcbbb32a 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -41,6 +41,7 @@ import type { AccountBalancesResponse } from './responses/account-balances-respo import type { AiPromptResponse } from './responses/ai-prompt-response.interface'; import type { ApiKeyResponse } from './responses/api-key-response.interface'; import type { BenchmarkResponse } from './responses/benchmark-response.interface'; +import type { DataProviderGhostfolioAssetProfileResponse } from './responses/data-provider-ghostfolio-asset-profile-response.interface'; import type { DataProviderGhostfolioStatusResponse } from './responses/data-provider-ghostfolio-status-response.interface'; import type { DividendsResponse } from './responses/dividends-response.interface'; import type { ResponseError } from './responses/errors.interface'; @@ -83,6 +84,7 @@ export { BenchmarkProperty, BenchmarkResponse, Coupon, + DataProviderGhostfolioAssetProfileResponse, DataProviderGhostfolioStatusResponse, DataProviderInfo, DividendsResponse, diff --git a/libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts b/libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts new file mode 100644 index 000000000..7fd0314fb --- /dev/null +++ b/libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts @@ -0,0 +1,4 @@ +import { SymbolProfile } from '@prisma/client'; + +export interface DataProviderGhostfolioAssetProfileResponse + extends Partial {} From 9abc4af203f2113062586a14cd0a4c5483d37618 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 10 Mar 2025 20:47:27 +0100 Subject: [PATCH 135/164] Release 2.145.1 (#4422) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc5eba78f..2257cf608 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 2.145.0 - 2025-03-09 +## 2.145.1 - 2025-03-10 ### Added diff --git a/package-lock.json b/package-lock.json index 3d147aafd..5fbff830c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.145.0", + "version": "2.145.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.145.0", + "version": "2.145.1", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 430621aed..56d6d6d2f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.145.0", + "version": "2.145.1", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From a137bbbdcaed087687407b63addc4baaa832308b Mon Sep 17 00:00:00 2001 From: Tobias Kugel <78074722+tobikugel@users.noreply.github.com> Date: Wed, 12 Mar 2025 09:42:25 -0300 Subject: [PATCH 136/164] Feature/restructure user account registration flow (#4393) * Restructure user account registration flow * Update changelog --- CHANGELOG.md | 6 + .../pages/register/register-page.component.ts | 25 +--- .../src/app/pages/register/register-page.html | 2 +- .../show-access-token-dialog.component.ts | 57 ++++++-- .../show-access-token-dialog.html | 125 ++++++++++++------ .../show-access-token-dialog.module.ts | 4 + .../show-access-token-dialog.scss | 4 + 7 files changed, 151 insertions(+), 72 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2257cf608..be7daaff4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +- Improved the usability of the user account registration + ## 2.145.1 - 2025-03-10 ### Added diff --git a/apps/client/src/app/pages/register/register-page.component.ts b/apps/client/src/app/pages/register/register-page.component.ts index 86490688b..45fd53fcc 100644 --- a/apps/client/src/app/pages/register/register-page.component.ts +++ b/apps/client/src/app/pages/register/register-page.component.ts @@ -7,7 +7,6 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { Component, OnDestroy, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { Router } from '@angular/router'; -import { Role } from '@prisma/client'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -59,15 +58,6 @@ export class RegisterPageComponent implements OnDestroy, OnInit { ); } - public async createAccount() { - this.dataService - .postUser() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ accessToken, authToken, role }) => { - this.openShowAccessTokenDialog(accessToken, authToken, role); - }); - } - public async onLoginWithInternetIdentity() { try { const { authToken } = await this.internetIdentityService.login(); @@ -76,17 +66,8 @@ export class RegisterPageComponent implements OnDestroy, OnInit { } catch {} } - public openShowAccessTokenDialog( - accessToken: string, - authToken: string, - role: Role - ) { + public openShowAccessTokenDialog() { const dialogRef = this.dialog.open(ShowAccessTokenDialog, { - data: { - accessToken, - authToken, - role - }, disableClose: true, width: '30rem' }); @@ -94,8 +75,8 @@ export class RegisterPageComponent implements OnDestroy, OnInit { dialogRef .afterClosed() .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe((data) => { - if (data?.authToken) { + .subscribe((authToken) => { + if (authToken) { this.tokenStorageService.saveToken(authToken, true); this.router.navigate(['/']); diff --git a/apps/client/src/app/pages/register/register-page.html b/apps/client/src/app/pages/register/register-page.html index 903aedccf..eee49083a 100644 --- a/apps/client/src/app/pages/register/register-page.html +++ b/apps/client/src/app/pages/register/register-page.html @@ -22,7 +22,7 @@ class="d-inline-block" color="primary" mat-flat-button - (click)="createAccount()" + (click)="openShowAccessTokenDialog()" > Create Account diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts index 5aacbd457..c6535bf48 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts @@ -1,19 +1,58 @@ -import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; -import { MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { DataService } from '@ghostfolio/client/services/data.service'; + +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ViewChild +} from '@angular/core'; +import { MatStepper } from '@angular/material/stepper'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; @Component({ - selector: 'gf-show-access-token-dialog', changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'gf-show-access-token-dialog', + standalone: false, styleUrls: ['./show-access-token-dialog.scss'], - templateUrl: 'show-access-token-dialog.html', - standalone: false + templateUrl: 'show-access-token-dialog.html' }) export class ShowAccessTokenDialog { - public isAgreeButtonDisabled = true; + @ViewChild(MatStepper) stepper!: MatStepper; + + public accessToken: string; + public authToken: string; + public isCreateAccountButtonDisabled = true; + public isDisclaimerChecked = false; + public role: string; + + private unsubscribeSubject = new Subject(); + + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService + ) {} - public constructor(@Inject(MAT_DIALOG_DATA) public data: any) {} + public createAccount() { + this.dataService + .postUser() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ accessToken, authToken, role }) => { + this.accessToken = accessToken; + this.authToken = authToken; + this.role = role; + + this.stepper.next(); + + this.changeDetectorRef.markForCheck(); + }); + } + + public enableCreateAccountButton() { + this.isCreateAccountButtonDisabled = false; + } - public enableAgreeButton() { - this.isAgreeButtonDisabled = false; + public onChangeDislaimerChecked() { + this.isDisclaimerChecked = !this.isDisclaimerChecked; } } diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html index 0a6a2e5e3..737d32679 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1,48 +1,93 @@

    Create Account - @if (data.role === 'ADMIN') { - {{ data.role }} + @if (role === 'ADMIN') { + {{ role }} }

    -
    -
    - - Security Token - -
    - +
    +
    + + Continue + +
    - -
    -

    - I agree to have stored my Security Token from above in a secure - place. If I lose it, I cannot get my account back. -

    -
    -
    - - + + + Security Token +
    + Here is your security token. It is only visible once, please store + and keep it in a safe place. +
    + + Security Token + +
    + +
    +
    +
    +
    + +
    +
    +
    + + + + + +
    diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.module.ts b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.module.ts index d537fbe7f..117c1da00 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.module.ts +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.module.ts @@ -4,9 +4,11 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; +import { MatStepperModule } from '@angular/material/stepper'; import { ShowAccessTokenDialog } from './show-access-token-dialog.component'; @@ -17,9 +19,11 @@ import { ShowAccessTokenDialog } from './show-access-token-dialog.component'; CommonModule, FormsModule, MatButtonModule, + MatCheckboxModule, MatDialogModule, MatFormFieldModule, MatInputModule, + MatStepperModule, ReactiveFormsModule, TextFieldModule ], diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.scss b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.scss index dc9093b45..777c8c854 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.scss +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.scss @@ -1,2 +1,6 @@ :host { + .mat-mdc-dialog-actions { + padding-left: 0 !important; + padding-right: 0 !important; + } } From 97037e9481baf6c8f4ce22613451bf7777f14e18 Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Wed, 12 Mar 2025 14:27:11 +0100 Subject: [PATCH 137/164] Feature/upgrade to Nx 20.5 (#4430) * Upgrade to Nx 20.5 * Update changelog --- CHANGELOG.md | 5 + package-lock.json | 26237 +++++++++++++++++++++++--------------------- package.json | 72 +- 3 files changed, 13738 insertions(+), 12576 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be7daaff4..72f1f319a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the usability of the user account registration +### Changed + +- Upgraded `angular` from version `19.0.5` to `19.2.1` +- Upgraded `Nx` from version `20.3.2` to `20.5.0` + ## 2.145.1 - 2025-03-10 ### Added diff --git a/package-lock.json b/package-lock.json index 5fbff830c..a0447ccba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,17 +10,17 @@ "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { - "@angular/animations": "19.0.5", - "@angular/cdk": "19.0.4", - "@angular/common": "19.0.5", - "@angular/compiler": "19.0.5", - "@angular/core": "19.0.5", - "@angular/forms": "19.0.5", - "@angular/material": "19.0.4", - "@angular/platform-browser": "19.0.5", - "@angular/platform-browser-dynamic": "19.0.5", - "@angular/router": "19.0.5", - "@angular/service-worker": "19.0.5", + "@angular/animations": "19.2.1", + "@angular/cdk": "19.2.2", + "@angular/common": "19.2.1", + "@angular/compiler": "19.2.1", + "@angular/core": "19.2.1", + "@angular/forms": "19.2.1", + "@angular/material": "19.2.2", + "@angular/platform-browser": "19.2.1", + "@angular/platform-browser-dynamic": "19.2.1", + "@angular/router": "19.2.1", + "@angular/service-worker": "19.2.1", "@codewithdan/observable-store": "2.2.15", "@dfinity/agent": "0.15.7", "@dfinity/auth-client": "0.15.7", @@ -93,33 +93,33 @@ "zone.js": "0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "19.0.6", - "@angular-devkit/core": "19.0.6", - "@angular-devkit/schematics": "19.0.6", - "@angular-eslint/eslint-plugin": "19.0.2", - "@angular-eslint/eslint-plugin-template": "19.0.2", - "@angular-eslint/template-parser": "19.0.2", - "@angular/cli": "19.0.6", - "@angular/compiler-cli": "19.0.5", - "@angular/language-service": "19.0.5", - "@angular/localize": "19.0.5", - "@angular/pwa": "19.0.6", + "@angular-devkit/build-angular": "19.2.1", + "@angular-devkit/core": "19.2.1", + "@angular-devkit/schematics": "19.2.1", + "@angular-eslint/eslint-plugin": "19.2.1", + "@angular-eslint/eslint-plugin-template": "19.2.1", + "@angular-eslint/template-parser": "19.2.1", + "@angular/cli": "19.2.1", + "@angular/compiler-cli": "19.2.1", + "@angular/language-service": "19.2.1", + "@angular/localize": "19.2.1", + "@angular/pwa": "19.2.1", "@eslint/eslintrc": "3.2.0", "@eslint/js": "9.18.0", "@nestjs/schematics": "10.2.3", "@nestjs/testing": "10.4.15", - "@nx/angular": "20.3.2", - "@nx/cypress": "20.3.2", - "@nx/eslint-plugin": "20.3.2", - "@nx/jest": "20.3.2", - "@nx/js": "20.3.2", - "@nx/module-federation": "20.3.2", - "@nx/nest": "20.3.2", - "@nx/node": "20.3.2", - "@nx/storybook": "20.3.2", - "@nx/web": "20.3.2", - "@nx/workspace": "20.3.2", - "@schematics/angular": "19.0.6", + "@nx/angular": "20.5.0", + "@nx/cypress": "20.5.0", + "@nx/eslint-plugin": "20.5.0", + "@nx/jest": "20.5.0", + "@nx/js": "20.5.0", + "@nx/module-federation": "20.5.0", + "@nx/nest": "20.5.0", + "@nx/node": "20.5.0", + "@nx/storybook": "20.5.0", + "@nx/web": "20.5.0", + "@nx/workspace": "20.5.0", + "@schematics/angular": "19.2.1", "@storybook/addon-essentials": "8.4.7", "@storybook/addon-interactions": "8.4.7", "@storybook/angular": "8.4.7", @@ -146,7 +146,7 @@ "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", - "nx": "20.3.2", + "nx": "20.5.0", "prettier": "3.5.1", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "6.4.1", @@ -158,7 +158,7 @@ "ts-jest": "29.1.0", "ts-node": "10.9.2", "tslib": "2.8.1", - "typescript": "5.6.3", + "typescript": "5.7.3", "webpack-bundle-analyzer": "4.10.2" }, "engines": { @@ -166,9 +166,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", - "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", "dev": true, "license": "MIT" }, @@ -186,12 +186,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1900.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1900.6.tgz", - "integrity": "sha512-w11bAXQnNWBawTJfQPjvaTRrzrqsOUm9tK9WNvaia/xjiRFpmO0CfmKtn3axNSEJM8jb/czaNQrgTwG+TGc/8g==", + "version": "0.1902.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1902.1.tgz", + "integrity": "sha512-iCm6F4HYO5aIgjzhjOUPKnyFHcn6yVE8gCpjWFQL8JVqrVzFG27vMZ0wK8b8rMDIDt6/hr2FOSSwChVg/cv9GQ==", "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.0.6", + "@angular-devkit/core": "19.2.1", "rxjs": "7.8.1" }, "engines": { @@ -201,41 +201,41 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-19.0.6.tgz", - "integrity": "sha512-dWTAsE6BSI8z0xglQdYBdqTBwg1Q+RWE3OrmlGs+520Dcoq/F0Z41Y1F3MiuHuQPdDAIQr88iB0APkIRW4clMg==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-19.2.1.tgz", + "integrity": "sha512-YJdHON1005lBzXFFfTJBrcFvbgWMEhvkziQw1IuQpbl+aa2XbkPnBFbT/d5FWjQpIWVpPYRMMMCSVSqeICYUcg==", "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1900.6", - "@angular-devkit/build-webpack": "0.1900.6", - "@angular-devkit/core": "19.0.6", - "@angular/build": "19.0.6", - "@babel/core": "7.26.0", - "@babel/generator": "7.26.2", + "@angular-devkit/architect": "0.1902.1", + "@angular-devkit/build-webpack": "0.1902.1", + "@angular-devkit/core": "19.2.1", + "@angular/build": "19.2.1", + "@babel/core": "7.26.9", + "@babel/generator": "7.26.9", "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-transform-async-generator-functions": "7.25.9", + "@babel/plugin-transform-async-generator-functions": "7.26.8", "@babel/plugin-transform-async-to-generator": "7.25.9", - "@babel/plugin-transform-runtime": "7.25.9", - "@babel/preset-env": "7.26.0", - "@babel/runtime": "7.26.0", + "@babel/plugin-transform-runtime": "7.26.9", + "@babel/preset-env": "7.26.9", + "@babel/runtime": "7.26.9", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "19.0.6", - "@vitejs/plugin-basic-ssl": "1.1.0", + "@ngtools/webpack": "19.2.1", + "@vitejs/plugin-basic-ssl": "1.2.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.20", "babel-loader": "9.2.1", "browserslist": "^4.21.5", "copy-webpack-plugin": "12.0.2", "css-loader": "7.1.2", - "esbuild-wasm": "0.24.0", - "fast-glob": "3.3.2", + "esbuild-wasm": "0.25.0", + "fast-glob": "3.3.3", "http-proxy-middleware": "3.0.3", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", - "less": "4.2.0", + "less": "4.2.2", "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", @@ -243,22 +243,22 @@ "open": "10.1.0", "ora": "5.4.1", "picomatch": "4.0.2", - "piscina": "4.7.0", - "postcss": "8.4.49", + "piscina": "4.8.0", + "postcss": "8.5.2", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.80.7", - "sass-loader": "16.0.3", - "semver": "7.6.3", + "sass": "1.85.0", + "sass-loader": "16.0.5", + "semver": "7.7.1", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.36.0", + "terser": "5.39.0", "tree-kill": "1.2.2", "tslib": "2.8.1", - "webpack": "5.96.1", + "webpack": "5.98.0", "webpack-dev-middleware": "7.4.2", - "webpack-dev-server": "5.1.0", + "webpack-dev-server": "5.2.0", "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, @@ -268,23 +268,23 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.24.0" + "esbuild": "0.25.0" }, "peerDependencies": { - "@angular/compiler-cli": "^19.0.0", - "@angular/localize": "^19.0.0", - "@angular/platform-server": "^19.0.0", - "@angular/service-worker": "^19.0.0", - "@angular/ssr": "^19.0.6", - "@web/test-runner": "^0.19.0", + "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0", + "@angular/localize": "^19.0.0 || ^19.2.0-next.0", + "@angular/platform-server": "^19.0.0 || ^19.2.0-next.0", + "@angular/service-worker": "^19.0.0 || ^19.2.0-next.0", + "@angular/ssr": "^19.2.1", + "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^19.0.0", + "ng-packagr": "^19.0.0 || ^19.2.0-next.0", "protractor": "^7.0.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.5 <5.7" + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "typescript": ">=5.5 <5.9" }, "peerDependenciesMeta": { "@angular/localize": { @@ -325,13 +325,13 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/build-webpack": { - "version": "0.1900.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1900.6.tgz", - "integrity": "sha512-WehtVrbBow4fc7hsaUKb+BZ6MDE5lO98/tgv7GR5PkRdGKnyLA0pW1AfPLJJQDgcaKjneramMhDFNc1eGSX0mQ==", + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1902.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1902.1.tgz", + "integrity": "sha512-KXvYkxvdun90GxAzaHIXkIKaYeJY9kQ89xaFXOaaJi6a9a+EkovnkHSPwPQ6uNqJo/zbwU5jKkT/rI/g+5D5Bg==", "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1900.6", + "@angular-devkit/architect": "0.1902.1", "rxjs": "7.8.1" }, "engines": { @@ -344,2338 +344,2053 @@ "webpack-dev-server": "^5.0.2" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "node_modules/@angular-devkit/core": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.1.tgz", + "integrity": "sha512-DYsoU8emxmBkfIKI693BNUqocwHTVHLjgybyD5nU1qMOH+D/jqEzL5bQbjhUeqeARyrzDg7tyPM5Xno+GsS7KQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" }, "engines": { - "node": ">=6.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@discoveryjs/json-ext": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", - "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "node_modules/@angular-devkit/schematics": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.1.tgz", + "integrity": "sha512-IVWXGROEACyV+YH/s9xvpbLVblK55GvqldZRCMvpevtXMJy1aubOPOB+8TkHOVBlmAteW/5I7ouDbQWVZjNfww==", "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.1", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, "engines": { - "node": ">=14.17.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", - "cpu": [ - "ppc64" - ], + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.2.1.tgz", + "integrity": "sha512-8/NY4OCpiRDSOaqnpIOW7kMirqqsTY1U751iuMH0z9gQImYZWubMLOI0tsLFWmz06pKpgiDZcjD2X9TK2b4Igg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-19.2.1.tgz", + "integrity": "sha512-wCjyH5cJb4fBchEnt3L6dQ6syaLHD+xeHCSynD/Lw3K6BcVEnFa+82SfSscgXtYLRPHlkK5CmYYs3AlALhA+/w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "19.2.1", + "@angular-eslint/utils": "19.2.1" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", - "cpu": [ - "arm" - ], + "node_modules/@angular-eslint/eslint-plugin-template": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-19.2.1.tgz", + "integrity": "sha512-yBGut4PedTkZcGbm1sthQ671CXERkC72eXTaZlMRhKNQDf3R6zEVc60q5DQZoEIzvgeIbaZdWhZgsCLwlhfGrQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "19.2.1", + "@angular-eslint/utils": "19.2.1", + "aria-query": "5.3.2", + "axobject-query": "4.1.0" + }, + "peerDependencies": { + "@typescript-eslint/types": "^7.11.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", - "cpu": [ - "arm64" - ], + "node_modules/@angular-eslint/template-parser": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-19.2.1.tgz", + "integrity": "sha512-fU16NUh8nY02zdkHRsAlGI9ruppsE1ko1Z1PIyB3oofYt4rCKsXb8yXWbXWn7qCjNPVqv4+oLx0BwhJQZwEX8w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "19.2.1", + "eslint-scope": "^8.0.2" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", - "cpu": [ - "x64" - ], + "node_modules/@angular-eslint/utils": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-19.2.1.tgz", + "integrity": "sha512-TRIOtlDMbz1PqurLXPKMzSUl2iSs02c185g4EeOzTDX93sDvvVDLRj18jZ0IVcjQv5Vs21JK2KsKV/WdGe1OxA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "19.2.1" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", - "cpu": [ - "arm64" - ], + "node_modules/@angular/animations": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.1.tgz", + "integrity": "sha512-I67XYXBic9bM+yfce6Dqa950TsrEWB6uwSB2l6eIg3Byp48yJxQYbyjvjDbMXPieU2Bzo8FYVSD+lc8cF4+L6A==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "19.2.1" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", - "cpu": [ - "x64" - ], + "node_modules/@angular/build": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.2.1.tgz", + "integrity": "sha512-+gRcH2F+qGSN/JRT5J650FzXW2kPrhjoSwOMYW06zhSpyX+oDZenFygUxORNhb5CnXJyZf/L5UEj6ypUojx4KQ==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1902.1", + "@babel/core": "7.26.9", + "@babel/helper-annotate-as-pure": "7.25.9", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-syntax-import-attributes": "7.26.0", + "@inquirer/confirm": "5.1.6", + "@vitejs/plugin-basic-ssl": "1.2.0", + "beasties": "0.2.0", + "browserslist": "^4.23.0", + "esbuild": "0.25.0", + "fast-glob": "3.3.3", + "https-proxy-agent": "7.0.6", + "istanbul-lib-instrument": "6.0.3", + "listr2": "8.2.5", + "magic-string": "0.30.17", + "mrmime": "2.0.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.2", + "piscina": "4.8.0", + "rollup": "4.34.8", + "sass": "1.85.0", + "semver": "7.7.1", + "source-map-support": "0.5.21", + "vite": "6.2.0", + "watchpack": "2.4.2" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "lmdb": "3.2.6" + }, + "peerDependencies": { + "@angular/compiler": "^19.0.0 || ^19.2.0-next.0", + "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0", + "@angular/localize": "^19.0.0 || ^19.2.0-next.0", + "@angular/platform-server": "^19.0.0 || ^19.2.0-next.0", + "@angular/service-worker": "^19.0.0 || ^19.2.0-next.0", + "@angular/ssr": "^19.2.1", + "karma": "^6.4.0", + "less": "^4.2.0", + "ng-packagr": "^19.0.0 || ^19.2.0-next.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "typescript": ">=5.5 <5.9" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@angular/ssr": { + "optional": true + }, + "karma": { + "optional": true + }, + "less": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", - "cpu": [ - "arm64" - ], + "node_modules/@angular/build/node_modules/vite": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", + "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, "engines": { - "node": ">=18" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/@angular/build/node_modules/vite/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, "engines": { - "node": ">=18" + "node": "^10 || ^12 || >=14" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", - "cpu": [ - "arm" - ], + "node_modules/@angular/cdk": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.2.tgz", + "integrity": "sha512-YLiydMiTSf7s/LKaLgNeWawspulqdo/47zcjs1sEkHOcmyN1yR2Q0zQdgSbtsvuNikaR4NMNgTybNTDnULl64A==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^19.0.0 || ^20.0.0", + "@angular/core": "^19.0.0 || ^20.0.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", - "cpu": [ - "arm64" - ], + "node_modules/@angular/cli": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.2.1.tgz", + "integrity": "sha512-0ioZmuaapsbndXhpoUAew1uA4RFhNEa16kKgYPw5XlouaS2SLLrzC4nLW9DPJv6XrkOsOebf+OpyyHazzdFoSw==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@angular-devkit/architect": "0.1902.1", + "@angular-devkit/core": "19.2.1", + "@angular-devkit/schematics": "19.2.1", + "@inquirer/prompts": "7.3.2", + "@listr2/prompt-adapter-inquirer": "2.0.18", + "@schematics/angular": "19.2.1", + "@yarnpkg/lockfile": "1.1.0", + "ini": "5.0.0", + "jsonc-parser": "3.3.1", + "listr2": "8.2.5", + "npm-package-arg": "12.0.2", + "npm-pick-manifest": "10.0.0", + "pacote": "20.0.0", + "resolve": "1.22.10", + "semver": "7.7.1", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", - "cpu": [ - "ia32" - ], + "node_modules/@angular/common": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.1.tgz", + "integrity": "sha512-k+ikxn6SlWXxXEtwRmsYZeknf3a6n3Oicde6zTLBrD/Rie/u0+okuoQcuYjntQWGgH//QBQxH4UQpvRw51AR8w==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "19.2.1", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", - "cpu": [ - "loong64" - ], + "node_modules/@angular/compiler": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.1.tgz", + "integrity": "sha512-yCN/lgXMvMsPtEmTChd621zV17RLn+flhcJ6mNZjyGA7zx16m5zity4/00G6phbGfG8WXOtH5vQ/k7nnO7wS4A==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "19.2.1" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", - "cpu": [ - "mips64el" - ], + "node_modules/@angular/compiler-cli": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.1.tgz", + "integrity": "sha512-5uuUx0ibX7cQP7eSBaJzfZlU0Hbe0kLwc85uCnH47hfzCsd3u2VU623IZIN7ctaInoOFBjl9fUUqKnFuYibC/w==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/core": "7.26.9", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^4.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/compiler": "19.2.1", + "typescript": ">=5.5 <5.9" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@angular/core": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.1.tgz", + "integrity": "sha512-gwdytbZSM9m5v9PhRsvh6Q13vI1Ydcx52QGs93bpWx5ACOGYGp/Y7zc2mcZb1aUM63zGBTpS9Qw9bEsPHeLZPA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.15.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", - "cpu": [ - "riscv64" - ], + "node_modules/@angular/forms": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.1.tgz", + "integrity": "sha512-a+ifgpX5ie2KgTNI9m8tJWS+ym51u3LZ8Kd67dXX7+CbYe9RzdIgVtuXcTklrP1fmmhfKnQVNmsUqpAYAjrByg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "19.2.1", + "@angular/core": "19.2.1", + "@angular/platform-browser": "19.2.1", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", - "cpu": [ - "s390x" - ], + "node_modules/@angular/language-service": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-19.2.1.tgz", + "integrity": "sha512-JJPxFQp3tbKy6xSKLHMYUA6SOBxtJoOKDNAasj8tNrgZLgxtGABWz3kPNlgzpVQ6HHyderrzPhDir9aQDooSJQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", - "cpu": [ - "x64" - ], + "node_modules/@angular/localize": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-19.2.1.tgz", + "integrity": "sha512-8j/5EqmFvXh/MkLTKQZMAuTKL9QecOJfern/CUi94VoBWuZq695rbBG51ua3m/r2VWVQ1yB4iiOxa03j+slVOQ==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/core": "7.26.9", + "@types/babel__core": "7.20.5", + "fast-glob": "3.3.3", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/compiler": "19.2.1", + "@angular/compiler-cli": "19.2.1" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", - "cpu": [ - "x64" - ], + "node_modules/@angular/material": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-19.2.2.tgz", + "integrity": "sha512-ChaxmiQkdtYJZCuTzh/LuOofg3/TLKDM/NtmlPrOA8GCEGX5oHQiu9NgJmdwi8LmGJL0lvFS1ftfVSjBTgHlxA==", "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "19.2.2", + "@angular/common": "^19.0.0 || ^20.0.0", + "@angular/core": "^19.0.0 || ^20.0.0", + "@angular/forms": "^19.0.0 || ^20.0.0", + "@angular/platform-browser": "^19.0.0 || ^20.0.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", - "cpu": [ - "arm64" - ], + "node_modules/@angular/platform-browser": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.1.tgz", + "integrity": "sha512-omBNCMk0Gim+HntrofVQR8dOY2zLCFOW02+FX4y57QvuDBh/FpFfnQ14xxx1Y4qEgGculEcBe914uJlxr4ccIg==", "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/animations": "19.2.1", + "@angular/common": "19.2.1", + "@angular/core": "19.2.1" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", - "cpu": [ - "x64" - ], + "node_modules/@angular/platform-browser-dynamic": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.1.tgz", + "integrity": "sha512-jYEXI2CymdK8R27YKy/q0O36dZwSdbIyJAjX9vPTgAsORGwX8hdhm5NJwkKlOWT+ccf2ySUatJD7RCElhsEBNA==", "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "19.2.1", + "@angular/compiler": "19.2.1", + "@angular/core": "19.2.1", + "@angular/platform-browser": "19.2.1" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", - "cpu": [ - "x64" - ], + "node_modules/@angular/pwa": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-19.2.1.tgz", + "integrity": "sha512-kSrunMB9/UOtybQwAM7u5oQPq+gSsqvlI25QGWn2bhBja5IVsowSjr0VnRFzfNMSHnrbi1Nyy0M7jsyy8XQD6w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "dependencies": { + "@angular-devkit/schematics": "19.2.1", + "@schematics/angular": "19.2.1", + "parse5-html-rewriting-stream": "7.0.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/cli": "^19.2.1" + }, + "peerDependenciesMeta": { + "@angular/cli": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", - "cpu": [ - "arm64" - ], + "node_modules/@angular/router": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.2.1.tgz", + "integrity": "sha512-HZTewSLnHpNbnOnTp9X7r17/eb8h3ex/b8da6z2OPpC3diV7EZsrrjrLpdkzm3wpuapaVATzRgC4I4gN8XwTxA==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "19.2.1", + "@angular/core": "19.2.1", + "@angular/platform-browser": "19.2.1", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", - "cpu": [ - "ia32" - ], + "node_modules/@angular/service-worker": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-19.2.1.tgz", + "integrity": "sha512-qujVsO6D46BlSDBraxyRz3/Yb5VhX0rhJaFatgAB6TGqY0OCJUP/M/xxKjmfYFcciz+6SfeH3SJD/MKkKq5G0g==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "tslib": "^2.3.0" + }, + "bin": { + "ngsw-config": "ngsw-config.js" + }, "engines": { - "node": ">=18" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "19.2.1", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", - "cpu": [ - "x64" - ], + "node_modules/@antfu/install-pkg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", + "integrity": "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==", "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "package-manager-detector": "^0.2.8", + "tinyexec": "^0.3.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@ngtools/webpack": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.0.6.tgz", - "integrity": "sha512-eWrIb0tS1CK6+JvFS4GgTD4fN9TtmApKrlaj3pPQXKXKKd42361ec85fuQQXdb4G8eEEq0vyd/bn4NJllh/3vw==", + "node_modules/@antfu/utils": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", + "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", "license": "MIT", - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "@angular/compiler-cli": "^19.0.0", - "typescript": ">=5.5 <5.7", - "webpack": "^5.54.0" + "optional": true, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@angular-devkit/build-angular/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/copy-webpack-plugin": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", - "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", + "node_modules/@babel/core": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "license": "MIT", "dependencies": { - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.1", - "globby": "^14.0.0", - "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">= 18.12.0" + "node": ">=6.9.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" + "url": "https://opencollective.com/babel" } }, - "node_modules/@angular-devkit/build-angular/node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "@babel/types": "^7.25.9" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", + "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", "license": "MIT", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.26.9", + "semver": "^6.3.1" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "node": ">=6.9.0" }, "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@babel/core": "^7.0.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "license": "MIT", "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6.9.0" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "@babel/core": "^7.0.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/globby": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", - "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/http-proxy-middleware": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz", - "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.15", - "debug": "^4.3.6", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.3", - "is-plain-object": "^5.0.0", - "micromatch": "^4.0.8" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/less-loader": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz", - "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "license": "MIT", - "engines": { - "node": ">= 18.12.0" + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "license": "MIT", "engines": { - "node": ">= 12.13.0" + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/mini-css-extract-plugin": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", - "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "license": "MIT", "dependencies": { - "schema-utils": "^4.0.0", - "tapable": "^2.2.1" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6.9.0" }, "peerDependencies": { - "webpack": "^5.0.0" + "@babel/core": "^7.0.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/@angular-devkit/build-angular/node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@babel/types": "^7.24.7" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/postcss-loader": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", - "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "license": "MIT", - "dependencies": { - "cosmiconfig": "^9.0.0", - "jiti": "^1.20.0", - "semver": "^7.5.4" - }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/sass-loader": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.3.tgz", - "integrity": "sha512-gosNorT1RCkuCMyihv6FBRR7BMV06oKRAs+l4UMp1mlcVg9rWN6KMmUj3igjQwmYys4mDP3etEYJgiHRbgHCHA==", - "license": "MIT", - "dependencies": { - "neo-async": "^2.6.2" - }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "webpack": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "node_modules/@babel/helpers": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", + "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", "license": "MIT", - "engines": { - "node": ">=14.16" + "dependencies": { + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "node_modules/@babel/parser": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", + "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "@babel/types": "^7.26.10" }, "bin": { - "webpack": "bin/webpack.js" + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "node": ">=6.0.0" } }, - "node_modules/@angular-devkit/core": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.0.6.tgz", - "integrity": "sha512-WUWJhzQDsovfMY6jtb9Ktz/5sJszsaErj+XV2aXab85f1OweI/Iv2urPZnJwUSilvVN5Ok/fy3IJ6SuihK4Ceg==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "license": "MIT", "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=6.9.0" }, "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "@babel/core": "^7.0.0" } }, - "node_modules/@angular-devkit/core/node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "license": "MIT", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "@babel/helper-plugin-utils": "^7.25.9" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "license": "MIT" - }, - "node_modules/@angular-devkit/core/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@angular-devkit/schematics": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.0.6.tgz", - "integrity": "sha512-R9hlHfAh1HKoIWgnYJlOEKhUezhTNl0fpUmHxG2252JSY5FLRxmYArTtJYYmbNdBbsBLNg3UHyM/GBPvJSA3NQ==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.0.6", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.12", - "ora": "5.4.1", - "rxjs": "7.8.1" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@angular-devkit/schematics/node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "license": "MIT" - }, - "node_modules/@angular-devkit/schematics/node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.0.2.tgz", - "integrity": "sha512-HPmp92r70SNO/0NdIaIhxrgVSpomqryuUk7jszvNRtu+OzYCJGcbLhQD38T3dbBWT/AV0QXzyzExn6/2ai9fEw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular-eslint/eslint-plugin": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-19.0.2.tgz", - "integrity": "sha512-DLuNVVGGFicSThOcMSJyNje+FZSPdG0B3lCBRiqcgKH/16kfM4pV8MobPM7RGK2NhaOmmZ4zzJNwpwWPSgi+Lw==", - "dev": true, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.0.2", - "@angular-eslint/utils": "19.0.2" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "@babel/core": "^7.0.0" } }, - "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-19.0.2.tgz", - "integrity": "sha512-f/OCF9ThnxQ8m0eNYPwnCrySQPhYfCOF6STL7F9LnS8Bs3ZeW3/oT1yLaMIZ1Eg0ogIkgxksMAJZjrJPUPBD1Q==", + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.0.2", - "@angular-eslint/utils": "19.0.2", - "aria-query": "5.3.2", - "axobject-query": "4.1.0" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@typescript-eslint/types": "^7.11.0 || ^8.0.0", - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular-eslint/eslint-plugin-template/node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular-eslint/template-parser": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-19.0.2.tgz", - "integrity": "sha512-z3rZd2sBfuYcFf9rGDsB2zz2fbGX8kkF+0ftg9eocyQmzWrlZHFmuw9ha7oP/Mz8gpblyCS/aa1U/Srs6gz0UQ==", - "dev": true, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.0.2", - "eslint-scope": "^8.0.2" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular-eslint/template-parser/node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular-eslint/utils": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-19.0.2.tgz", - "integrity": "sha512-HotBT8OKr7zCaX1S9k27JuhRiTVIbbYVl6whlb3uwdMIPIWY8iOcEh1tjI4qDPUafpLfR72Dhwi5bO1E17F3/Q==", - "dev": true, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "devOptional": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.0.2" + "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/animations": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.0.5.tgz", - "integrity": "sha512-HCOF2CrhUvjoZWusd4nh32VOxpUrg6bV+3Z8Q36Ix3aZdni8v0qoP2rl5wGbotaPtYg5RtyDH60Z2AOPKqlrZg==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "devOptional": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/core": "19.0.5" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.0.6.tgz", - "integrity": "sha512-KEVNLgTZUF2dfpOYQn+yR2HONHUTxq/2rFVhiK9qAvrm/m+uKJNEXx7hGtbRyoqenZff4ScJq+7feITUldfX8g==", + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", + "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1900.6", - "@babel/core": "7.26.0", - "@babel/helper-annotate-as-pure": "7.25.9", - "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-syntax-import-attributes": "7.26.0", - "@inquirer/confirm": "5.0.2", - "@vitejs/plugin-basic-ssl": "1.1.0", - "beasties": "0.1.0", - "browserslist": "^4.23.0", - "esbuild": "0.24.0", - "fast-glob": "3.3.2", - "https-proxy-agent": "7.0.5", - "istanbul-lib-instrument": "6.0.3", - "listr2": "8.2.5", - "magic-string": "0.30.12", - "mrmime": "2.0.0", - "parse5-html-rewriting-stream": "7.0.0", - "picomatch": "4.0.2", - "piscina": "4.7.0", - "rollup": "4.26.0", - "sass": "1.80.7", - "semver": "7.6.3", - "vite": "5.4.11", - "watchpack": "2.4.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "optionalDependencies": { - "lmdb": "3.1.5" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/compiler": "^19.0.0", - "@angular/compiler-cli": "^19.0.0", - "@angular/localize": "^19.0.0", - "@angular/platform-server": "^19.0.0", - "@angular/service-worker": "^19.0.0", - "@angular/ssr": "^19.0.6", - "less": "^4.2.0", - "postcss": "^8.4.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.5 <5.7" - }, - "peerDependenciesMeta": { - "@angular/localize": { - "optional": true - }, - "@angular/platform-server": { - "optional": true - }, - "@angular/service-worker": { - "optional": true - }, - "@angular/ssr": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tailwindcss": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", - "cpu": [ - "arm" - ], + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", - "cpu": [ - "arm" - ], + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", - "cpu": [ - "loong64" - ], + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", - "cpu": [ - "mips64el" - ], + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", - "cpu": [ - "riscv64" - ], + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", - "cpu": [ - "s390x" - ], + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "node_modules/@angular/build/node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@angular/build/node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", - "hasInstallScript": true, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" - } - }, - "node_modules/@angular/build/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "node": ">=6.9.0" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/build/node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/cdk": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.0.4.tgz", - "integrity": "sha512-P8V1n6AFFjBUJG3YRgw8DiiNDWPZVrwQ42wbwgZxd4s2TQAuNFg3YY8h/DSMVxt2sXpavrshZsoLtP9yLKZjHA==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-plugin-utils": "^7.25.9" }, - "optionalDependencies": { - "parse5": "^7.1.2" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/common": "^19.0.0 || ^20.0.0", - "@angular/core": "^19.0.0 || ^20.0.0", - "rxjs": "^6.5.3 || ^7.4.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/cli": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.0.6.tgz", - "integrity": "sha512-ZEHhgRRVIdn10dbsAjB8TE9Co32hfuL9/im5Jcfa1yrn6KJefmigz6KN8Xu7FXMH5FkdqfQ11QpLBxJSPb9aww==", - "dev": true, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1900.6", - "@angular-devkit/core": "19.0.6", - "@angular-devkit/schematics": "19.0.6", - "@inquirer/prompts": "7.1.0", - "@listr2/prompt-adapter-inquirer": "2.0.18", - "@schematics/angular": "19.0.6", - "@yarnpkg/lockfile": "1.1.0", - "ini": "5.0.0", - "jsonc-parser": "3.3.1", - "listr2": "8.2.5", - "npm-package-arg": "12.0.0", - "npm-pick-manifest": "10.0.0", - "pacote": "20.0.0", - "resolve": "1.22.8", - "semver": "7.6.3", - "symbol-observable": "4.0.0", - "yargs": "17.7.2" - }, - "bin": { - "ng": "bin/ng.js" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/cli/node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@angular/cli/node_modules/npm-package-arg": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.0.tgz", - "integrity": "sha512-ZTE0hbwSdTNL+Stx2zxSqdu2KZfNDcrtrLdIk7XGnQFYBWYDho/ORvXtn5XEePcL3tFpGjHCV3X3xrtDh7eZ+A==", - "dev": true, - "license": "ISC", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "license": "MIT", "dependencies": { - "hosted-git-info": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^6.0.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/cli/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@angular/common": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.0.5.tgz", - "integrity": "sha512-fFK+euCj1AjBHBCpj9VnduMSeqoMRhZZHbhPYiND7tucRRJ8vwGU0sYK2KI/Ko+fsrNIXL/0O4F36jVPl09Smg==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/core": "19.0.5", - "rxjs": "^6.5.3 || ^7.4.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/compiler": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.0.5.tgz", - "integrity": "sha512-S8ku5Ljp0kqX3shfmE9DVo09629jeYJSlBRGbj2Glb92dd+VQZPOz7KxqKRTwmAl7lQIV/+4Lr6G/GVTsoC4vg==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/core": "19.0.5" - }, - "peerDependenciesMeta": { - "@angular/core": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/compiler-cli": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.0.5.tgz", - "integrity": "sha512-KSzuWCTZlvJsoAenxM9cjTOzNM8mrFxDBInj0KVPz7QU83amGS4rcv1pWO/QGYQcErfskcN84TAdMegaRWWCmA==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "license": "MIT", "dependencies": { - "@babel/core": "7.26.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "chokidar": "^4.0.0", - "convert-source-map": "^1.5.1", - "reflect-metadata": "^0.2.0", - "semver": "^7.0.0", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - }, - "bin": { - "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js", - "ngcc": "bundles/ngcc/index.js" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/compiler": "19.0.5", - "typescript": ">=5.5 <5.7" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/compiler-cli/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "node_modules/@angular/compiler-cli/node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0" - }, - "node_modules/@angular/core": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.0.5.tgz", - "integrity": "sha512-Ywc6sPO6G/Y1stfk3y/MallV/h0yzQ0vdOHRWueLrk5kD1DTdbolV4X03Cs3PuVvravgcSVE3nnuuHFuH32emQ==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.15.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/forms": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.0.5.tgz", - "integrity": "sha512-OhNFkfOoguqCDq07vNBV28FFrmTM8S11Z3Cd6PQZJJF9TgAtpV5KtF7A3eXBCN92W4pmqluomPjfK7YyImzIYQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/common": "19.0.5", - "@angular/core": "19.0.5", - "@angular/platform-browser": "19.0.5", - "rxjs": "^6.5.3 || ^7.4.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/language-service": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-19.0.5.tgz", - "integrity": "sha512-E4WFEsCzHuF3DYe4EfOCiMGW1zWmq3UYi5XXOBNLyzWDvwU5xTfdme6ECXGawHMc2kCaWMVNL4DzYpVsUgLG0w==", - "dev": true, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/localize": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-19.0.5.tgz", - "integrity": "sha512-4Uk0cNYXZpjPvUXo5gAy0rjCcemyAVOG319q5BJyLSeCV0DJ+MTIR6ylGK3oLSXqKACpF3r3+Wa235xj7vxk3Q==", - "devOptional": true, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "license": "MIT", "dependencies": { - "@babel/core": "7.26.0", - "@types/babel__core": "7.20.5", - "fast-glob": "3.3.2", - "yargs": "^17.2.1" - }, - "bin": { - "localize-extract": "tools/bundles/src/extract/cli.js", - "localize-migrate": "tools/bundles/src/migrate/cli.js", - "localize-translate": "tools/bundles/src/translate/cli.js" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/compiler": "19.0.5", - "@angular/compiler-cli": "19.0.5" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/material": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-19.0.4.tgz", - "integrity": "sha512-8WRMbN1+oRXx1ZFLni+BRz60F4FWzJPFORsQ8qAvY3sHWzyjunsYZkpbze3uiZO6bu3hiyQCU6g+k/58Qc6kkw==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/animations": "^19.0.0 || ^20.0.0", - "@angular/cdk": "19.0.4", - "@angular/common": "^19.0.0 || ^20.0.0", - "@angular/core": "^19.0.0 || ^20.0.0", - "@angular/forms": "^19.0.0 || ^20.0.0", - "@angular/platform-browser": "^19.0.0 || ^20.0.0", - "rxjs": "^6.5.3 || ^7.4.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/platform-browser": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.0.5.tgz", - "integrity": "sha512-41+Jo5DEil4Ifvv+UE/p1l9YJtYN+xfhx+/C9cahVgvV5D2q+givyK73d0Mnb6XOfe1q+hoV5lZ+XhQYp21//g==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/animations": "19.0.5", - "@angular/common": "19.0.5", - "@angular/core": "19.0.5" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.0.5.tgz", - "integrity": "sha512-KKFdue/uJVxkWdrntRAXkz+ycp4nD3SuGOH5pPf2svCBxieuHuFlWDi+DYVuFSEpC/ICCmlhrtzIAm44A4qzzQ==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/common": "19.0.5", - "@angular/compiler": "19.0.5", - "@angular/core": "19.0.5", - "@angular/platform-browser": "19.0.5" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/pwa": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-19.0.6.tgz", - "integrity": "sha512-Xehq6wH4aMK5413LpuTBq/fvyJfCRU0GGcgKXigYmHLgWHolPBH356s4tSvNYvn8u9IHnl516qDkBgKJNrq5CQ==", - "dev": true, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "license": "MIT", "dependencies": { - "@angular-devkit/schematics": "19.0.6", - "@schematics/angular": "19.0.6", - "parse5-html-rewriting-stream": "7.0.0" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/cli": "^19.0.0-next.0" - }, - "peerDependenciesMeta": { - "@angular/cli": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/router": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.0.5.tgz", - "integrity": "sha512-6tNubVVj/rRyTg+OXjQxACfufvCLHAwDQtv9wqt6q/3OYSnysHTik3ho3FaFPwu7fXJ+6p9Rjzkh2VY9QMk4bw==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/common": "19.0.5", - "@angular/core": "19.0.5", - "@angular/platform-browser": "19.0.5", - "rxjs": "^6.5.3 || ^7.4.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@angular/service-worker": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-19.0.5.tgz", - "integrity": "sha512-qU5lgx1WJ+feCOV/EhkN9m20xFdIslpEQcSZZC+VJnEwcG6VTbofg1dRaHWZ9HAjS1uP7bFoK0HUYu4el0bHGA==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "license": "MIT", "dependencies": { - "tslib": "^2.3.0" - }, - "bin": { - "ngsw-config": "ngsw-config.js" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@angular/common": "19.0.5", - "@angular/core": "19.0.5" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/generator": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-annotate-as-pure": { + "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-compilation-targets": { + "node_modules/@babel/plugin-transform-object-super": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "license": "ISC", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "license": "MIT", "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "license": "ISC" - }, - "node_modules/@babel/helper-create-class-features-plugin": { + "node_modules/@babel/plugin-transform-optional-chaining": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "semver": "^6.3.1" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", - "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.2.0", - "semver": "^6.3.1" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", - "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { + "node_modules/@babel/plugin-transform-private-methods": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-optimise-call-expression": { + "node_modules/@babel/plugin-transform-property-literals": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { + "node_modules/@babel/plugin-transform-regenerator": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2684,120 +2399,150 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.9.tgz", + "integrity": "sha512-Jf+8y9wXQbbxvVYTM8gO5oEF2POdNji0NMltEkG7FtmzD9PVz7/lxpqSdTvwsjTMU5HIHuDVNf2SOxLkWi+wPQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-validator-identifier": { + "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-validator-option": { + "node_modules/@babel/plugin-transform-spread": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-wrap-function": { + "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.8" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", - "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz", + "integrity": "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", - "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" @@ -2806,49 +2551,49 @@ "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "license": "MIT", "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.13.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", - "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2857,29 +2602,82 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", - "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", - "dev": true, + "node_modules/@babel/preset-env": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-decorators": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -2887,53 +2685,54 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "devOptional": true, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "devOptional": true, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "devOptional": true, + "node_modules/@babel/preset-typescript": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2942,3312 +2741,3000 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", - "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", - "dev": true, + "node_modules/@babel/runtime": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "node_modules/@babel/template": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "node_modules/@babel/traverse": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "devOptional": true, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", - "devOptional": true, + "node_modules/@babel/types": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "devOptional": true, + "license": "MIT" + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "optional": true }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@bufbuild/protobuf": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.3.tgz", + "integrity": "sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg==", "devOptional": true, - "license": "MIT", + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "devOptional": true, - "license": "MIT", + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/@codewithdan/observable-store": { + "version": "2.2.15", + "resolved": "https://registry.npmjs.org/@codewithdan/observable-store/-/observable-store-2.2.15.tgz", + "integrity": "sha512-LVCSMZzTCvoDo5n7YDmtIIEhTmvJ8O21k36Vwu/A4kumdXQ1YVs4sKoSK3vlINZPL4AYY2MRsBVtvre4QIETFw==", + "license": "MIT", "peerDependencies": { - "@babel/core": "^7.0.0-0" + "rxjs": ">=6.4.0 <8" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "devOptional": true, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@jridgewell/trace-mapping": "0.3.9" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "devOptional": true, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "devOptional": true, + "node_modules/@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "devOptional": true, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=0.10.0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "devOptional": true, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=0.10.0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=0.10.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "node_modules/@cypress/listr-verbose-renderer/node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=0.8.0" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "node_modules/@cypress/listr-verbose-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=0.10.0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@cypress/request": { + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 6" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "node_modules/@cypress/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 0.12" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", - "license": "MIT", + "node_modules/@cypress/request/node_modules/qs": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=6.9.0" + "node": ">=0.6" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", - "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "node_modules/@cypress/request/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", - "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "debug": "^3.1.0", + "lodash.once": "^4.1.1" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "ms": "^2.1.1" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", - "license": "MIT", + "node_modules/@cypress/xvfb/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@dfinity/agent": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.15.7.tgz", + "integrity": "sha512-w34yvlUTpPBG8nLOD0t/ao3k2xonOFq4QGvfJ1HiS/nIggdza/3xC3nLBszGrjVYWj1jqu8BLFvQXCAeWin75A==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "base64-arraybuffer": "^0.2.0", + "bignumber.js": "^9.0.0", + "borc": "^2.1.1", + "js-sha256": "0.9.0", + "simple-cbor": "^0.4.1", + "ts-node": "^10.8.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@dfinity/candid": "^0.15.7", + "@dfinity/principal": "^0.15.7" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", - "license": "MIT", + "node_modules/@dfinity/auth-client": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.15.7.tgz", + "integrity": "sha512-f6cRqXayCf+7+9gNcDnAZZwJrgBYKIzfxjxeRLlpsueQeo+E/BX2yVSANxzTkCNc4U3p+ttHI1RNtasLunYTcA==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "idb": "^7.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@dfinity/agent": "^0.15.7", + "@dfinity/identity": "^0.15.7", + "@dfinity/principal": "^0.15.7" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", - "license": "MIT", + "node_modules/@dfinity/candid": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.15.7.tgz", + "integrity": "sha512-lTcjK/xrSyT7wvUQ2pApG+yklQAwxaofQ04D1IWv0/8gKbY0eUbh8G2w6+CypJ15Hb1CH24ijUj8nWdeX/z3jg==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "ts-node": "^10.8.2" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", - "license": "MIT", + "node_modules/@dfinity/identity": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.15.7.tgz", + "integrity": "sha512-kBAkx9wq78jSQf6T5aayLyWm8YgtOZw8bW6+OuzX6tR3hkAEa85A9TcKA7BjkmMWSIskjEDVQub4fFfKWS2vOQ==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "borc": "^2.1.1", + "js-sha256": "^0.9.0", + "tweetnacl": "^1.0.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@dfinity/agent": "^0.15.7", + "@dfinity/principal": "^0.15.7", + "@peculiar/webcrypto": "^1.4.0" } }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", - "license": "MIT", + "node_modules/@dfinity/principal": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.15.7.tgz", + "integrity": "sha512-6/AkYzpGEH6Jw/0+B/EeeQn+5u2GDDvRLt1kQPhIG4txQYFnOy04H3VvyrymmfAj6/CXUgrOrux6OxgYSLYVJg==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "js-sha256": "^0.9.0", + "ts-node": "^10.8.2" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", - "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "node_modules/@dinero.js/currencies": { + "version": "2.0.0-alpha.8", + "resolved": "https://registry.npmjs.org/@dinero.js/currencies/-/currencies-2.0.0-alpha.8.tgz", + "integrity": "sha512-zApiqtuuPwjiM9LJA5/kNcT48VSHRiz2/mktkXjIpfxrJKzthXybUAgEenExIH6dYhLDgVmsLQZtZFOsdYl0Ag==", + "license": "MIT" + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.17.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", - "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "node_modules/@emnapi/core": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz", + "integrity": "sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@emnapi/wasi-threads": "1.0.1", + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", - "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "node_modules/@emnapi/runtime": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", + "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", + "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", - "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", - "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", - "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", - "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", - "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", - "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", - "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", - "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", - "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz", - "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==", + "node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.0.tgz", + "integrity": "sha512-RoV8Xs9eNwiDvhv7M+xcL4PWyRyIXRY/FLp3buU4h1EYfdF7unWUy3dOjPqb3C7rMUewIcqwW850PgS8h1o1yg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "semver": "^6.3.1" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", - "license": "MIT", + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", - "license": "MIT", + "node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", - "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", - "license": "MIT", + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", - "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", - "license": "MIT", + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", - "license": "MIT", + "node_modules/@hexagon/base64": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", + "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==", + "license": "MIT" + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.18.0" } }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", - "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=12.22" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", - "semver": "^6.3.1" - }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=18.18" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT", + "optional": true }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "node_modules/@iconify/utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", + "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@antfu/install-pkg": "^1.0.0", + "@antfu/utils": "^8.1.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.14.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "mlly": "^1.7.4" + } + }, + "node_modules/@iconify/utils/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/preset-typescript": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", - "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "node_modules/@inquirer/checkbox": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.3.tgz", + "integrity": "sha512-KU1MGwf24iABJjGESxhyj+/rlQYSRoCfcuHDEHXfZ1DENmbuSRfyrUb+LLjHoee5TNOFKwaFxDXc5/zRwJUPMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-typescript": "^7.25.9" + "@inquirer/core": "^10.1.8", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "node_modules/@inquirer/confirm": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz", + "integrity": "sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==", "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.14.0" + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", + "node_modules/@inquirer/core": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.8.tgz", + "integrity": "sha512-HpAqR8y715zPpM9e/9Q+N88bnGwqqL8ePgZ0SMv/s3673JLMv3bIkoivGmjPqXlEgisUksSXibweQccUwEx4qQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", + "node_modules/@inquirer/editor": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.8.tgz", + "integrity": "sha512-UkGKbMFlQw5k4ZLjDwEi5z8NIVlP/3DAlLHta0o0pSsdpPThNmPtUL8mvGCHUaQtR+QrxR9yRYNWgKMsHkfIUA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@inquirer/core": "^10.1.8", + "@inquirer/type": "^3.0.5", + "external-editor": "^3.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "node_modules/@inquirer/expand": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.10.tgz", + "integrity": "sha512-leyBouGJ77ggv51Jb/OJmLGGnU2HYc13MZ2iiPNLwe2VgFgZPVqsrRWSa1RAHKyazjOyvSNKLD1B2K7A/iWi1g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@inquirer/core": "^10.1.8", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@braintree/sanitize-url": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", - "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", + "node_modules/@inquirer/figures": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz", + "integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==", "license": "MIT", - "optional": true + "engines": { + "node": ">=18" + } }, - "node_modules/@codewithdan/observable-store": { - "version": "2.2.15", - "resolved": "https://registry.npmjs.org/@codewithdan/observable-store/-/observable-store-2.2.15.tgz", - "integrity": "sha512-LVCSMZzTCvoDo5n7YDmtIIEhTmvJ8O21k36Vwu/A4kumdXQ1YVs4sKoSK3vlINZPL4AYY2MRsBVtvre4QIETFw==", + "node_modules/@inquirer/input": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.7.tgz", + "integrity": "sha512-rCQAipJNA14UTH84df/z4jDJ9LZ54H6zzuCAi7WZ0qVqx3CSqLjfXAMd5cpISIxbiHVJCPRB81gZksq6CZsqDg==", + "dev": true, "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.8", + "@inquirer/type": "^3.0.5" + }, + "engines": { + "node": ">=18" + }, "peerDependencies": { - "rxjs": ">=6.4.0 <8" + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "node_modules/@inquirer/number": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.10.tgz", + "integrity": "sha512-GLsdnxzNefjCJUmWyjaAuNklHgDpCTL4RMllAVhVvAzBwRW9g38eZ5tWgzo1lirtSDTpsh593hqXVhxvdrjfwA==", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "@inquirer/core": "^10.1.8", + "@inquirer/type": "^3.0.5" + }, "engines": { - "node": ">=0.1.90" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@inquirer/password": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.10.tgz", + "integrity": "sha512-JC538ujqeYKkFqLoWZ0ILBteIUO2yajBMVEUZSxjl9x6fiEQtM+I5Rca7M2D8edMDbyHLnXifGH1hJZdh8V5rA==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@inquirer/core": "^10.1.8", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@cypress/listr-verbose-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", - "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", + "node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/@inquirer/rawlist": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.10.tgz", + "integrity": "sha512-vOQbQkmhaCsF2bUmjoyRSZJBz77UnIF/F3ZS2LMgwbgyaG2WgwKHh0WKNj0APDB72WDbZijhW5nObQbk+TnbcA==", "dev": true, "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.8", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/@inquirer/search": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.10.tgz", + "integrity": "sha512-EAVKAz6P1LajZOdoL+R+XC3HJYSU261fbJzO4fCkJJ7UPFcm+nP+gzC+DDZWsb2WK9PQvKsnaKiNKsY8B6dBWQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@inquirer/core": "^10.1.8", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "node_modules/@inquirer/select": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.0.10.tgz", + "integrity": "sha512-Tg8S9nESnCfISu5tCZSuXpXq0wHuDVimj7xyHstABgR34zcJnLdq/VbjB2mdZvNAMAehYBnNzSjxB06UE8LLAA==", "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^1.0.1" + "@inquirer/core": "^10.1.8", + "@inquirer/figures": "^1.0.11", + "@inquirer/type": "^3.0.5", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", - "dev": true, + "node_modules/@inquirer/type": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz", + "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", - "dev": true, - "license": "MIT", + "node_modules/@internationalized/number": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.0.tgz", + "integrity": "sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==", + "license": "Apache-2.0", "dependencies": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@swc/helpers": "^0.5.0" } }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "license": "MIT", + "node_modules/@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "devOptional": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@cypress/request": { - "version": "2.88.12", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", - "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "~6.10.3", - "safe-buffer": "^5.1.2", - "tough-cookie": "^4.1.3", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" + "node": ">=12" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@cypress/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "devOptional": true, "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, "engines": { - "node": ">= 0.12" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@cypress/request/node_modules/qs": { - "version": "6.10.5", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", - "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "devOptional": true, + "license": "MIT", "dependencies": { - "side-channel": "^1.0.4" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.6" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@cypress/request/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@cypress/xvfb/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@cypress/xvfb/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, - "license": "MIT" - }, - "node_modules/@dfinity/agent": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.15.7.tgz", - "integrity": "sha512-w34yvlUTpPBG8nLOD0t/ao3k2xonOFq4QGvfJ1HiS/nIggdza/3xC3nLBszGrjVYWj1jqu8BLFvQXCAeWin75A==", - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "base64-arraybuffer": "^0.2.0", - "bignumber.js": "^9.0.0", - "borc": "^2.1.1", - "js-sha256": "0.9.0", - "simple-cbor": "^0.4.1", - "ts-node": "^10.8.2" + "minipass": "^7.0.4" }, - "peerDependencies": { - "@dfinity/candid": "^0.15.7", - "@dfinity/principal": "^0.15.7" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@dfinity/auth-client": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.15.7.tgz", - "integrity": "sha512-f6cRqXayCf+7+9gNcDnAZZwJrgBYKIzfxjxeRLlpsueQeo+E/BX2yVSANxzTkCNc4U3p+ttHI1RNtasLunYTcA==", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "devOptional": true, + "license": "ISC", "dependencies": { - "idb": "^7.0.2" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, - "peerDependencies": { - "@dfinity/agent": "^0.15.7", - "@dfinity/identity": "^0.15.7", - "@dfinity/principal": "^0.15.7" + "engines": { + "node": ">=8" } }, - "node_modules/@dfinity/candid": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.15.7.tgz", - "integrity": "sha512-lTcjK/xrSyT7wvUQ2pApG+yklQAwxaofQ04D1IWv0/8gKbY0eUbh8G2w6+CypJ15Hb1CH24ijUj8nWdeX/z3jg==", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "ts-node": "^10.8.2" + "sprintf-js": "~1.0.2" } }, - "node_modules/@dfinity/identity": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.15.7.tgz", - "integrity": "sha512-kBAkx9wq78jSQf6T5aayLyWm8YgtOZw8bW6+OuzX6tR3hkAEa85A9TcKA7BjkmMWSIskjEDVQub4fFfKWS2vOQ==", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "devOptional": true, + "license": "MIT", "dependencies": { - "borc": "^2.1.1", - "js-sha256": "^0.9.0", - "tweetnacl": "^1.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "@dfinity/agent": "^0.15.7", - "@dfinity/principal": "^0.15.7", - "@peculiar/webcrypto": "^1.4.0" + "engines": { + "node": ">=8" } }, - "node_modules/@dfinity/identity/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "license": "Unlicense" - }, - "node_modules/@dfinity/principal": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.15.7.tgz", - "integrity": "sha512-6/AkYzpGEH6Jw/0+B/EeeQn+5u2GDDvRLt1kQPhIG4txQYFnOy04H3VvyrymmfAj6/CXUgrOrux6OxgYSLYVJg==", - "license": "Apache-2.0", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "devOptional": true, + "license": "MIT", "dependencies": { - "js-sha256": "^0.9.0", - "ts-node": "^10.8.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@dinero.js/currencies": { - "version": "2.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/@dinero.js/currencies/-/currencies-2.0.0-alpha.8.tgz", - "integrity": "sha512-zApiqtuuPwjiM9LJA5/kNcT48VSHRiz2/mktkXjIpfxrJKzthXybUAgEenExIH6dYhLDgVmsLQZtZFOsdYl0Ag==", - "license": "MIT" - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "devOptional": true, "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/@emnapi/core": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz", - "integrity": "sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==", - "dev": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "devOptional": true, "license": "MIT", "dependencies": { - "@emnapi/wasi-threads": "1.0.1", - "tslib": "^2.4.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@emnapi/runtime": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", - "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", - "dev": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "devOptional": true, "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", - "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", - "dev": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" + "engines": { + "node": ">=8" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", - "cpu": [ - "ppc64" - ], - "dev": true, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", - "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.5", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", - "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", - "dev": true, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "devOptional": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@eslint/eslintrc/node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, "license": "MIT" }, - "node_modules/@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", - "dev": true, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "devOptional": true, "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", - "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", - "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.10.0", - "levn": "^0.4.1" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@hexagon/base64": { - "version": "1.1.28", - "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", - "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==", - "license": "MIT" - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, "engines": { - "node": ">=18.18.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "devOptional": true, + "license": "MIT", "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "jest-get-type": "^29.6.3" }, "engines": { - "node": ">=18.18.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@inquirer/checkbox": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.0.4.tgz", - "integrity": "sha512-fYAKCAcGNMdfjL6hZTRUwkIByQ8EIZCXKrIQZH7XjADnN/xvRUhj8UdBbpC4zoUzvChhkSC/zRKaP/tDs3dZpg==", - "dev": true, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "devOptional": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/figures": "^1.0.9", - "@inquirer/type": "^3.0.2", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@types/node": ">=18" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@inquirer/confirm": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.0.2.tgz", - "integrity": "sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "devOptional": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.0", - "@inquirer/type": "^3.0.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@inquirer/core": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.2.tgz", - "integrity": "sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.9", - "@inquirer/type": "^3.0.2", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@inquirer/core/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "license": "ISC", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@inquirer/core/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@inquirer/core/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "devOptional": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@inquirer/editor": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.1.tgz", - "integrity": "sha512-xn9aDaiP6nFa432i68JCaL302FyL6y/6EG97nAtfIPnWZ+mWPgCMLGc4XZ2QQMsZtu9q3Jd5AzBPjXh10aX9kA==", - "dev": true, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/type": "^3.0.2", - "external-editor": "^3.1.0" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@inquirer/expand": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.4.tgz", - "integrity": "sha512-GYocr+BPyxKPxQ4UZyNMqZFSGKScSUc0Vk17II3J+0bDcgGsQm0KYQNooN1Q5iBfXsy3x/VWmHGh20QnzsaHwg==", - "dev": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/type": "^3.0.2", - "yoctocolors-cjs": "^2.1.2" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": ">=6.0.0" } }, - "node_modules/@inquirer/figures": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.9.tgz", - "integrity": "sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=6.0.0" } }, - "node_modules/@inquirer/input": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.1.tgz", - "integrity": "sha512-nAXAHQndZcXB+7CyjIW3XuQZZHbQQ0q8LX6miY6bqAWwDzNa9JUioDBYrFmOUNIsuF08o1WT/m2gbBXvBhYVxg==", - "dev": true, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/type": "^3.0.2" - }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": ">=6.0.0" } }, - "node_modules/@inquirer/number": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.4.tgz", - "integrity": "sha512-DX7a6IXRPU0j8kr2ovf+QaaDiIf+zEKaZVzCWdLOTk7XigqSXvoh4cul7x68xp54WTQrgSnW7P1WBJDbyY3GhA==", - "dev": true, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/type": "^3.0.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@inquirer/password": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.4.tgz", - "integrity": "sha512-wiliQOWdjM8FnBmdIHtQV2Ca3S1+tMBUerhyjkRCv1g+4jSvEweGu9GCcvVEgKDhTBT15nrxvk5/bVrGUqSs1w==", - "dev": true, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/type": "^3.0.2", - "ansi-escapes": "^4.3.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@inquirer/prompts": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.1.0.tgz", - "integrity": "sha512-5U/XiVRH2pp1X6gpNAjWOglMf38/Ys522ncEHIKT1voRUvSj/DQnR22OVxHnwu5S+rCFaUiPQ57JOtMFQayqYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.0.2", - "@inquirer/confirm": "^5.0.2", - "@inquirer/editor": "^4.1.0", - "@inquirer/expand": "^4.0.2", - "@inquirer/input": "^4.0.2", - "@inquirer/number": "^3.0.2", - "@inquirer/password": "^4.0.2", - "@inquirer/rawlist": "^4.0.2", - "@inquirer/search": "^3.0.2", - "@inquirer/select": "^4.0.2" - }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "@types/node": ">=18" + "tslib": "2" } }, - "node_modules/@inquirer/prompts/node_modules/@inquirer/confirm": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.1.tgz", - "integrity": "sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.2.0.tgz", + "integrity": "sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/type": "^3.0.2" + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" }, "engines": { - "node": ">=18" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "@types/node": ">=18" + "tslib": "2" } }, - "node_modules/@inquirer/rawlist": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.4.tgz", - "integrity": "sha512-IsVN2EZdNHsmFdKWx9HaXb8T/s3FlR/U1QPt9dwbSyPtjFbMTlW9CRFvnn0bm/QIsrMRD2oMZqrQpSWPQVbXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/type": "^3.0.2", - "yoctocolors-cjs": "^2.1.2" - }, + "node_modules/@jsonjoy.com/util": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", + "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "@types/node": ">=18" + "tslib": "2" } }, - "node_modules/@inquirer/search": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.4.tgz", - "integrity": "sha512-tSkJk2SDmC2MEdTIjknXWmCnmPr5owTs9/xjfa14ol1Oh95n6xW7SYn5fiPk4/vrJPys0ggSWiISdPze4LTa7A==", + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@levischuck/tiny-cbor": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.11.tgz", + "integrity": "sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==", + "license": "MIT" + }, + "node_modules/@listr2/prompt-adapter-inquirer": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.18.tgz", + "integrity": "sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/figures": "^1.0.9", - "@inquirer/type": "^3.0.2", - "yoctocolors-cjs": "^2.1.2" + "@inquirer/type": "^1.5.5" }, "engines": { - "node": ">=18" + "node": ">=18.0.0" }, "peerDependencies": { - "@types/node": ">=18" + "@inquirer/prompts": ">= 3 < 8" } }, - "node_modules/@inquirer/select": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.0.4.tgz", - "integrity": "sha512-ZzYLuLoUzTIW9EJm++jBpRiTshGqS3Q1o5qOEQqgzaBlmdsjQr6pA4TUNkwu6OBYgM2mIRbCz6mUhFDfl/GF+w==", + "node_modules/@listr2/prompt-adapter-inquirer/node_modules/@inquirer/type": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/figures": "^1.0.9", - "@inquirer/type": "^3.0.2", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" + "mute-stream": "^1.0.0" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" } }, - "node_modules/@inquirer/type": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.2.tgz", - "integrity": "sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==", - "license": "MIT", + "node_modules/@listr2/prompt-adapter-inquirer/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@internationalized/number": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.0.tgz", - "integrity": "sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - } + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.2.6.tgz", + "integrity": "sha512-yF/ih9EJJZc72psFQbwnn8mExIWfTnzWJg+N02hnpXtDPETYLmQswIMBn7+V88lfCaFrMozJsUvcEQIkEPU0Gg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@ioredis/commands": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", - "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", - "license": "MIT" + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.2.6.tgz", + "integrity": "sha512-5BbCumsFLbCi586Bb1lTWQFkekdQUw8/t8cy++Uq251cl3hbDIGEwD9HAwh8H6IS2F6QA9KdKmO136LmipRNkg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "devOptional": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.2.6.tgz", + "integrity": "sha512-+6XgLpMb7HBoWxXj+bLbiiB4s0mRRcDPElnRS3LpWRzdYSe+gFk5MT/4RrVNqd2MESUDmb53NUXw1+BP69bjiQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "devOptional": true, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.2.6.tgz", + "integrity": "sha512-l5VmJamJ3nyMmeD1ANBQCQqy7do1ESaJQfKPSm2IG9/ADZryptTyCj8N6QaYgIWewqNUrcbdMkJajRQAt5Qjfg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.2.6.tgz", + "integrity": "sha512-nDYT8qN9si5+onHYYaI4DiauDMx24OAiuZAUsEqrDy+ja/3EbpXPX/VAkMV8AEaQhy3xc4dRC+KcYIvOFefJ4Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.2.6.tgz", + "integrity": "sha512-XlqVtILonQnG+9fH2N3Aytria7P/1fwDgDhl29rde96uH2sLB8CHORIf2PfuLVzFQJ7Uqp8py9AYwr3ZUCFfWg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "devOptional": true, + "node_modules/@mdx-js/react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", + "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@types/mdx": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "devOptional": true, - "license": "MIT" + "node_modules/@mermaid-js/parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.3.0.tgz", + "integrity": "sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA==", + "license": "MIT", + "optional": true, + "dependencies": { + "langium": "3.0.0" + } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "devOptional": true, + "node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.9.1.tgz", + "integrity": "sha512-znN/Qm6M0U1t3iF10gu1hSxDkk18yz78yvk+AMB34UDzpXHiC1zbpIeV2CQNV5GCeafmCICmcn9y1qh7F54KTg==", + "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@module-federation/sdk": "0.9.1", + "@types/semver": "7.5.8", + "semver": "7.6.3" + } + }, + "node_modules/@module-federation/bridge-react-webpack-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "devOptional": true, + "node_modules/@module-federation/data-prefetch": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.9.1.tgz", + "integrity": "sha512-rS1AsgRvIMAWK8oMprEBF0YQ3WvsqnumjinvAZU1Dqut5DICmpQMTPEO1OrAKyjO+PQgEhmq13HggzN6ebGLrQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "@module-federation/runtime": "0.9.1", + "@module-federation/sdk": "0.9.1", + "fs-extra": "9.1.0" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "devOptional": true, + "node_modules/@module-federation/dts-plugin": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.9.1.tgz", + "integrity": "sha512-DezBrFaIKfDcEY7UhqyO1WbYocERYsR/CDN8AV6OvMnRlQ8u0rgM8qBUJwx0s+K59f+CFQFKEN4C8p7naCiHrw==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@module-federation/error-codes": "0.9.1", + "@module-federation/managers": "0.9.1", + "@module-federation/sdk": "0.9.1", + "@module-federation/third-party-dts-extractor": "0.9.1", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.7.4", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "2.15.4", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.18.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } } }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "node_modules/@module-federation/dts-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^7.0.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "devOptional": true, - "license": "ISC", + "node_modules/@module-federation/enhanced": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.9.1.tgz", + "integrity": "sha512-c9siKVjcgT2gtDdOTqEr+GaP2X/PWAS0OV424ljKLstFL1lcS/BIsxWFDmxPPl5hDByAH+1q4YhC1LWY4LNDQw==", + "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@module-federation/bridge-react-webpack-plugin": "0.9.1", + "@module-federation/data-prefetch": "0.9.1", + "@module-federation/dts-plugin": "0.9.1", + "@module-federation/error-codes": "0.9.1", + "@module-federation/inject-external-runtime-core-plugin": "0.9.1", + "@module-federation/managers": "0.9.1", + "@module-federation/manifest": "0.9.1", + "@module-federation/rspack": "0.9.1", + "@module-federation/runtime-tools": "0.9.1", + "@module-federation/sdk": "0.9.1", + "btoa": "^1.2.1", + "upath": "2.0.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/@module-federation/error-codes": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.9.1.tgz", + "integrity": "sha512-q8spCvlwUzW42iX1irnlBTcwcZftRNHyGdlaoFO1z/fW4iphnBIfijzkigWQzOMhdPgzqN/up7XN+g5hjBGBtw==", + "dev": true, + "license": "MIT" }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.9.1.tgz", + "integrity": "sha512-BPfzu1cqDU5BhM493enVF1VfxJWmruen0ktlHrWdJJlcddhZzyFBGaLAGoGc+83fS75aEllvJTEthw4kMViMQQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "peerDependencies": { + "@module-federation/runtime-tools": "0.9.1" } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "devOptional": true, + "node_modules/@module-federation/managers": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.9.1.tgz", + "integrity": "sha512-8hpIrvGfiODxS1qelTd7eaLRVF7jrp17RWgeH1DWoprxELANxm5IVvqUryB+7j+BhoQzamog9DL5q4MuNfGgIA==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@module-federation/sdk": "0.9.1", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" } }, - "node_modules/@jest/console/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, + "node_modules/@module-federation/manifest": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.9.1.tgz", + "integrity": "sha512-+GteKBXrAUkq49i2CSyWZXM4vYa+mEVXxR9Du71R55nXXxgbzAIoZj9gxjRunj9pcE8+YpAOyfHxLEdWngxWdg==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "@module-federation/dts-plugin": "0.9.1", + "@module-federation/managers": "0.9.1", + "@module-federation/sdk": "0.9.1", + "chalk": "3.0.0", + "find-pkg": "2.0.0" } }, - "node_modules/@jest/console/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "devOptional": true, + "node_modules/@module-federation/manifest/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + } + }, + "node_modules/@module-federation/node": { + "version": "2.6.28", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.6.28.tgz", + "integrity": "sha512-0N0vb4wRRvbKXWQUIWcurvBYHXzkzV8M1yzhhQzeYAVGyfGMmx/WRXPLTld6rEk1iymRuhyC7gYNcA1TnXDb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/enhanced": "0.10.0", + "@module-federation/runtime": "0.10.0", + "@module-federation/sdk": "0.10.0", + "@module-federation/utilities": "3.1.46", + "btoa": "1.2.1", + "encoding": "^0.1.13", + "node-fetch": "2.7.0" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "react": "^16||^17||^18", + "react-dom": "^16||^17||^18", + "webpack": "^5.40.0" }, "peerDependenciesMeta": { - "node-notifier": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { "optional": true } } }, - "node_modules/@jest/core/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.10.0.tgz", + "integrity": "sha512-wvqsjqqVXNI36Q98zFFK4saBFH3M+kJC9c/UZfGIWC86kBVRgWDOKphP4nF+cpjJsFEexoGCNefUswqsx14Y1Q==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "@module-federation/sdk": "0.10.0", + "@types/semver": "7.5.8", + "semver": "7.6.3" } }, - "node_modules/@jest/core/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/data-prefetch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.10.0.tgz", + "integrity": "sha512-aXomkuNNTNhJmU9TQALvvRbf8NlDkPd3Q3iGJ817qAwnHIXAQ3x9nRtWqhAIovQra3R7i3u3KI1hIe0ivTIrNg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "@module-federation/runtime": "0.10.0", + "@module-federation/sdk": "0.10.0", + "fs-extra": "9.1.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/@jest/environment/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/dts-plugin": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.10.0.tgz", + "integrity": "sha512-RP5Rv0dhU2OovcMKjnMIoi6ybcS2vftT/v5Ia5qCHIyl3YtvbqS1Eo4C59sKEfnYUkGYMFZxjPhKNZjKVfrATg==", + "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "@module-federation/error-codes": "0.10.0", + "@module-federation/managers": "0.10.0", + "@module-federation/sdk": "0.10.0", + "@module-federation/third-party-dts-extractor": "0.10.0", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.7.4", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "2.15.4", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.18.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/enhanced": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.10.0.tgz", + "integrity": "sha512-JN6LXGM2mu17JaXJMRZVSwbsxnBDO+6vz2VcQAwnlAQkBn2dvTwBBj0YyCYaO6BzNWjiYtGF8TEu5NAVhAxxLQ==", + "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3" + "@module-federation/bridge-react-webpack-plugin": "0.10.0", + "@module-federation/data-prefetch": "0.10.0", + "@module-federation/dts-plugin": "0.10.0", + "@module-federation/error-codes": "0.10.0", + "@module-federation/inject-external-runtime-core-plugin": "0.10.0", + "@module-federation/managers": "0.10.0", + "@module-federation/manifest": "0.10.0", + "@module-federation/rspack": "0.10.0", + "@module-federation/runtime-tools": "0.10.0", + "@module-federation/sdk": "0.10.0", + "btoa": "^1.2.1", + "upath": "2.0.1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/error-codes": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.10.0.tgz", + "integrity": "sha512-DfLcssfcCG0gXW2GY8v1ZCa7u0oSwtRnrk1gCjL+SfQxvpCL4S9RgYdl6me3vKOjirttCp289MVa1IHF7wu8qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@module-federation/node/node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.10.0.tgz", + "integrity": "sha512-+Da+uvnexREenBDISIuwEj0dC9ZjLFkMM06xxUBJ7ahvq0rk0/11XVBO2G4oo2ceqQQpUex0BzRWKSZ7ys8IFQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "@module-federation/runtime-tools": "0.10.0" } }, - "node_modules/@jest/fake-timers/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/managers": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.10.0.tgz", + "integrity": "sha512-k+AM7Cg9mwlfSo4KPK04oSxXWwv9EHWOMgOJnrb77r5ZBGQoBE6cwrICJGfppiIZGyY7z2k1RvYuy/1DK1PXDA==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "@module-federation/sdk": "0.10.0", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" } }, - "node_modules/@jest/fake-timers/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/manifest": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.10.0.tgz", + "integrity": "sha512-XdZqYb5hQCzZhJPbgfXM9VDgDKLqZmHKpQrsYFeK5MTOJX6EmpHSCCZs8vcnf9DXUy9flxtjwBzDeHgASQnpJQ==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@module-federation/dts-plugin": "0.10.0", + "@module-federation/managers": "0.10.0", + "@module-federation/sdk": "0.10.0", + "chalk": "3.0.0", + "find-pkg": "2.0.0" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/rspack": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.10.0.tgz", + "integrity": "sha512-qLbQbPVVOhpmehfGjsnJBdSQqqsLhbEcCMnKG+/e5FZma0I+J716wo70WaXyGk2GsCLe4O0yJOm3kvKygKwR+A==", + "dev": true, "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@module-federation/bridge-react-webpack-plugin": "0.10.0", + "@module-federation/dts-plugin": "0.10.0", + "@module-federation/inject-external-runtime-core-plugin": "0.10.0", + "@module-federation/managers": "0.10.0", + "@module-federation/manifest": "0.10.0", + "@module-federation/runtime-tools": "0.10.0", + "@module-federation/sdk": "0.10.0" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@rspack/core": ">=0.7", + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" }, "peerDependenciesMeta": { - "node-notifier": { + "typescript": { + "optional": true + }, + "vue-tsc": { "optional": true } } }, - "node_modules/@jest/reporters/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/runtime": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.10.0.tgz", + "integrity": "sha512-qO09AAuiVhYzHXeZiNd04oPb/I6O2/voW/GrSHvQQ2/CterakKHXq27xfFcmlKMY0TnxQNpIV0dQq2vWUEjeRw==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "@module-federation/error-codes": "0.10.0", + "@module-federation/runtime-core": "0.10.0", + "@module-federation/sdk": "0.10.0" } }, - "node_modules/@jest/reporters/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/runtime-core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.10.0.tgz", + "integrity": "sha512-eIQoJ302ZNVcz3B5OfRCg2+CykK6+tKtLzyyN1hRaK8rzhuEj9UpNugshPeGWw+G+n0mtYmE7oydKGKWnkqgFA==", + "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@module-federation/error-codes": "0.10.0", + "@module-federation/sdk": "0.10.0" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/runtime-tools": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.10.0.tgz", + "integrity": "sha512-RB0lfWFlhgjnAeGD+Mn1xrg7X91QSAtsC39cR/nwhb0InNB/ZSK8naP3/O/V6lz6Za9GPNpoXa06NOexdn0tOg==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@module-federation/runtime": "0.10.0", + "@module-federation/webpack-bundler-runtime": "0.10.0" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/sdk": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.10.0.tgz", + "integrity": "sha512-enS4rKLSsoLCB6RxmRgcIdPRiRLgk94qtT2x0CKYhsqz3OJmHVkD0c6Pt5dMgSyLd+1Uo83d9rI492YqzuxO6Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@module-federation/node/node_modules/@module-federation/third-party-dts-extractor": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.10.0.tgz", + "integrity": "sha512-QEsCm24F3M6rWwoD0IYB/15DzQvqfbdwzGxAc0BsZ2iD/t//Pz8MQ4w+U0nizFto94i8T1gQBYP4nfPcfWUpjg==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.10.0.tgz", + "integrity": "sha512-ArgG3qaB99JkfJ6+EfH/Omgq01FB/tnJZrkw//rFfXpPMCXO7vo9ZURrbT2YPZGGrjDsT9PCdPKfPmUPKnTaqw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@module-federation/runtime": "0.10.0", + "@module-federation/sdk": "0.10.0" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "devOptional": true, + "node_modules/@module-federation/node/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@jest/types/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "node_modules/@module-federation/node/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@jest/types/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "node_modules/@module-federation/rspack": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.9.1.tgz", + "integrity": "sha512-ZJqG75dWHhyTMa9I0YPJEV2XRt0MFxnDiuMOpI92esdmwWY633CBKyNh1XxcLd629YVeTv03+whr+Fz/f91JEw==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@module-federation/bridge-react-webpack-plugin": "0.9.1", + "@module-federation/dts-plugin": "0.9.1", + "@module-federation/inject-external-runtime-core-plugin": "0.9.1", + "@module-federation/managers": "0.9.1", + "@module-federation/manifest": "0.9.1", + "@module-federation/runtime-tools": "0.9.1", + "@module-federation/sdk": "0.9.1" }, - "engines": { - "node": ">=6.0.0" + "peerDependencies": { + "@rspack/core": ">=0.7", + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/@module-federation/runtime": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.9.1.tgz", + "integrity": "sha512-jp7K06weabM5BF5sruHr/VLyalO+cilvRDy7vdEBqq88O9mjc0RserD8J+AP4WTl3ZzU7/GRqwRsiwjjN913dA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "@module-federation/error-codes": "0.9.1", + "@module-federation/runtime-core": "0.9.1", + "@module-federation/sdk": "0.9.1" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "node_modules/@module-federation/runtime-core": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.9.1.tgz", + "integrity": "sha512-r61ufhKt5pjl81v7TkmhzeIoSPOaNtLynW6+aCy3KZMa3RfRevFxmygJqv4Nug1L0NhqUeWtdLejh4VIglNy5Q==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "@module-federation/error-codes": "0.9.1", + "@module-federation/sdk": "0.9.1" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "node_modules/@module-federation/runtime-tools": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.9.1.tgz", + "integrity": "sha512-JQZ//ab+lEXoU2DHAH+JtYASGzxEjXB0s4rU+6VJXc8c+oUPxH3kWIwzjdncg2mcWBmC1140DCk+K+kDfOZ5CQ==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@module-federation/runtime": "0.9.1", + "@module-federation/webpack-bundler-runtime": "0.9.1" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "node_modules/@module-federation/sdk": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.9.1.tgz", + "integrity": "sha512-YQonPTImgnCqZjE/A+3N2g3J5ypR6kx1tbBzc9toUANKr/dw/S63qlh/zHKzWQzxjjNNVMdXRtTMp07g3kgEWg==", + "dev": true, "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "node_modules/@module-federation/third-party-dts-extractor": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.9.1.tgz", + "integrity": "sha512-KeIByP718hHyq+Mc53enZ419pZZ1fh9Ns6+/bYLkc3iCoJr/EDBeiLzkbMwh2AS4Qk57WW0yNC82xzf7r0Zrrw==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" } }, - "node_modules/@kurkle/color": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", - "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", - "license": "MIT" - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "license": "MIT" - }, - "node_modules/@levischuck/tiny-cbor": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz", - "integrity": "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==", - "license": "MIT" - }, - "node_modules/@listr2/prompt-adapter-inquirer": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.18.tgz", - "integrity": "sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==", + "node_modules/@module-federation/third-party-dts-extractor/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/type": "^1.5.5" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=18.0.0" + "bin": { + "resolve": "bin/resolve" }, - "peerDependencies": { - "@inquirer/prompts": ">= 3 < 8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@listr2/prompt-adapter-inquirer/node_modules/@inquirer/type": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", - "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "node_modules/@module-federation/utilities": { + "version": "3.1.46", + "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.46.tgz", + "integrity": "sha512-m0J5TirDzJfOjiDnn5YrcTLEPjOwc7MI2q4DNxc41YOXoSyochwSJLy6PBMkdbCwlUHE2aNhFn6zgHtvGYpsmQ==", "dev": true, "license": "MIT", "dependencies": { - "mute-stream": "^1.0.0" + "@module-federation/sdk": "0.10.0" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.1.5.tgz", - "integrity": "sha512-ue5PSOzHMCIYrfvPP/MRS6hsKKLzqqhcdAvJCO8uFlDdj598EhgnacuOTuqA6uBK5rgiZXfDWyb7DVZSiBKxBA==", + "node_modules/@module-federation/utilities/node_modules/@module-federation/sdk": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.10.0.tgz", + "integrity": "sha512-enS4rKLSsoLCB6RxmRgcIdPRiRLgk94qtT2x0CKYhsqz3OJmHVkD0c6Pt5dMgSyLd+1Uo83d9rI492YqzuxO6Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.9.1.tgz", + "integrity": "sha512-CxySX01gT8cBowKl9xZh+voiHvThMZ471icasWnlDIZb14KasZoX1eCh9wpGvwoOdIk9rIRT7h70UvW9nmop6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.9.1", + "@module-federation/sdk": "0.9.1" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", "cpu": [ "arm64" ], @@ -6257,413 +5744,354 @@ "darwin" ] }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", - "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], "license": "MIT", - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.8.9.tgz", - "integrity": "sha512-gM5fnWvFfTEfh5UjSmNod1H/np/pUUjvJnnN31ucKcZ21mL6wJo0A+Vfj8a5gv34S+1n5lWR1b6eVv9CofwgDQ==", - "dev": true, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@module-federation/sdk": "0.8.9", - "@types/semver": "7.5.8", - "semver": "7.6.3" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@module-federation/data-prefetch": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.8.9.tgz", - "integrity": "sha512-doUzJ5uuLPrN5e/NMvKuyUE/lqiZFgGzFITwBF90/KKqOq7R2ZWh43R4RJgkUYfs/F119AYXZ9jxrSphIh+cjg==", - "dev": true, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@module-federation/runtime": "0.8.9", - "@module-federation/sdk": "0.8.9", - "fs-extra": "9.1.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@module-federation/dts-plugin": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.8.9.tgz", - "integrity": "sha512-Q40yqdQvTV8QRoegjUquTejhLl2gZoPv623hc8MWmGuP2vXLBIJJ9iV849LkFLeE8xaUgtwmn2uCQeBh2aJNjg==", - "dev": true, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@module-federation/error-codes": "0.8.9", - "@module-federation/managers": "0.8.9", - "@module-federation/sdk": "0.8.9", - "@module-federation/third-party-dts-extractor": "0.8.9", - "adm-zip": "^0.5.10", - "ansi-colors": "^4.1.3", - "axios": "^1.7.4", - "chalk": "3.0.0", - "fs-extra": "9.1.0", - "isomorphic-ws": "5.0.0", - "koa": "2.15.3", - "lodash.clonedeepwith": "4.5.0", - "log4js": "6.9.1", - "node-schedule": "2.1.1", - "rambda": "^9.1.0", - "ws": "8.18.0" - }, - "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24" - }, - "peerDependenciesMeta": { - "vue-tsc": { - "optional": true - } - } + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@module-federation/dts-plugin/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, + "node_modules/@napi-rs/nice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz", + "integrity": "sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, "engines": { - "node": ">=8" - } - }, - "node_modules/@module-federation/enhanced": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.8.9.tgz", - "integrity": "sha512-feZUhznCyFkyivWNSFPN+FHMZmyrxlKBhWW8ldWsp/LlKIzWI75vMLimpiydBWnWTZgnOhQDBZGZVxSlfnfKHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.8.9", - "@module-federation/data-prefetch": "0.8.9", - "@module-federation/dts-plugin": "0.8.9", - "@module-federation/error-codes": "0.8.9", - "@module-federation/inject-external-runtime-core-plugin": "0.8.9", - "@module-federation/managers": "0.8.9", - "@module-federation/manifest": "0.8.9", - "@module-federation/rspack": "0.8.9", - "@module-federation/runtime-tools": "0.8.9", - "@module-federation/sdk": "0.8.9", - "btoa": "^1.2.1", - "upath": "2.0.1" + "node": ">= 10" }, - "peerDependencies": { - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24", - "webpack": "^5.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vue-tsc": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/@module-federation/error-codes": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.9.tgz", - "integrity": "sha512-yUA3GZjOy8Ll6l193faXir2veexDaUiLdmptbzC9tIee/iSQiSwIlibdTafCfqaJ62cLZaytOUdmAFAKLv8QQw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.8.9.tgz", - "integrity": "sha512-F3s/3Iny20c0Y0CaXgOZdgl7PzgXj6ftCiT5FO6QWmyhzfl2R0o3KFuv54BmwtoimSFky1ShuC/jPluz4EGG1g==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@module-federation/runtime-tools": "0.8.9" + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.0.1", + "@napi-rs/nice-android-arm64": "1.0.1", + "@napi-rs/nice-darwin-arm64": "1.0.1", + "@napi-rs/nice-darwin-x64": "1.0.1", + "@napi-rs/nice-freebsd-x64": "1.0.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", + "@napi-rs/nice-linux-arm64-gnu": "1.0.1", + "@napi-rs/nice-linux-arm64-musl": "1.0.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", + "@napi-rs/nice-linux-s390x-gnu": "1.0.1", + "@napi-rs/nice-linux-x64-gnu": "1.0.1", + "@napi-rs/nice-linux-x64-musl": "1.0.1", + "@napi-rs/nice-win32-arm64-msvc": "1.0.1", + "@napi-rs/nice-win32-ia32-msvc": "1.0.1", + "@napi-rs/nice-win32-x64-msvc": "1.0.1" } }, - "node_modules/@module-federation/managers": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.8.9.tgz", - "integrity": "sha512-Fb28sa2iAqwSSSgiPBoL5Kp0RB9ZKJvdwLAEwZBV2c2LyZUqJCdTjmYuB5Q2sWB9wsudd/ijV6WWNK/nVoJxdA==", - "dev": true, + "node_modules/@napi-rs/nice-android-arm-eabi": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz", + "integrity": "sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@module-federation/sdk": "0.8.9", - "find-pkg": "2.0.0", - "fs-extra": "9.1.0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/manifest": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.8.9.tgz", - "integrity": "sha512-48jIv50l0tTx+CVzs2JKMlTO0mcUvFRDxqO79nJaL1DLfpRQoCRQjCA8sXUp5PPIyJ8MHQqkHK/dnaal4NlR/A==", - "dev": true, + "node_modules/@napi-rs/nice-android-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.0.1.tgz", + "integrity": "sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@module-federation/dts-plugin": "0.8.9", - "@module-federation/managers": "0.8.9", - "@module-federation/sdk": "0.8.9", - "chalk": "3.0.0", - "find-pkg": "2.0.0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/manifest/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, + "node_modules/@napi-rs/nice-darwin-arm64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz", + "integrity": "sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@module-federation/node": { - "version": "2.6.22", - "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.6.22.tgz", - "integrity": "sha512-KlBJXakBO0KMCLTv7622aQNQk3JLfUqXJtd28nUt7xJNV9OZclHvRmKS83zHGEV/6hBKuLtYlP/+S4LMoMKiOw==", - "dev": true, + "node_modules/@napi-rs/nice-darwin-x64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.0.1.tgz", + "integrity": "sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@module-federation/enhanced": "0.8.9", - "@module-federation/runtime": "0.8.9", - "@module-federation/sdk": "0.8.9", - "@module-federation/utilities": "3.1.40", - "btoa": "1.2.1", - "encoding": "^0.1.13", - "node-fetch": "2.7.0" - }, - "peerDependencies": { - "react": "^16||^17||^18", - "react-dom": "^16||^17||^18", - "webpack": "^5.40.0" - }, - "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/rspack": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.8.9.tgz", - "integrity": "sha512-wuHRx+aUYhsrAQzU5yKQksaOJ8pwhuQJDl8I86xmzkEsnxcWsZcn49xIR4t7v1HcYAqjBXLNXSoQwkIMH9zu2w==", - "dev": true, + "node_modules/@napi-rs/nice-freebsd-x64": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.0.1.tgz", + "integrity": "sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.8.9", - "@module-federation/dts-plugin": "0.8.9", - "@module-federation/inject-external-runtime-core-plugin": "0.8.9", - "@module-federation/managers": "0.8.9", - "@module-federation/manifest": "0.8.9", - "@module-federation/runtime-tools": "0.8.9", - "@module-federation/sdk": "0.8.9" - }, - "peerDependencies": { - "@rspack/core": ">=0.7", - "typescript": "^4.9.0 || ^5.0.0", - "vue-tsc": ">=1.0.24" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vue-tsc": { - "optional": true - } + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/runtime": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.9.tgz", - "integrity": "sha512-i+a+/hoT/c+EE52mT+gJrbA6DhL86PY9cd/dIv/oKpLz9i+yYBlG+RA+puc7YsUEO4irbFLvnIMq6AGDUKVzYA==", - "dev": true, + "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.0.1.tgz", + "integrity": "sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@module-federation/error-codes": "0.8.9", - "@module-federation/runtime-core": "0.6.17", - "@module-federation/sdk": "0.8.9" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/runtime-core": { - "version": "0.6.17", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.6.17.tgz", - "integrity": "sha512-PXFN/TT9f64Un6NQYqH1Z0QLhpytW15jkZvTEOV8W7Ed319BECFI0Rv4xAsAGa8zJGFoaM/c7QOQfdFXtKj5Og==", - "dev": true, + "node_modules/@napi-rs/nice-linux-arm64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.0.1.tgz", + "integrity": "sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@module-federation/error-codes": "0.8.9", - "@module-federation/sdk": "0.8.9" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/runtime-tools": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.8.9.tgz", - "integrity": "sha512-xBUGx1oOZNuxXjPGdTMrLtAIDrbrN6jE2Mgb9w1qr2mQ4AW9b5TOlxbARBoX4q98xt9oFCGU6Q0eW5XJpsl8AQ==", - "dev": true, + "node_modules/@napi-rs/nice-linux-arm64-musl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.0.1.tgz", + "integrity": "sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@module-federation/runtime": "0.8.9", - "@module-federation/webpack-bundler-runtime": "0.8.9" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/sdk": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.9.tgz", - "integrity": "sha512-QJ60itWC/SPjqduT7wDiF8UGwVU/yJ/Sz+QbnoxB9b7gNLzvI//swAXTo9eOtKsCy/V2BMwjt0F3eOcfnaqllA==", - "dev": true, + "node_modules/@napi-rs/nice-linux-ppc64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.0.1.tgz", + "integrity": "sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==", + "cpu": [ + "ppc64" + ], "license": "MIT", - "dependencies": { - "isomorphic-rslog": "0.0.7" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.8.9.tgz", - "integrity": "sha512-53v6B5zfhGlAPpH0SrlJDp9B6kcOcZaUPi6J4L/7ie5F0YVe0vq/mJGOOzAStN9ggJjSrjBZLFT3gFmBYM3Z9A==", - "dev": true, + "node_modules/@napi-rs/nice-linux-riscv64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.0.1.tgz", + "integrity": "sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==", + "cpu": [ + "riscv64" + ], "license": "MIT", - "dependencies": { - "find-pkg": "2.0.0", - "fs-extra": "9.1.0", - "resolve": "1.22.8" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/third-party-dts-extractor/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, + "node_modules/@napi-rs/nice-linux-s390x-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.0.1.tgz", + "integrity": "sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==", + "cpu": [ + "s390x" + ], "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/utilities": { - "version": "3.1.40", - "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.40.tgz", - "integrity": "sha512-/Oa0jtNCEEfQhXIV0/H/pm+PEfYy4QUfCIcgTr5TJ1QB3OR1D+tBYRFGYYJaTeMRzS4PI4Rh1vv/egzQ9pbgSg==", - "dev": true, + "node_modules/@napi-rs/nice-linux-x64-gnu": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.0.1.tgz", + "integrity": "sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@module-federation/sdk": "0.8.9" - }, - "peerDependencies": { - "react": "^16 || ^17 || ^18", - "react-dom": "^16 || ^17 || ^18", - "webpack": "^5.40.0" - }, - "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.9.tgz", - "integrity": "sha512-DYLvVi4b2MUYu/B4g5wIC5SHxiODboKHkYGHYapOhCcqOchca/N16gtiAI8eSNjJPc+fgUXUGIyGiB18IlFEeQ==", - "dev": true, + "node_modules/@napi-rs/nice-linux-x64-musl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.0.1.tgz", + "integrity": "sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@module-federation/runtime": "0.8.9", - "@module-federation/sdk": "0.8.9" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "node_modules/@napi-rs/nice-win32-arm64-msvc": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.0.1.tgz", + "integrity": "sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==", "cpu": [ "arm64" ], "license": "MIT", "optional": true, "os": [ - "darwin" - ] + "win32" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/@napi-rs/nice": { + "node_modules/@napi-rs/nice-win32-ia32-msvc": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz", - "integrity": "sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.0.1.tgz", + "integrity": "sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==", + "cpu": [ + "ia32" + ], "license": "MIT", "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@napi-rs/nice-android-arm-eabi": "1.0.1", - "@napi-rs/nice-android-arm64": "1.0.1", - "@napi-rs/nice-darwin-arm64": "1.0.1", - "@napi-rs/nice-darwin-x64": "1.0.1", - "@napi-rs/nice-freebsd-x64": "1.0.1", - "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1", - "@napi-rs/nice-linux-arm64-gnu": "1.0.1", - "@napi-rs/nice-linux-arm64-musl": "1.0.1", - "@napi-rs/nice-linux-ppc64-gnu": "1.0.1", - "@napi-rs/nice-linux-riscv64-gnu": "1.0.1", - "@napi-rs/nice-linux-s390x-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-gnu": "1.0.1", - "@napi-rs/nice-linux-x64-musl": "1.0.1", - "@napi-rs/nice-win32-arm64-msvc": "1.0.1", - "@napi-rs/nice-win32-ia32-msvc": "1.0.1", - "@napi-rs/nice-win32-x64-msvc": "1.0.1" } }, - "node_modules/@napi-rs/nice-darwin-arm64": { + "node_modules/@napi-rs/nice-win32-x64-msvc": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz", - "integrity": "sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.0.1.tgz", + "integrity": "sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==", "cpu": [ - "arm64" + "x64" ], "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">= 10" @@ -6765,18 +6193,6 @@ "rxjs": "^7.1.0" } }, - "node_modules/@nestjs/config/node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/@nestjs/core": { "version": "10.4.15", "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.15.tgz", @@ -6815,12 +6231,6 @@ } } }, - "node_modules/@nestjs/core/node_modules/path-to-regexp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", - "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", - "license": "MIT" - }, "node_modules/@nestjs/event-emitter": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.1.1.tgz", @@ -7000,6 +6410,24 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@nestjs/schematics/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/@nestjs/schematics/node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -7042,13 +6470,6 @@ "node": ">= 6" } }, - "node_modules/@nestjs/schematics/node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@nestjs/schematics/node_modules/magic-string": { "version": "0.30.8", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", @@ -7105,16 +6526,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@nestjs/schematics/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, "node_modules/@nestjs/serve-static": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-4.0.2.tgz", @@ -7176,6 +6587,22 @@ } } }, + "node_modules/@ngtools/webpack": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.2.1.tgz", + "integrity": "sha512-K8b3+eCG+Iz0EXTE/UDuXabr6yOL9NP6sW1CLk9AUdUUnL4AhoQy/vjfaOtxZx1T8qEErAWizJ51dHD25ysXHw==", + "license": "MIT", + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0", + "typescript": ">=5.5 <5.9", + "webpack": "^5.54.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -7242,19 +6669,12 @@ "node": ">= 14" } }, - "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } + "license": "ISC" }, "node_modules/@npmcli/fs": { "version": "4.0.0", @@ -7270,9 +6690,9 @@ } }, "node_modules/@npmcli/git": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-6.0.1.tgz", - "integrity": "sha512-BBWMMxeQzalmKadyimwb2/VVQyJB01PH0HhVSNLHNBDZN/M/h/02P6f8fxedIiFhpMj11SO9Ep5tKTBE7zL2nw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-6.0.3.tgz", + "integrity": "sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ==", "dev": true, "license": "ISC", "dependencies": { @@ -7281,7 +6701,6 @@ "lru-cache": "^10.0.1", "npm-pick-manifest": "^10.0.0", "proc-log": "^5.0.0", - "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^5.0.0" @@ -7290,6 +6709,39 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/@npmcli/installed-package-contents": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", @@ -7318,9 +6770,9 @@ } }, "node_modules/@npmcli/package-json": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-6.1.0.tgz", - "integrity": "sha512-t6G+6ZInT4X+tqj2i+wlLIeCKnKOTuz9/VFYDtj+TGTur5q7sp/OYrQA19LdBbWfXDOi0Y4jtedV6xtB8zQ9ug==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-6.1.1.tgz", + "integrity": "sha512-d5qimadRAUCO4A/Txw71VM7UrRZzV+NPclxz/dc+M6B2oYwjWTjqh8HA/sGQgs9VZuJ6I/P7XIAlJvgrl27ZOw==", "dev": true, "license": "ISC", "dependencies": { @@ -7328,14 +6780,24 @@ "glob": "^10.2.2", "hosted-git-info": "^8.0.0", "json-parse-even-better-errors": "^4.0.0", - "normalize-package-data": "^7.0.0", "proc-log": "^5.0.0", - "semver": "^7.5.3" + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" }, "engines": { "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/@npmcli/package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@npmcli/package-json/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -7357,16 +6819,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", - "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, "node_modules/@npmcli/package-json/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -7383,23 +6835,49 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz", - "integrity": "sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==", + "node_modules/@npmcli/promise-spawn": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz", + "integrity": "sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", "dependencies": { - "which": "^5.0.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/redact": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.0.0.tgz", - "integrity": "sha512-/1uFzjVcfzqrgCeGW7+SZ4hv0qLWmKXVzFahZGJ6QuJBj6Myt9s17+JL86i76NV9YSnJRcGXJYQbAU0rn1YTCQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.1.1.tgz", + "integrity": "sha512-3Hc2KGIkrvJWJqTbvueXzBeZlmvoOxc2jyX00yzr3+sNFquJg0N8hH4SAPLPVrkWIRQICVpVgjrss971awXVnA==", "dev": true, "license": "ISC", "engines": { @@ -7407,9 +6885,9 @@ } }, "node_modules/@npmcli/run-script": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-9.0.2.tgz", - "integrity": "sha512-cJXiUlycdizQwvqE1iaAb4VRUM3RX09/8q46zjvy+ct9GhfZRWd7jXYVc1tn/CfRlGPVkX/u4sstRlepsm7hfw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-9.1.0.tgz", + "integrity": "sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==", "dev": true, "license": "ISC", "dependencies": { @@ -7424,6 +6902,32 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/@nuxtjs/opencollective": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", @@ -7443,19 +6947,19 @@ } }, "node_modules/@nx/angular": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-20.3.2.tgz", - "integrity": "sha512-8waa4ZSu94us116+7e/qnRBzF8FcwXx91NLbWCz2YBidfuJ54hbs/nPABfJv6zcoWVNW2/j+kD1AZK5fXlObRA==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-20.5.0.tgz", + "integrity": "sha512-xAImgqAe0tosatUPuTB5dM5vjdIhlvMqmLzVpqcszlAdNK0sud0AuDo783axKCEkVnZplD79rtv7EytltK1NjQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.2", - "@nx/eslint": "20.3.2", - "@nx/js": "20.3.2", - "@nx/module-federation": "20.3.2", - "@nx/web": "20.3.2", - "@nx/webpack": "20.3.2", - "@nx/workspace": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/eslint": "20.5.0", + "@nx/js": "20.5.0", + "@nx/module-federation": "20.5.0", + "@nx/web": "20.5.0", + "@nx/webpack": "20.5.0", + "@nx/workspace": "20.5.0", "@phenomnomnominal/tsquery": "~5.0.1", "@typescript-eslint/type-utils": "^8.0.0", "magic-string": "~0.30.2", @@ -7474,14 +6978,14 @@ "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/@nx/angular/node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "node_modules/@nx/angular/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "balanced-match": "^1.0.0" } }, "node_modules/@nx/angular/node_modules/minimatch": { @@ -7500,16 +7004,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nx/angular/node_modules/piscina": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.8.0.tgz", - "integrity": "sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "@napi-rs/nice": "^1.0.1" - } - }, "node_modules/@nx/angular/node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", @@ -7526,15 +7020,15 @@ } }, "node_modules/@nx/cypress": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-20.3.2.tgz", - "integrity": "sha512-rUPUGdZkt2XrlqEUJmbQkzXB741l+DD4foB8q/CDNaA99beE/TSalbiPdMe7dGvwfJWCQ7N7eoR7liHwvgwAIA==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-20.5.0.tgz", + "integrity": "sha512-D/HEBu40/Wr0MozIyBcSPgNh8aGKqyzctmqZJvZJCt78s0N7fyC/nVNk3QQthVPPggi2bIkVNo1oZS/n6y8ezQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.2", - "@nx/eslint": "20.3.2", - "@nx/js": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/eslint": "20.5.0", + "@nx/js": "20.5.0", "@phenomnomnominal/tsquery": "~5.0.1", "detect-port": "^1.5.1", "tslib": "^2.3.0" @@ -7549,9 +7043,9 @@ } }, "node_modules/@nx/devkit": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-20.3.2.tgz", - "integrity": "sha512-VhbxEsSTCZlOVgjuQC+6HQmb9Oz9VoHUeo4001Pw6BFBcSXZUi5q37C/lxbAgQPnMKLkFcLva3WKZ+fOLwhGIg==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-20.5.0.tgz", + "integrity": "sha512-FLHjNRb6VImdlnDsp3ioIdM600y2xPvN88LFV9zPrG2hDXSaD9Np9YBZvvfCr4x46MrPCTTMoAVwWsCXIBgchg==", "dev": true, "license": "MIT", "dependencies": { @@ -7568,6 +7062,16 @@ "nx": ">= 19 <= 21" } }, + "node_modules/@nx/devkit/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@nx/devkit/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -7585,17 +7089,17 @@ } }, "node_modules/@nx/eslint": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-20.3.2.tgz", - "integrity": "sha512-vWvMmJ4aU/CjqomTVLuMlmhxKj/Q2wlhu9tQhZlDexDGfGF4QMidrbb25Rqog9NSeeI5hhBp57TQjfDyEF8HhQ==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-20.5.0.tgz", + "integrity": "sha512-9rMnlkSJ+Be+rXICDXaBoDfE5PbSV4TBnG0BM2V9dB1iRWpVtgv49ZreDUFYW0AAJ/RrlGHtlbYl6vupxL9EGg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.2", - "@nx/js": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/js": "20.5.0", "semver": "^7.5.3", "tslib": "^2.3.0", - "typescript": "~5.6.2" + "typescript": "~5.7.2" }, "peerDependencies": { "@zkochan/js-yaml": "0.0.7", @@ -7608,14 +7112,14 @@ } }, "node_modules/@nx/eslint-plugin": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-20.3.2.tgz", - "integrity": "sha512-m3gWjOY9Cn4lujMZITfxuD+T7iPf0MOqfiTU8gnlybGpqxOL2F6roHtVRX3aas2cKtSTY/Kk+fIalIJVSxfSoQ==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-20.5.0.tgz", + "integrity": "sha512-SEryJj5c50JWZgv2NaJUgQTy6l2Xwzmgu7hJpDD4Xc0LWMirrLix95XY8Plkom4y328GXL5k8CuFESjCh+9aew==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.2", - "@nx/js": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/js": "20.5.0", "@typescript-eslint/type-utils": "^8.0.0", "@typescript-eslint/utils": "^8.0.0", "chalk": "^4.1.0", @@ -7636,9 +7140,9 @@ } }, "node_modules/@nx/eslint-plugin/node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "license": "MIT", "engines": { @@ -7649,16 +7153,16 @@ } }, "node_modules/@nx/jest": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-20.3.2.tgz", - "integrity": "sha512-YW+KVoQEZi1Otm1wBAu0Bf3uq1Kp7ighPW73e8bL0SQPTdp6Afdn/52HZfrOGvBjdHLrZ50N817IJLUpApJ82g==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-20.5.0.tgz", + "integrity": "sha512-/wfADqIHQx2QYmylkAYimP1J7XFbBThce9fPaRQ/Ybows3x9YCfHJT0A7eetIf0qEaxmogigm/0QVmtkPArorg==", "dev": true, "license": "MIT", "dependencies": { "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", - "@nx/devkit": "20.3.2", - "@nx/js": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/js": "20.5.0", "@phenomnomnominal/tsquery": "~5.0.1", "identity-obj-proxy": "3.0.0", "jest-config": "^29.4.1", @@ -7672,6 +7176,16 @@ "yargs-parser": "21.1.1" } }, + "node_modules/@nx/jest/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@nx/jest/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -7689,9 +7203,9 @@ } }, "node_modules/@nx/js": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-20.3.2.tgz", - "integrity": "sha512-t2mLCogVc/DWpkJ1SW4pFgeyWAmuy7EI4IPyShtF4s9mhqyIDfd29fGYsocuv84skX6y4JMOw3O+c+LXdQ9QWw==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-20.5.0.tgz", + "integrity": "sha512-TFdmmSARDNYiwxXUsVowHgMYhjuGzYG4wWExCXkb8m4g6ER1zT9oUzGRf9eC7CHFTGonvAQ8hgBt90xt2EUdQA==", "dev": true, "license": "MIT", "dependencies": { @@ -7702,11 +7216,11 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nx/devkit": "20.3.2", - "@nx/workspace": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/workspace": "20.5.0", "@zkochan/js-yaml": "0.0.7", "babel-plugin-const-enum": "^1.0.1", - "babel-plugin-macros": "^2.8.0", + "babel-plugin-macros": "^3.1.0", "babel-plugin-transform-typescript-metadata": "^0.3.1", "chalk": "^4.1.0", "columnify": "^1.6.0", @@ -7715,10 +7229,11 @@ "ignore": "^5.0.4", "js-tokens": "^4.0.0", "jsonc-parser": "3.2.0", - "minimatch": "9.0.3", "npm-package-arg": "11.0.1", "npm-run-path": "^4.0.1", "ora": "5.3.0", + "picocolors": "^1.1.0", + "picomatch": "4.0.2", "semver": "^7.5.3", "source-map-support": "0.5.19", "tinyglobby": "^0.2.10", @@ -7727,7 +7242,7 @@ "tslib": "^2.3.0" }, "peerDependencies": { - "verdaccio": "^5.0.4" + "verdaccio": "^6.0.5" }, "peerDependenciesMeta": { "verdaccio": { @@ -7735,30 +7250,14 @@ } } }, - "node_modules/@nx/js/node_modules/babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - } - }, - "node_modules/@nx/js/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/@nx/js/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "restore-cursor": "^3.1.0" }, "engines": { "node": ">=8" @@ -7777,21 +7276,19 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@nx/js/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@nx/js/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT" + }, + "node_modules/@nx/js/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" }, "node_modules/@nx/js/node_modules/npm-package-arg": { "version": "11.0.1", @@ -7842,6 +7339,37 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@nx/js/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@nx/js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@nx/js/node_modules/source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", @@ -7908,157 +7436,40 @@ } }, "node_modules/@nx/module-federation": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-20.3.2.tgz", - "integrity": "sha512-i7Ze1Sjk68eE5qgsvMPXZlJuLHvwp3s/nWlDmJzcEdbiq2szRGgZ/NOLrZJYvSTkIe0YosCQ0PtY6wfGXwWjbQ==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-20.5.0.tgz", + "integrity": "sha512-dQG3QSsWpdbammmPBP1E4sCkcUCxL5OIwwIDVyYrf2Rdw4f8s6VAGq+BlVFOfP28sVi5xB0wOgDomohVrUXoig==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/enhanced": "^0.8.8", - "@module-federation/node": "^2.6.21", - "@module-federation/sdk": "^0.8.8", - "@nx/devkit": "20.3.2", - "@nx/js": "20.3.2", - "@nx/web": "20.3.2", - "@rspack/core": "^1.1.5", - "express": "^4.19.2", + "@module-federation/enhanced": "^0.9.0", + "@module-federation/node": "^2.6.26", + "@module-federation/sdk": "^0.9.0", + "@nx/devkit": "20.5.0", + "@nx/js": "20.5.0", + "@nx/web": "20.5.0", + "express": "^4.21.2", "http-proxy-middleware": "^3.0.3", "picocolors": "^1.1.0", "tslib": "^2.3.0", - "webpack": "5.88.0" - } - }, - "node_modules/@nx/module-federation/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "webpack": "^5.88.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@nx/module-federation/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/@nx/module-federation/node_modules/http-proxy-middleware": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz", - "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.15", - "debug": "^4.3.6", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.3", - "is-plain-object": "^5.0.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@nx/module-federation/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/module-federation/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@nx/module-federation/node_modules/webpack": { - "version": "5.88.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz", - "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "@rspack/core": "^1.1.5" } }, "node_modules/@nx/nest": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-20.3.2.tgz", - "integrity": "sha512-+/6xWf2Sdt0+8Bca1pBRDFT5XcGFBi5XUeHypJyoHPAxxoPsw3ZWQtKeSMDqVwghWvmz6GGGM6GynbHF9h8X6A==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-20.5.0.tgz", + "integrity": "sha512-/rbI9snHVY+cCUjlee5jjPufBTJYjFUFpZ/n30CuvitGIa+oBvzQlSPYH8n9N3v4/7I6Hg/CYcn9+jDl3DNu/w==", "dev": true, "license": "MIT", "dependencies": { "@nestjs/schematics": "^9.1.0", - "@nx/devkit": "20.3.2", - "@nx/eslint": "20.3.2", - "@nx/js": "20.3.2", - "@nx/node": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/eslint": "20.5.0", + "@nx/js": "20.5.0", + "@nx/node": "20.5.0", "tslib": "^2.3.0" } }, @@ -8136,9 +7547,27 @@ "require-from-string": "^2.0.2", "uri-js": "^4.2.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nx/nest/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, "node_modules/@nx/nest/node_modules/chokidar": { @@ -8183,6 +7612,26 @@ "node": ">= 6" } }, + "node_modules/@nx/nest/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/nest/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@nx/nest/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -8213,34 +7662,24 @@ "node": ">=8.10.0" } }, - "node_modules/@nx/nest/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, "node_modules/@nx/node": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/node/-/node-20.3.2.tgz", - "integrity": "sha512-JvYXPjoPho+RJKXgg2b0/hQ2SivccfGG+vkoQ4XcwBLW7qUjKUjxmkgSHD4XaAgf9Fe9L9Pqni58CriwzNfaFg==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/node/-/node-20.5.0.tgz", + "integrity": "sha512-L89o7daSJpgjBfYRQVbpr0i/WNE8zs/lRIcI6+cbP0mgZA6Wa7lzgQ3qR8hP+Bqttl8SCooJodv3Wyk57qnbdQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.2", - "@nx/eslint": "20.3.2", - "@nx/jest": "20.3.2", - "@nx/js": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/eslint": "20.5.0", + "@nx/jest": "20.5.0", + "@nx/js": "20.5.0", "tslib": "^2.3.0" } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.3.2.tgz", - "integrity": "sha512-lQOXMIPmE9o36TuZ+SX6iq7PPWa3s1fjNRqCujlviExX69245NNCMxd754gXlLrsxC1onrx/zmJciKmmEWDIiw==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.5.0.tgz", + "integrity": "sha512-HlMMC4d253kk/yrafiepk8bhXMl+v4BIugftwUzRl7AOznyNgaj5WDaIVXZLZzt+WwYw6CTb+zYxfY4LuPFvOg==", "cpu": [ "arm64" ], @@ -8255,9 +7694,9 @@ } }, "node_modules/@nx/nx-darwin-x64": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.3.2.tgz", - "integrity": "sha512-RvvSz4QYVOYOfC8sUE63b6dy8iHk2AEI0r1FF5FCQuqE1DdTeTjPETY2sY35tRqF+mO/6oLGp2+m9ti/ysRoTg==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.5.0.tgz", + "integrity": "sha512-+LO8YC5Iy1168saPeItNePChToP2TuRCj3MuxEtTTJXoRlab38rNaOjWaV1itvtcgrzkQi/IohINWMI8WC5b7g==", "cpu": [ "x64" ], @@ -8272,9 +7711,9 @@ } }, "node_modules/@nx/nx-freebsd-x64": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.3.2.tgz", - "integrity": "sha512-KBDTyGn1evlZ17pupwRUDh2wrCMuHhP2j8cOCdgF5cl7vRki8BOK9yyL6jD11d/d/6DgXzy1jmQEX4Xx+AGCug==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.5.0.tgz", + "integrity": "sha512-he3VOuj35XDAAmO3s6LqiWx00CsCMgHceNOHziCELQL0tfQlvvyI0Agmhesw68BAbabt+mKH9g+miENiaMknbg==", "cpu": [ "x64" ], @@ -8289,9 +7728,9 @@ } }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.3.2.tgz", - "integrity": "sha512-mW+OcOnJEMvs7zD3aSwEG3z5M9bI4CuUU5Q/ePmnNzWIucRHpoAMNt/Sd+yu6L4+QttvoUf967uwcMsX8l4nrw==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.5.0.tgz", + "integrity": "sha512-xeysjXvm4xZa/ED7XlbzuS28sCOGZ0AlS7DKWRxEMv60iprxewj0WKPdH7RveiNNauzgHWOW/wxvTWXRu+i36Q==", "cpu": [ "arm" ], @@ -8306,9 +7745,9 @@ } }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.3.2.tgz", - "integrity": "sha512-hbXpZqUvGY5aeEWvh0SNsiYjP1ytSM30XOT6qN6faLO2CL/7j9D2UB69SKOqF3TJOvuNU6cweFgZCxyGfXBYIQ==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.5.0.tgz", + "integrity": "sha512-pj+6OA7d1ltkW/ZYFooi3bDtqVFPxi8YYiZlQx7enEuOxbrTvpjEPvBjVyf+oYpCe9rfKlx9ghzufqsI4uGM0w==", "cpu": [ "arm64" ], @@ -8323,9 +7762,9 @@ } }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.3.2.tgz", - "integrity": "sha512-HXthtN7adXCNVWs2F4wIqq2f7BcKTjsEnqg2LWV5lm4hRYvMfEvPftb0tECsEhcSQQYcvIJnLfv3vtu9HZSfVA==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.5.0.tgz", + "integrity": "sha512-gCIJEb/VYv6pxiAcSeizX0jpOmTnPmgYVi2EZLSWus0Pg6FIwMHE4MX5kuqehyvnDt9xInb7Rh8vgz/JBOOsbA==", "cpu": [ "arm64" ], @@ -8340,9 +7779,9 @@ } }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.3.2.tgz", - "integrity": "sha512-HhgHqOUT05H45zuQL+XPywQbRNFttd7Rkkr7dZnpCRdp4W8GDjfyKCoCS5qVyowAyNh9Vc7VEq9qmiLMlvf6Zg==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.5.0.tgz", + "integrity": "sha512-hfCDmfy7TBQJdgBwNvOh55e8Y00Cxcddw2QeKguvy6vsnVa7fesXDWCw2t3m/VPPQDKQGd8cY1lS1JqX3N+wCA==", "cpu": [ "x64" ], @@ -8357,9 +7796,9 @@ } }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.3.2.tgz", - "integrity": "sha512-NrZ8L9of2GmYEM8GMJX6QRrLJlAwM+ds2rhdY1bxwpiyCNcD3IO/gzJlBs+kG4ly05F1u/X4k/FI5dXPpjUSgw==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.5.0.tgz", + "integrity": "sha512-RTTCPjZNSDFE5mUdavDFimDw/aXNBY0w+iuRM5q17rDHxwa//DghCY0GEkBdfuxD7wpw+sRwE18mWsNDek5lXA==", "cpu": [ "x64" ], @@ -8374,9 +7813,9 @@ } }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.3.2.tgz", - "integrity": "sha512-yLjacZND7C1XmsC0jfRLSgeLWZUw2Oz+u3nXNvj5JX6YHtYTVLFnRbTAcI+pG2Y6v0Otf2GKb3VT5d1mQb8JvA==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.5.0.tgz", + "integrity": "sha512-nT9WlG0QA8D74UJhEP1feGrV00/bas1nnqS+zkwnpJs0vcPmMuIktdETh3lEnqrGD04R7GtwbKtoGIGiZh5m9w==", "cpu": [ "arm64" ], @@ -8391,9 +7830,9 @@ } }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.3.2.tgz", - "integrity": "sha512-oDhcctfk0UB1V+Otp1161VKNMobzkFQxGyiEIjp0CjCBa2eRHC1r35L695F1Hj0bvLQPSni9XIe9evh2taeAkg==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.5.0.tgz", + "integrity": "sha512-KQVqFSYfc8ToSBgzhVNV8WcFEvLdy1zp58qwewa0xnE7DDncMbA+6YoVizUcQ/6GZRlMJ9sdVn3kwm5B8eD5mg==", "cpu": [ "x64" ], @@ -8408,30 +7847,30 @@ } }, "node_modules/@nx/storybook": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-20.3.2.tgz", - "integrity": "sha512-gminOP6SssVZsHSBfpnmk9MDn1miMPF0zTO2KUx6V4pzQAC9yrV5MNv9ai6wNxTOfTzAAzr6uQCftjBs3kXaRQ==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-20.5.0.tgz", + "integrity": "sha512-mNDkkitZTncfFqWc3diz5ayAmxUZl3XkFr932TvieDFZd9UKictGYilyc0kyTTnu8oZRUdpN09zUjoYwMsjpkg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/cypress": "20.3.2", - "@nx/devkit": "20.3.2", - "@nx/eslint": "20.3.2", - "@nx/js": "20.3.2", + "@nx/cypress": "20.5.0", + "@nx/devkit": "20.5.0", + "@nx/eslint": "20.5.0", + "@nx/js": "20.5.0", "@phenomnomnominal/tsquery": "~5.0.1", "semver": "^7.5.3", "tslib": "^2.3.0" } }, "node_modules/@nx/web": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-20.3.2.tgz", - "integrity": "sha512-Kw8is78c3zo4M2bPCVgF2XJev3oCPyl9wyTuexzc5y3praF/r0Dc1jlGiHqwdeGBKpNNDaZns4WZe5KUaIc/Qg==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-20.5.0.tgz", + "integrity": "sha512-hxM9CKedYC8uE4e6Wo2/5xt2wCzJPHiJLq/6AK3liwK/o7bAJfkvwM/b9gwPAIVYy5R0DDgfA4N6vYO231eflA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.2", - "@nx/js": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/js": "20.5.0", "detect-port": "^1.5.1", "http-server": "^14.1.0", "picocolors": "^1.1.0", @@ -8439,15 +7878,15 @@ } }, "node_modules/@nx/webpack": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-20.3.2.tgz", - "integrity": "sha512-/3N4cRCbwHSZsJDHukV0QrIBZxFJpGjZFEPLswkAn8B+9AQVkp8ZieZYgu08XixXVj/9oTK4sbOh143/eu+93g==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-20.5.0.tgz", + "integrity": "sha512-sA02FviLw8D/hWm/u4l13onwNTl1lJX2nJaC0dOIJ1RfZZauD7Ca5tYjqwPC8uXh4/9h+0Kpewm66aJYML+WnA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@nx/devkit": "20.3.2", - "@nx/js": "20.3.2", + "@nx/devkit": "20.5.0", + "@nx/js": "20.5.0", "@phenomnomnominal/tsquery": "~5.0.1", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", @@ -8468,8 +7907,9 @@ "postcss-import": "~14.1.0", "postcss-loader": "^6.1.1", "rxjs": "^7.8.0", - "sass": "^1.42.1", - "sass-loader": "^12.2.0", + "sass": "^1.85.0", + "sass-embedded": "^1.83.4", + "sass-loader": "^16.0.4", "source-map-loader": "^5.0.0", "style-loader": "^3.3.0", "stylus": "^0.64.0", @@ -8484,17 +7924,96 @@ "webpack-subresource-integrity": "^5.1.0" } }, - "node_modules/@nx/webpack/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@nx/webpack/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/@nx/webpack/node_modules/copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 12.20.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/@nx/webpack/node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@nx/webpack/node_modules/less": { @@ -8524,155 +8043,172 @@ "source-map": "~0.6.0" } }, - "node_modules/@nx/webpack/node_modules/parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/webpack/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@nx/webpack/node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", "dev": true, "license": "MIT", + "dependencies": { + "klona": "^2.0.4" + }, "engines": { - "node": ">=8.6" + "node": ">= 14.15.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" } }, - "node_modules/@nx/webpack/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/@nx/webpack/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=8.10.0" + "node": ">=8.9.0" } }, - "node_modules/@nx/webpack/node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", - "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", + "node_modules/@nx/webpack/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=6" } }, - "node_modules/@nx/webpack/node_modules/webpack-dev-server": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.0.tgz", - "integrity": "sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==", + "node_modules/@nx/webpack/node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@nx/webpack/node_modules/mini-css-extract-plugin": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", + "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", "dev": true, "license": "MIT", "dependencies": { - "@types/bonjour": "^3.5.13", - "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.21", - "@types/serve-index": "^1.9.4", - "@types/serve-static": "^1.15.5", - "@types/sockjs": "^0.3.36", - "@types/ws": "^8.5.10", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.2.1", - "chokidar": "^3.6.0", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "express": "^4.21.2", - "graceful-fs": "^4.2.6", - "http-proxy-middleware": "^2.0.7", - "ipaddr.js": "^2.1.0", - "launch-editor": "^2.6.1", - "open": "^10.0.3", - "p-retry": "^6.2.0", - "schema-utils": "^4.2.0", - "selfsigned": "^2.4.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^7.4.2", - "ws": "^8.18.0" + "schema-utils": "^4.0.0" }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/@nx/webpack/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/webpack/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nx/webpack/node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" }, "engines": { - "node": ">= 18.12.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } } }, - "node_modules/@nx/webpack/node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@nx/webpack/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, "engines": { - "node": ">= 8.10.0" + "node": ">=12" }, "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@nx/workspace": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.3.2.tgz", - "integrity": "sha512-Dj2AbG9X8Uo6k3XhcuNOblDgR/U8u5+x41hMNKHSG9Pi3CyAJ24didtn1SMf78GElzPOV94KJZmioGHw3rKyCg==", + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.5.0.tgz", + "integrity": "sha512-Oe5p7rcgF/o4G2XDHYOxQxa/eDEfvmQV+kFCs8DBQwlzUwREAP4/pHFI0AIdWSfYkq55C5PE/PNKUGHrk2/xTA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.3.2", + "@nx/devkit": "20.5.0", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "20.3.2", + "nx": "20.5.0", "tslib": "^2.3.0", "yargs-parser": "21.1.1" } }, "node_modules/@parcel/watcher": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", - "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -8690,25 +8226,45 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.0", - "@parcel/watcher-darwin-arm64": "2.5.0", - "@parcel/watcher-darwin-x64": "2.5.0", - "@parcel/watcher-freebsd-x64": "2.5.0", - "@parcel/watcher-linux-arm-glibc": "2.5.0", - "@parcel/watcher-linux-arm-musl": "2.5.0", - "@parcel/watcher-linux-arm64-glibc": "2.5.0", - "@parcel/watcher-linux-arm64-musl": "2.5.0", - "@parcel/watcher-linux-x64-glibc": "2.5.0", - "@parcel/watcher-linux-x64-musl": "2.5.0", - "@parcel/watcher-win32-arm64": "2.5.0", - "@parcel/watcher-win32-ia32": "2.5.0", - "@parcel/watcher-win32-x64": "2.5.0" + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", "cpu": [ "arm64" ], @@ -8725,6 +8281,246 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true + }, "node_modules/@peculiar/asn1-android": { "version": "2.3.15", "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.15.tgz", @@ -8975,10 +8771,36 @@ "@redis/client": "^1.0.0" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.26.0.tgz", - "integrity": "sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", "cpu": [ "arm64" ], @@ -8988,99 +8810,450 @@ "darwin" ] }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", + "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rspack/binding": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.1.8.tgz", - "integrity": "sha512-+/JzXx1HctfgPj+XtsCTbRkxiaOfAXGZZLEvs7jgp04WgWRSZ5u97WRCePNPvy+sCfOEH/2zw2ZK36Z7oQRGhQ==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.2.8.tgz", + "integrity": "sha512-T3FMB3N9P1AbSAryfkSRJkPtmeSYs/Gj9zUZoPz1ckPEIcWZmpUOQbJylldjbw5waxtCL1haHNbi0pcSvxiaJw==", "devOptional": true, "license": "MIT", + "peer": true, "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.1.8", - "@rspack/binding-darwin-x64": "1.1.8", - "@rspack/binding-linux-arm64-gnu": "1.1.8", - "@rspack/binding-linux-arm64-musl": "1.1.8", - "@rspack/binding-linux-x64-gnu": "1.1.8", - "@rspack/binding-linux-x64-musl": "1.1.8", - "@rspack/binding-win32-arm64-msvc": "1.1.8", - "@rspack/binding-win32-ia32-msvc": "1.1.8", - "@rspack/binding-win32-x64-msvc": "1.1.8" + "@rspack/binding-darwin-arm64": "1.2.8", + "@rspack/binding-darwin-x64": "1.2.8", + "@rspack/binding-linux-arm64-gnu": "1.2.8", + "@rspack/binding-linux-arm64-musl": "1.2.8", + "@rspack/binding-linux-x64-gnu": "1.2.8", + "@rspack/binding-linux-x64-musl": "1.2.8", + "@rspack/binding-win32-arm64-msvc": "1.2.8", + "@rspack/binding-win32-ia32-msvc": "1.2.8", + "@rspack/binding-win32-x64-msvc": "1.2.8" } }, - "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.1.8.tgz", - "integrity": "sha512-I7avr471ghQ3LAqKm2fuXuJPLgQ9gffn5Q4nHi8rsukuZUtiLDPfYzK1QuupEp2JXRWM1gG5lIbSUOht3cD6Ug==", + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.2.8.tgz", + "integrity": "sha512-bDlrlroY3iMlzna/3i1gD6eRmhJW2zRyC3Ov6aR1micshVQ9RteigYZWkjZuQfyC5Z8dCcLUQJVojz+pqp0JXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.2.8.tgz", + "integrity": "sha512-0/qOVbMuzZ+WbtDa4TbH46R4vph/W6MHcXbrXDO+vpdTMFDVJ64DnZXT7aqvGcY+7vTCIGm0GT+6ooR4KaIX8A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.8.tgz", + "integrity": "sha512-En/SMl45s19iUVb1/ZDFQvFDxIjnlfk7yqV3drMWWAL5HSgksNejaTIFTO52aoohIBbmwuk5wSGcbU0G0IFiPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.8.tgz", + "integrity": "sha512-N1oZsXfJ9VLLcK7p1PS65cxLYQCZ7iqHW2OP6Ew2+hlz/d1hzngxgzrtZMCXFOHXDvTzVu5ff6jGS2v7+zv2tA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.8.tgz", + "integrity": "sha512-BdPaepoLKuaVwip4QK/nGqNi1xpbCWSxiycPbKRrGqKgt/QGihxxFgiqr4EpWQVIJNIMy4nCsg4arO0+H1KWGQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.8.tgz", + "integrity": "sha512-GFv0Bod268OcXIcjeLoPlK0oz8rClEIxIRFkz+ejhbvfCwRJ+Fd+EKaaKQTBfZQujPqc0h2GctIF25nN5pFTmA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.8.tgz", + "integrity": "sha512-aEU+uJdbvJJGrzzAsjbjrPeNbG/bcG8JoXK2kSsUB+/sWHTIkHX0AQ3oX3aV/lcLKgZWrUxLAfLoCXEnIHMEyQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.2.8.tgz", + "integrity": "sha512-GHYzNOSoiLyG9elLTmMqADJMQzjll+co4irp5AgZ+KHG9EVq0qEHxDqDIJxZnUA15U8JDvCgo6YAo3T0BFEL0Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.8.tgz", + "integrity": "sha512-EigKLhKLH1kfv1e/ZgXuSKlIjkbyneJtiLbNDz7EeEVFGV1XMM6bsCea1sb2WOxsPYiOX4Q5JmR1j1KGrZS/LA==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" - ] + "win32" + ], + "peer": true }, "node_modules/@rspack/core": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.1.8.tgz", - "integrity": "sha512-pcZtcj5iXLCuw9oElTYC47bp/RQADm/MMEb3djHdwJuSlFWfWPQi5QFgJ/lJAxIW9UNHnTFrYtytycfjpuoEcA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.2.8.tgz", + "integrity": "sha512-ppj3uQQtkhgrYDLrUqb33YbpNEZCpAudpfVuOHGsvUrAnu1PijbfJJymoA5ZvUhM+HNMvPI5D1ie97TXyb0UVg==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { - "@module-federation/runtime-tools": "0.5.1", - "@rspack/binding": "1.1.8", + "@module-federation/runtime-tools": "0.8.4", + "@rspack/binding": "1.2.8", "@rspack/lite-tapable": "1.0.1", - "caniuse-lite": "^1.0.30001616" + "caniuse-lite": "^1.0.30001702" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { + "@rspack/tracing": "^1.x", "@swc/helpers": ">=0.5.1" }, "peerDependenciesMeta": { + "@rspack/tracing": { + "optional": true + }, "@swc/helpers": { "optional": true } } }, + "node_modules/@rspack/core/node_modules/@module-federation/error-codes": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.4.tgz", + "integrity": "sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==", + "devOptional": true, + "license": "MIT", + "peer": true + }, "node_modules/@rspack/core/node_modules/@module-federation/runtime": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.5.1.tgz", - "integrity": "sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.4.tgz", + "integrity": "sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { - "@module-federation/sdk": "0.5.1" + "@module-federation/error-codes": "0.8.4", + "@module-federation/sdk": "0.8.4" } }, "node_modules/@rspack/core/node_modules/@module-federation/runtime-tools": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.5.1.tgz", - "integrity": "sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.8.4.tgz", + "integrity": "sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { - "@module-federation/runtime": "0.5.1", - "@module-federation/webpack-bundler-runtime": "0.5.1" + "@module-federation/runtime": "0.8.4", + "@module-federation/webpack-bundler-runtime": "0.8.4" } }, "node_modules/@rspack/core/node_modules/@module-federation/sdk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.5.1.tgz", - "integrity": "sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.4.tgz", + "integrity": "sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true, + "dependencies": { + "isomorphic-rslog": "0.0.6" + } }, "node_modules/@rspack/core/node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.5.1.tgz", - "integrity": "sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.4.tgz", + "integrity": "sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { - "@module-federation/runtime": "0.5.1", - "@module-federation/sdk": "0.5.1" + "@module-federation/runtime": "0.8.4", + "@module-federation/sdk": "0.8.4" } }, "node_modules/@rspack/lite-tapable": { @@ -9089,6 +9262,7 @@ "integrity": "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==", "devOptional": true, "license": "MIT", + "peer": true, "engines": { "node": ">=16.0.0" } @@ -9122,13 +9296,13 @@ } }, "node_modules/@schematics/angular": { - "version": "19.0.6", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.0.6.tgz", - "integrity": "sha512-HicclmbW/+mlljU7a4PzbyIWG+7tognoL5LsgMFJQUDzJXHNjRt1riL0vk57o8Pcprnz9FheeWZXO1KRhXkQuw==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.2.1.tgz", + "integrity": "sha512-QYYGVR2n+YtLzqo0IsQq7OUnBMeP6OjyuVlGdjsAnSDCKQ9kUcqZDwjxxh5NUj25R4vvu+5aVaa6W6iTxfHadQ==", "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.0.6", - "@angular-devkit/schematics": "19.0.6", + "@angular-devkit/core": "19.2.1", + "@angular-devkit/schematics": "19.2.1", "jsonc-parser": "3.3.1" }, "engines": { @@ -9137,20 +9311,14 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@schematics/angular/node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "license": "MIT" - }, "node_modules/@sigstore/bundle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.0.0.tgz", - "integrity": "sha512-XDUYX56iMPAn/cdgh/DTJxz5RWmqKV4pwvUAEKEWJl+HzKdCd/24wUa9JYNMlDSCb7SUHAdtksxYX779Nne/Zg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.1.0.tgz", + "integrity": "sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2" + "@sigstore/protobuf-specs": "^0.4.0" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -9167,26 +9335,26 @@ } }, "node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", - "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.4.0.tgz", + "integrity": "sha512-o09cLSIq9EKyRXwryWDOJagkml9XgQCoCSRjHOnHLnvsivaW7Qznzz6yjfV7PHJHhIvyp8OH7OX8w0Dc5bQK7A==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/sign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-3.0.0.tgz", - "integrity": "sha512-UjhDMQOkyDoktpXoc5YPJpJK6IooF2gayAr5LvXI4EL7O0vd58okgfRcxuaH+YTdhvb5aa1Q9f+WJ0c2sVuYIw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-3.1.0.tgz", + "integrity": "sha512-knzjmaOHOov1Ur7N/z4B1oPqZ0QX5geUfhrVaqVlu+hl0EAoL4o+l0MSULINcD5GCWe3Z0+YJO8ues6vFlW0Yw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.0.0", + "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^14.0.1", + "@sigstore/protobuf-specs": "^0.4.0", + "make-fetch-happen": "^14.0.2", "proc-log": "^5.0.0", "promise-retry": "^2.0.1" }, @@ -9195,13 +9363,13 @@ } }, "node_modules/@sigstore/tuf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-3.0.0.tgz", - "integrity": "sha512-9Xxy/8U5OFJu7s+OsHzI96IX/OzjF/zj0BSSaWhgJgTqtlBhQIV2xdrQI5qxLD7+CWWDepadnXAxzaZ3u9cvRw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-3.1.0.tgz", + "integrity": "sha512-suVMQEA+sKdOz5hwP9qNcEjX6B45R+hFFr4LAWzbRc5O+U2IInwvay/bpG5a4s+qR35P/JK/PiKiRGjfuLy1IA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/protobuf-specs": "^0.4.0", "tuf-js": "^3.0.1" }, "engines": { @@ -9209,15 +9377,15 @@ } }, "node_modules/@sigstore/verify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.0.0.tgz", - "integrity": "sha512-Ggtq2GsJuxFNUvQzLoXqRwS4ceRfLAJnrIHUDrzAD0GgnOhwujJkKkxM/s5Bako07c3WtAs/sZo5PJq7VHjeDg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.1.0.tgz", + "integrity": "sha512-kAAM06ca4CzhvjIZdONAL9+MLppW3K48wOFy1TbuaWFW/OMfl8JuTgW0Bm02JB1WJGT/ET2eqav0KTEKmxqkIA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.0.0", + "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2" + "@sigstore/protobuf-specs": "^0.4.0" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -9287,9 +9455,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.23.0.tgz", - "integrity": "sha512-9vI8ywhoqlaDEmrcntejrZ9X76Tddv2JyWakjVpqJAdDNXgf520sYkyjzGT0p8VJfPtSaKm6pMtl5sAH1r9cFg==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.28.0.tgz", + "integrity": "sha512-E7FwEoBQa3Mn39c2lZJVLcXnvGOJ+Sy1kJY/5LE30IO+MLqhCoAPxCIVbcOSN9OnvAMC+4ZveXGQp8bD2n6VFw==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -9297,6 +9465,9 @@ "engines": { "node": ">=16.0.0", "npm": ">=7.10.0" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.34.9" } }, "node_modules/@storybook/addon-actions": { @@ -9395,25 +9566,229 @@ "storybook": "^8.4.7" } }, - "node_modules/@storybook/addon-docs/node_modules/@mdx-js/react": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", - "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", + "node_modules/@storybook/addon-essentials": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.4.7.tgz", + "integrity": "sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/addon-actions": "8.4.7", + "@storybook/addon-backgrounds": "8.4.7", + "@storybook/addon-controls": "8.4.7", + "@storybook/addon-docs": "8.4.7", + "@storybook/addon-highlight": "8.4.7", + "@storybook/addon-measure": "8.4.7", + "@storybook/addon-outline": "8.4.7", + "@storybook/addon-toolbars": "8.4.7", + "@storybook/addon-viewport": "8.4.7", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/addon-highlight": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.4.7.tgz", + "integrity": "sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/addon-interactions": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.7.tgz", + "integrity": "sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.4.7", + "@storybook/test": "8.4.7", + "polished": "^4.2.2", + "ts-dedent": "^2.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/addon-measure": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.4.7.tgz", + "integrity": "sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/addon-outline": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.4.7.tgz", + "integrity": "sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/addon-toolbars": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.4.7.tgz", + "integrity": "sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/addon-viewport": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.7.tgz", + "integrity": "sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.4.7" + } + }, + "node_modules/@storybook/angular": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-8.4.7.tgz", + "integrity": "sha512-PYWWEvoe+sT8riprSQVCyGnQbifbuzT9YNYPi22YBxB8ZGVuIVwjshKjSZvC99ULQbMvJ/g2OPCcBA8hhc3aTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/builder-webpack5": "8.4.7", + "@storybook/components": "8.4.7", + "@storybook/core-webpack": "8.4.7", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "8.4.7", + "@storybook/preview-api": "8.4.7", + "@storybook/theming": "8.4.7", + "@types/node": "^22.0.0", + "@types/react": "^18.0.37", + "@types/react-dom": "^18.0.11", + "@types/semver": "^7.3.4", + "@types/webpack-env": "^1.18.0", + "fd-package-json": "^1.2.0", + "find-up": "^5.0.0", + "semver": "^7.3.7", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0", + "tsconfig-paths-webpack-plugin": "^4.0.1", + "util-deprecate": "^1.0.2", + "webpack": "5" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@angular-devkit/architect": ">=0.1500.0 < 0.2000.0", + "@angular-devkit/build-angular": ">=15.0.0 < 20.0.0", + "@angular-devkit/core": ">=15.0.0 < 20.0.0", + "@angular/cli": ">=15.0.0 < 20.0.0", + "@angular/common": ">=15.0.0 < 20.0.0", + "@angular/compiler": ">=15.0.0 < 20.0.0", + "@angular/compiler-cli": ">=15.0.0 < 20.0.0", + "@angular/core": ">=15.0.0 < 20.0.0", + "@angular/forms": ">=15.0.0 < 20.0.0", + "@angular/platform-browser": ">=15.0.0 < 20.0.0", + "@angular/platform-browser-dynamic": ">=15.0.0 < 20.0.0", + "rxjs": "^6.0.0 || ^7.4.0", + "storybook": "^8.4.7", + "typescript": "^4.0.0 || ^5.0.0", + "zone.js": ">= 0.11.1 < 1.0.0" + }, + "peerDependenciesMeta": { + "@angular/cli": { + "optional": true + } + } + }, + "node_modules/@storybook/angular/node_modules/@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@storybook/angular/node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", "dev": true, "license": "MIT", "dependencies": { - "@types/mdx": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" }, - "peerDependencies": { - "@types/react": ">=16", - "react": ">=16" + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/blocks": { + "node_modules/@storybook/angular/node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/blocks": { "version": "8.4.7", "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.4.7.tgz", "integrity": "sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==", @@ -9442,167 +9817,299 @@ } } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/icons": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.3.0.tgz", - "integrity": "sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==", + "node_modules/@storybook/builder-webpack5": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.7.tgz", + "integrity": "sha512-O8LpsQ+4g2x5kh7rI9+jEUdX8k1a5egBQU1lbudmHchqsV0IKiVqBD9LL5Gj3wpit4vB8coSW4ZWTFBw8FQb4Q==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.0.0" + "dependencies": { + "@storybook/core-webpack": "8.4.7", + "@types/node": "^22.0.0", + "@types/semver": "^7.3.4", + "browser-assert": "^1.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "cjs-module-lexer": "^1.2.3", + "constants-browserify": "^1.0.0", + "css-loader": "^6.7.1", + "es-module-lexer": "^1.5.0", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "html-webpack-plugin": "^5.5.0", + "magic-string": "^0.30.5", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "semver": "^7.3.7", + "style-loader": "^3.3.1", + "terser-webpack-plugin": "^5.3.1", + "ts-dedent": "^2.0.0", + "url": "^0.11.0", + "util": "^0.12.4", + "util-deprecate": "^1.0.2", + "webpack": "5", + "webpack-dev-middleware": "^6.1.2", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" + "storybook": "^8.4.7" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/react-dom-shim": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.7.tgz", - "integrity": "sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==", + "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.4.7" + "ajv": "^6.9.1" } }, - "node_modules/@storybook/addon-docs/node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "node_modules/@storybook/builder-webpack5/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@storybook/addon-docs/node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "node_modules/@storybook/builder-webpack5/node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "react": "^18.3.1" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@storybook/addon-essentials": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.4.7.tgz", - "integrity": "sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==", + "node_modules/@storybook/builder-webpack5/node_modules/fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-actions": "8.4.7", - "@storybook/addon-backgrounds": "8.4.7", - "@storybook/addon-controls": "8.4.7", - "@storybook/addon-docs": "8.4.7", - "@storybook/addon-highlight": "8.4.7", - "@storybook/addon-measure": "8.4.7", - "@storybook/addon-outline": "8.4.7", - "@storybook/addon-toolbars": "8.4.7", - "@storybook/addon-viewport": "8.4.7", - "ts-dedent": "^2.0.0" + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" }, "peerDependencies": { - "storybook": "^8.4.7" + "typescript": ">3.6.0", + "webpack": "^5.11.0" } }, - "node_modules/@storybook/addon-highlight": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.4.7.tgz", - "integrity": "sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==", + "node_modules/@storybook/builder-webpack5/node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "peerDependencies": { - "storybook": "^8.4.7" + "engines": { + "node": ">=12" } }, - "node_modules/@storybook/addon-interactions": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.7.tgz", - "integrity": "sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==", + "node_modules/@storybook/builder-webpack5/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/builder-webpack5/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.7", - "@storybook/test": "8.4.7", - "polished": "^4.2.2", - "ts-dedent": "^2.2.0" + "engines": { + "node": ">=8.6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.4.7" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@storybook/addon-measure": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.4.7.tgz", - "integrity": "sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==", + "node_modules/@storybook/builder-webpack5/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0", - "tiny-invariant": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "picomatch": "^2.2.1" }, - "peerDependencies": { - "storybook": "^8.4.7" + "engines": { + "node": ">=8.10.0" } }, - "node_modules/@storybook/addon-outline": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.4.7.tgz", - "integrity": "sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==", + "node_modules/@storybook/builder-webpack5/node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", + "integrity": "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0", - "ts-dedent": "^2.0.0" + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "storybook": "^8.4.7" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/@storybook/addon-toolbars": { + "node_modules/@storybook/components": { "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.4.7.tgz", - "integrity": "sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.7.tgz", + "integrity": "sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==", "dev": true, "license": "MIT", "funding": { @@ -9610,564 +10117,555 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.7" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, - "node_modules/@storybook/addon-viewport": { + "node_modules/@storybook/core": { "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.7.tgz", - "integrity": "sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.7.tgz", + "integrity": "sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==", "dev": true, "license": "MIT", "dependencies": { - "memoizerific": "^1.11.3" + "@storybook/csf": "^0.1.11", + "better-opn": "^3.0.2", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", + "esbuild-register": "^3.5.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "process": "^0.11.10", + "recast": "^0.23.5", + "semver": "^7.6.2", + "util": "^0.12.5", + "ws": "^8.2.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.7" + "prettier": "^2 || ^3" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, - "node_modules/@storybook/angular": { + "node_modules/@storybook/core-server": { "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-8.4.7.tgz", - "integrity": "sha512-PYWWEvoe+sT8riprSQVCyGnQbifbuzT9YNYPi22YBxB8ZGVuIVwjshKjSZvC99ULQbMvJ/g2OPCcBA8hhc3aTg==", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.4.7.tgz", + "integrity": "sha512-RW5R+kqRmcP+7QNTmhcrh46qWYkVpxaRlN8MmkHV52m2H5nbBrvgwc3/sb3wdgm1PEU0K5wxT0cmAMIwtnHC9Q==", "dev": true, "license": "MIT", - "dependencies": { - "@storybook/builder-webpack5": "8.4.7", - "@storybook/components": "8.4.7", - "@storybook/core-webpack": "8.4.7", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.4.7", - "@storybook/preview-api": "8.4.7", - "@storybook/theming": "8.4.7", - "@types/node": "^22.0.0", - "@types/react": "^18.0.37", - "@types/react-dom": "^18.0.11", - "@types/semver": "^7.3.4", - "@types/webpack-env": "^1.18.0", - "fd-package-json": "^1.2.0", - "find-up": "^5.0.0", - "semver": "^7.3.7", - "telejson": "^7.2.0", - "ts-dedent": "^2.0.0", - "tsconfig-paths-webpack-plugin": "^4.0.1", - "util-deprecate": "^1.0.2", - "webpack": "5" - }, - "engines": { - "node": ">=18.0.0" - }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@angular-devkit/architect": ">=0.1500.0 < 0.2000.0", - "@angular-devkit/build-angular": ">=15.0.0 < 20.0.0", - "@angular-devkit/core": ">=15.0.0 < 20.0.0", - "@angular/cli": ">=15.0.0 < 20.0.0", - "@angular/common": ">=15.0.0 < 20.0.0", - "@angular/compiler": ">=15.0.0 < 20.0.0", - "@angular/compiler-cli": ">=15.0.0 < 20.0.0", - "@angular/core": ">=15.0.0 < 20.0.0", - "@angular/forms": ">=15.0.0 < 20.0.0", - "@angular/platform-browser": ">=15.0.0 < 20.0.0", - "@angular/platform-browser-dynamic": ">=15.0.0 < 20.0.0", - "rxjs": "^6.0.0 || ^7.4.0", - "storybook": "^8.4.7", - "typescript": "^4.0.0 || ^5.0.0", - "zone.js": ">= 0.11.1 < 1.0.0" - }, - "peerDependenciesMeta": { - "@angular/cli": { - "optional": true - } - } - }, - "node_modules/@storybook/angular/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, - "node_modules/@storybook/angular/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/@storybook/core-webpack": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.7.tgz", + "integrity": "sha512-Tj+CjQLpFyBJxhhMms+vbPT3+gTRAiQlrhY3L1IEVwBa3wtRMS0qjozH26d1hK4G6mUIEdwu13L54HMU/w33Sg==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@types/node": "^22.0.0", + "ts-dedent": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/angular/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "storybook": "^8.4.7" } }, - "node_modules/@storybook/angular/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/@storybook/core-webpack/node_modules/@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "undici-types": "~6.20.0" } }, - "node_modules/@storybook/angular/node_modules/undici-types": { + "node_modules/@storybook/core-webpack/node_modules/undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, - "node_modules/@storybook/builder-webpack5": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.7.tgz", - "integrity": "sha512-O8LpsQ+4g2x5kh7rI9+jEUdX8k1a5egBQU1lbudmHchqsV0IKiVqBD9LL5Gj3wpit4vB8coSW4ZWTFBw8FQb4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/core-webpack": "8.4.7", - "@types/node": "^22.0.0", - "@types/semver": "^7.3.4", - "browser-assert": "^1.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "cjs-module-lexer": "^1.2.3", - "constants-browserify": "^1.0.0", - "css-loader": "^6.7.1", - "es-module-lexer": "^1.5.0", - "fork-ts-checker-webpack-plugin": "^8.0.0", - "html-webpack-plugin": "^5.5.0", - "magic-string": "^0.30.5", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "semver": "^7.3.7", - "style-loader": "^3.3.1", - "terser-webpack-plugin": "^5.3.1", - "ts-dedent": "^2.0.0", - "url": "^0.11.0", - "util": "^0.12.4", - "util-deprecate": "^1.0.2", - "webpack": "5", - "webpack-dev-middleware": "^6.1.2", - "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.4.7" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node_modules/@storybook/core/node_modules/@esbuild/aix-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@storybook/core/node_modules/@esbuild/android-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@storybook/core/node_modules/@esbuild/android-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/@storybook/core/node_modules/@esbuild/android-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@storybook/core/node_modules/@esbuild/darwin-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/fork-ts-checker-webpack-plugin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", - "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "node_modules/@storybook/core/node_modules/@esbuild/darwin-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/@storybook/core/node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@storybook/core/node_modules/@esbuild/freebsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">= 6" + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/@storybook/core/node_modules/@esbuild/linux-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@storybook/builder-webpack5/node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "node_modules/@storybook/core/node_modules/@esbuild/linux-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@storybook/core/node_modules/@esbuild/linux-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@storybook/core/node_modules/@esbuild/linux-loong64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@storybook/core/node_modules/@esbuild/linux-mips64el": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/@storybook/core/node_modules/@esbuild/linux-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8.10.0" + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/@storybook/core/node_modules/@esbuild/linux-riscv64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", - "integrity": "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==", + "node_modules/@storybook/core/node_modules/@esbuild/linux-s390x": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.12", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/@storybook/core/node_modules/@esbuild/linux-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/@storybook/core/node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "node_modules/@storybook/core/node_modules/@esbuild/netbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "node_modules/@storybook/core/node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=18" } }, - "node_modules/@storybook/components": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.7.tgz", - "integrity": "sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==", + "node_modules/@storybook/core/node_modules/@esbuild/openbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/core": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.7.tgz", - "integrity": "sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==", + "node_modules/@storybook/core/node_modules/@esbuild/sunos-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@storybook/csf": "^0.1.11", - "better-opn": "^3.0.2", - "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0", - "esbuild-register": "^3.5.0", - "jsdoc-type-pratt-parser": "^4.0.0", - "process": "^0.11.10", - "recast": "^0.23.5", - "semver": "^7.6.2", - "util": "^0.12.5", - "ws": "^8.2.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/core-server": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.4.7.tgz", - "integrity": "sha512-RW5R+kqRmcP+7QNTmhcrh46qWYkVpxaRlN8MmkHV52m2H5nbBrvgwc3/sb3wdgm1PEU0K5wxT0cmAMIwtnHC9Q==", + "node_modules/@storybook/core/node_modules/@esbuild/win32-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/core-webpack": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.7.tgz", - "integrity": "sha512-Tj+CjQLpFyBJxhhMms+vbPT3+gTRAiQlrhY3L1IEVwBa3wtRMS0qjozH26d1hK4G6mUIEdwu13L54HMU/w33Sg==", + "node_modules/@storybook/core/node_modules/@esbuild/win32-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "^22.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.4.7" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@storybook/core/node_modules/@esbuild/win32-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@storybook/core-webpack/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "node_modules/@storybook/core/node_modules/esbuild": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "dev": true, - "license": "MIT" + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" + } }, "node_modules/@storybook/csf": { "version": "0.1.13", @@ -10196,19 +10694,6 @@ "storybook": "^8.4.7" } }, - "node_modules/@storybook/csf/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@storybook/global": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", @@ -10216,6 +10701,20 @@ "dev": true, "license": "MIT" }, + "node_modules/@storybook/icons": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz", + "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" + } + }, "node_modules/@storybook/instrumenter": { "version": "8.4.7", "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.7.tgz", @@ -10262,6 +10761,22 @@ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, + "node_modules/@storybook/react-dom-shim": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.7.tgz", + "integrity": "sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.4.7" + } + }, "node_modules/@storybook/test": { "version": "8.4.7", "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.7.tgz", @@ -10338,19 +10853,6 @@ "node": ">=18" } }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@testing-library/dom/node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", @@ -10361,28 +10863,6 @@ "dequal": "^2.0.3" } }, - "node_modules/@testing-library/dom/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, "node_modules/@testing-library/jest-dom": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", @@ -10542,6 +11022,16 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@tufjs/models/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -10637,21 +11127,6 @@ "@types/node": "*" } }, - "node_modules/@types/body-parser/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/body-parser/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, "node_modules/@types/bonjour": { "version": "3.5.13", "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", @@ -10661,21 +11136,6 @@ "@types/node": "*" } }, - "node_modules/@types/bonjour/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/bonjour/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, "node_modules/@types/cache-manager": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-4.0.6.tgz", @@ -10689,53 +11149,231 @@ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "license": "MIT", "dependencies": { - "@types/node": "*" + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-dsv": "*" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", "license": "MIT", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } + "optional": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT", + "optional": true }, - "node_modules/@types/connect-history-api-fallback/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", "license": "MIT", + "optional": true, "dependencies": { - "undici-types": "~6.20.0" + "@types/geojson": "*" } }, - "node_modules/@types/connect-history-api-fallback/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT", + "optional": true }, - "node_modules/@types/connect/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "license": "MIT", + "optional": true, "dependencies": { - "undici-types": "~6.20.0" + "@types/d3-color": "*" } }, - "node_modules/@types/connect/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT", + "optional": true }, "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", "license": "MIT", "optional": true, "dependencies": { @@ -10749,6 +11387,23 @@ "license": "MIT", "optional": true }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-path": "*" + } + }, "node_modules/@types/d3-time": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", @@ -10756,14 +11411,39 @@ "license": "MIT", "optional": true }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "license": "MIT", "optional": true, "dependencies": { - "@types/ms": "*" + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, "node_modules/@types/eslint": { @@ -10793,48 +11473,21 @@ "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", + "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", "license": "MIT", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", + "@types/express-serve-static-core": "^5.0.0", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.2.tgz", - "integrity": "sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/express-serve-static-core/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/express-serve-static-core/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -10843,20 +11496,12 @@ "@types/send": "*" } }, - "node_modules/@types/express/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/express/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" + "optional": true }, "node_modules/@types/google-spreadsheet": { "version": "3.1.5", @@ -10875,23 +11520,6 @@ "@types/node": "*" } }, - "node_modules/@types/graceful-fs/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/graceful-fs/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -10906,29 +11534,14 @@ "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.15", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", - "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/http-proxy/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/http-proxy/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -10967,6 +11580,41 @@ "pretty-format": "^29.0.0" } }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", @@ -10979,23 +11627,6 @@ "parse5": "^7.0.0" } }, - "node_modules/@types/jsdom/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/jsdom/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -11031,16 +11662,6 @@ "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", "license": "MIT" }, - "node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/unist": "^2" - } - }, "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", @@ -11054,13 +11675,6 @@ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "license": "MIT" }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "license": "MIT", - "optional": true - }, "node_modules/@types/node": { "version": "20.14.10", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", @@ -11079,21 +11693,6 @@ "@types/node": "*" } }, - "node_modules/@types/node-forge/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/node-forge/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, "node_modules/@types/oauth": { "version": "0.9.6", "resolved": "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.6.tgz", @@ -11104,23 +11703,6 @@ "@types/node": "*" } }, - "node_modules/@types/oauth/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/oauth/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/papaparse": { "version": "5.3.7", "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.7.tgz", @@ -11131,23 +11713,6 @@ "@types/node": "*" } }, - "node_modules/@types/papaparse/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/papaparse/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", @@ -11172,60 +11737,21 @@ "dev": true, "license": "MIT", "dependencies": { - "@types/express": "*", - "@types/passport": "*", - "@types/passport-oauth2": "*" - } - }, - "node_modules/@types/passport-google-oauth20/node_modules/@types/express": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", - "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/passport-oauth2": { - "version": "1.4.17", - "resolved": "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.17.tgz", - "integrity": "sha512-ODiAHvso6JcWJ6ZkHHroVp05EHGhqQN533PtFNBkg8Fy5mERDqsr030AX81M0D69ZcaMvhF92SRckEk2B0HYYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*", - "@types/oauth": "*", - "@types/passport": "*" - } - }, - "node_modules/@types/passport-oauth2/node_modules/@types/express": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", - "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/qs": "*", - "@types/serve-static": "*" + "@types/express": "*", + "@types/passport": "*", + "@types/passport-oauth2": "*" } }, - "node_modules/@types/passport/node_modules/@types/express": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", - "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", + "node_modules/@types/passport-oauth2": { + "version": "1.4.17", + "resolved": "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.17.tgz", + "integrity": "sha512-ODiAHvso6JcWJ6ZkHHroVp05EHGhqQN533PtFNBkg8Fy5mERDqsr030AX81M0D69ZcaMvhF92SRckEk2B0HYYg==", "dev": true, "license": "MIT", "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/qs": "*", - "@types/serve-static": "*" + "@types/express": "*", + "@types/oauth": "*", + "@types/passport": "*" } }, "node_modules/@types/prop-types": { @@ -11236,9 +11762,9 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.17", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", - "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", "license": "MIT" }, "node_modules/@types/range-parser": { @@ -11287,233 +11813,482 @@ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "license": "MIT", "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", + "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/validator": { + "version": "13.12.2", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.2.tgz", + "integrity": "sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==", + "license": "MIT" + }, + "node_modules/@types/webpack-env": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.8.tgz", + "integrity": "sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8svvI3hMyvN0kKCJMvTJP/x6Y/EoQbepff882wL+Sn5QsXb3etnamgrJq4isrBxSJj5L2AuXcI0+bgkoAXGUJw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz", + "integrity": "sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/type-utils": "8.20.0", + "@typescript-eslint/utils": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz", + "integrity": "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/utils": "8.20.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", + "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz", + "integrity": "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/typescript-estree": "8.20.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.20.0.tgz", + "integrity": "sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.20.0", + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/typescript-estree": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", + "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz", + "integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/send/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", + "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", + "dev": true, "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/send/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", + "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/express": "*" + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@types/serve-index/node_modules/@types/express": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz", - "integrity": "sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", + "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/qs": "*", - "@types/serve-static": "*" + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", + "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "@typescript-eslint/types": "8.26.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/serve-static/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/serve-static/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", - "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/@types/sizzle": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", - "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "license": "MIT", + "license": "ISC", "dependencies": { - "@types/node": "*" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@types/sockjs/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@typescript-eslint/types": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", + "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "dev": true, "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/sockjs/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "license": "MIT" - }, - "node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/uuid": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", - "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/validator": { - "version": "13.12.2", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.2.tgz", - "integrity": "sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==", - "license": "MIT" - }, - "node_modules/@types/webpack-env": { - "version": "1.18.5", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz", - "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz", + "integrity": "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", "license": "MIT", "dependencies": { - "@types/node": "*" + "@typescript-eslint/types": "8.20.0", + "@typescript-eslint/visitor-keys": "8.20.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@types/ws/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", + "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", + "dev": true, "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@types/ws/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "devOptional": true, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "balanced-match": "^1.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz", - "integrity": "sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.20.0", - "@typescript-eslint/type-utils": "8.20.0", - "@typescript-eslint/utils": "8.20.0", - "@typescript-eslint/visitor-keys": "8.20.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.0" + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.20.0.tgz", - "integrity": "sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==", + "node_modules/@typescript-eslint/utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", + "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.20.0", - "@typescript-eslint/types": "8.20.0", - "@typescript-eslint/typescript-estree": "8.20.0", - "@typescript-eslint/visitor-keys": "8.20.0", - "debug": "^4.3.4" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11524,18 +12299,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz", - "integrity": "sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", + "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.20.0", - "@typescript-eslint/visitor-keys": "8.20.0" + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11545,17 +12320,21 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.20.0.tgz", - "integrity": "sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", + "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.20.0", - "@typescript-eslint/utils": "8.20.0", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", "debug": "^4.3.4", - "ts-api-utils": "^2.0.0" + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11565,16 +12344,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", - "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", + "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.26.1", + "eslint-visitor-keys": "^4.2.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -11583,34 +12365,30 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.20.0.tgz", - "integrity": "sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==", + "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.20.0", - "@typescript-eslint/visitor-keys": "8.20.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.0.0" - }, + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", @@ -11626,17 +12404,15 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/utils": { + "node_modules/@typescript-eslint/visitor-keys": { "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.20.0.tgz", - "integrity": "sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", + "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.20.0", "@typescript-eslint/types": "8.20.0", - "@typescript-eslint/typescript-estree": "8.20.0" + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11644,22 +12420,14 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.20.0.tgz", - "integrity": "sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.20.0.tgz", + "integrity": "sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.20.0", - "eslint-visitor-keys": "^4.2.0" - }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -11682,15 +12450,15 @@ } }, "node_modules/@vitejs/plugin-basic-ssl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", - "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.2.0.tgz", + "integrity": "sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==", "license": "MIT", "engines": { - "node": ">=14.6.0" + "node": ">=14.21.3" }, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" } }, "node_modules/@vitest/expect": { @@ -11739,9 +12507,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", - "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11765,13 +12533,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", - "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", + "@vitest/pretty-format": "2.1.9", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, @@ -11958,6 +12726,37 @@ "node": ">=18.12.0" } }, + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/@zkochan/js-yaml": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", @@ -11975,17 +12774,18 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "devOptional": true, "license": "BSD-3-Clause" }, "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.0.tgz", + "integrity": "sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/abort-controller": { @@ -12014,9 +12814,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -12036,17 +12836,6 @@ "acorn-walk": "^8.0.2" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "deprecated": "package has been renamed to acorn-import-attributes", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -12092,6 +12881,29 @@ "node": ">=8.9" } }, + "node_modules/adjust-sourcemap-loader/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/adm-zip": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", @@ -12128,9 +12940,9 @@ } }, "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "license": "MIT", "dependencies": { "ajv": "^8.0.0" @@ -12192,6 +13004,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -12547,6 +13371,16 @@ "dev": true, "license": "MIT" }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -12635,9 +13469,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", + "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", "dev": true, "license": "MIT", "dependencies": { @@ -12647,13 +13481,13 @@ } }, "node_modules/axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "ast-types-flow": "0.0.7" + "engines": { + "node": ">= 0.4" } }, "node_modules/babel-jest": { @@ -12770,6 +13604,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.12", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", @@ -12952,20 +13802,30 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, "node_modules/beasties": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.1.0.tgz", - "integrity": "sha512-+Ssscd2gVG24qRNC+E2g88D+xsQW4xwakWtKAiGEQ3Pw54/FGdyo9RrfxhGhEv6ilFVbB7r3Lgx+QnAxnSpECw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.2.0.tgz", + "integrity": "sha512-Ljqskqx/tbZagIglYoJIMzH5zgssyp+in9+9sAyh15N22AornBeIDnb8EZ6Rk+6ShfMxd92uO3gfpT0NtZbpow==", "license": "Apache-2.0", "dependencies": { "css-select": "^5.1.0", "css-what": "^6.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "htmlparser2": "^9.0.0", + "htmlparser2": "^9.1.0", "picocolors": "^1.1.1", - "postcss": "^8.4.47", + "postcss": "^8.4.49", "postcss-media-query-parser": "^0.2.3" + }, + "engines": { + "node": ">=14.0.0" } }, "node_modules/better-opn": { @@ -12991,6 +13851,22 @@ "node": ">=8" } }, + "node_modules/better-opn/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/better-opn/node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -13104,26 +13980,14 @@ "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" + "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/ms": { @@ -13181,13 +14045,14 @@ } }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "devOptional": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -13209,9 +14074,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", - "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -13300,6 +14165,13 @@ "ieee754": "^1.1.13" } }, + "node_modules/buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "devOptional": true, + "license": "MIT/X11" + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -13419,6 +14291,26 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/cacache/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -13440,6 +14332,13 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/cacache/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -13456,6 +14355,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/cacache/node_modules/p-map": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", @@ -13469,6 +14384,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cacache/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/cache-content-type": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", @@ -13502,6 +14445,7 @@ "version": "5.1.4", "resolved": "https://registry.npmjs.org/cache-manager-redis-yet/-/cache-manager-redis-yet-5.1.4.tgz", "integrity": "sha512-2mXZjo+txfH2m+mSTHTITNq8c5SssU2nP7NutzrocO3Mw/SbjHcDo+mriI3ZuR63ov/oUUIaF9iF+MzDqVzMoQ==", + "deprecated": "With cache-manager v6 we now are using Keyv", "license": "MIT", "dependencies": { "@redis/bloom": "^1.2.0", @@ -13517,6 +14461,12 @@ "node": ">= 18" } }, + "node_modules/cache-manager/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, "node_modules/cachedir": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", @@ -13547,9 +14497,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -13560,13 +14510,13 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -13596,16 +14546,13 @@ } }, "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "devOptional": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/caniuse-api": { @@ -13622,9 +14569,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "version": "1.0.30001703", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz", + "integrity": "sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==", "funding": [ { "type": "opencollective", @@ -13659,9 +14606,9 @@ "license": "Apache-2.0" }, "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, "license": "MIT", "dependencies": { @@ -13701,17 +14648,6 @@ "node": ">=10" } }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "optional": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -13830,13 +14766,32 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cheerio/node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", "license": "MIT", - "engines": { - "node": ">=18" + "optional": true, + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" } }, "node_modules/chokidar": { @@ -13855,13 +14810,13 @@ } }, "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "engines": { - "node": ">=18" + "node": ">=10" } }, "node_modules/chrome-trace-event": { @@ -13874,25 +14829,16 @@ } }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "devOptional": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true, + "license": "MIT" }, "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "devOptional": true, "license": "MIT" }, @@ -13926,22 +14872,33 @@ "node": ">= 10.0" } }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "license": "MIT", "engines": { "node": ">=6" @@ -13967,69 +14924,68 @@ } }, "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=0.10.0" } }, "node_modules/cli-width": { @@ -14210,6 +15166,16 @@ "commander": "^2.11.0" } }, + "node_modules/codelyzer/node_modules/axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ast-types-flow": "0.0.7" + } + }, "node_modules/codelyzer/node_modules/rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -14340,6 +15306,13 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "license": "MIT" }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "devOptional": true, + "license": "MIT" + }, "node_modules/columnify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", @@ -14418,19 +15391,10 @@ "node": ">= 0.6" } }, - "node_modules/compressible/node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/compression": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", - "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", + "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -14527,6 +15491,13 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/confbox": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.1.tgz", + "integrity": "sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==", + "license": "MIT", + "optional": true + }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", @@ -14578,9 +15549,9 @@ } }, "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "license": "MIT" }, "node_modules/cookie": { @@ -14625,21 +15596,20 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", - "dev": true, + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "license": "MIT", "dependencies": { - "fast-glob": "^3.2.7", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.1", - "globby": "^12.0.2", + "globby": "^14.0.0", "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" }, "engines": { - "node": ">= 12.20.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -14650,12 +15620,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", - "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "license": "MIT", "dependencies": { - "browserslist": "^4.24.2" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -14718,6 +15688,16 @@ "node": ">=10" } }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/countries-and-timezones": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/countries-and-timezones/-/countries-and-timezones-3.7.2.tgz", @@ -14814,22 +15794,6 @@ "node": ">= 8" } }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "devOptional": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/css-declaration-sorter": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", @@ -14844,10 +15808,9 @@ } }, "node_modules/css-loader": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", - "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", - "dev": true, + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", @@ -14860,7 +15823,7 @@ "semver": "^7.5.4" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -14868,7 +15831,7 @@ }, "peerDependencies": { "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" + "webpack": "^5.27.0" }, "peerDependenciesMeta": { "@rspack/core": { @@ -15220,9 +16183,9 @@ } }, "node_modules/cytoscape": { - "version": "3.30.4", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.4.tgz", - "integrity": "sha512-OxtlZwQl1WbwMmLiyPSEBuzeTIQnwZhJYYWFzZ2PhEHVFwpeaqNIkUzSiso00D98qk60l8Gwon2RP304d3BJ1A==", + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.31.1.tgz", + "integrity": "sha512-Hx5Mtb1+hnmAKaZZ/7zL1Y5HTFYOjdDswZy/jD+1WINRU8KVi1B7+vlHdsTwY+VCFucTreoyu1RDzQJ9u0d2Hw==", "license": "MIT", "optional": true, "engines": { @@ -15242,6 +16205,36 @@ "cytoscape": "^3.2.0" } }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "optional": true, + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT", + "optional": true + }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", @@ -15433,6 +16426,19 @@ "node": ">= 10" } }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/d3-ease": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", @@ -15730,13 +16736,13 @@ } }, "node_modules/dagre-d3-es": { - "version": "7.0.10", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", - "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", + "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", "license": "MIT", "optional": true, "dependencies": { - "d3": "^7.8.2", + "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, @@ -15775,6 +16781,16 @@ "node": ">=12" } }, + "node_modules/data-urls/node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -15887,26 +16903,12 @@ "license": "MIT" }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", "devOptional": true, "license": "MIT" }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "license": "MIT", - "optional": true, - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/dedent": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", @@ -16105,7 +17107,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -16122,16 +17124,13 @@ } }, "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "license": "Apache-2.0", "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, "node_modules/detect-newline": { @@ -16272,6 +17271,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", "devOptional": true, "license": "MIT", "dependencies": { @@ -16297,16 +17297,19 @@ } }, "node_modules/dompurify": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", - "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", + "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", "license": "(MPL-2.0 OR Apache-2.0)", - "optional": true + "optional": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } }, "node_modules/domutils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.1.tgz", - "integrity": "sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -16329,10 +17332,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "dev": true, + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -16389,6 +17391,13 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -16421,9 +17430,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.114", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.114.tgz", + "integrity": "sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==", "license": "ISC" }, "node_modules/elegant-spinner": { @@ -16436,13 +17445,6 @@ "node": ">=0.10.0" } }, - "node_modules/elkjs": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", - "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", - "license": "EPL-2.0", - "optional": true - }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", @@ -16463,9 +17465,9 @@ "license": "MIT" }, "node_modules/emoji-toolkit": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-8.0.0.tgz", - "integrity": "sha512-Vz8YIqQJsQ+QZ4yuKMMzliXceayqfWbNjb6bST+vm77QAhU2is3I+/PRxrNknW+q1bvHHMgjLCQXxzINWLVapg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-9.0.1.tgz", + "integrity": "sha512-sMMNqKNLVHXJfIKoPbrRJwtYuysVNC9GlKetr72zE3SSVbHqoeDLWVrxP0uM0AE0qvdl3hbUk+tJhhwXZrDHaw==", "license": "MIT", "optional": true }, @@ -16479,10 +17481,9 @@ } }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -16511,16 +17512,29 @@ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, - "node_modules/encoding-sniffer/node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { - "iconv-lite": "0.6.3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=18" + "node": ">=0.10.0" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/end-of-stream": { @@ -16534,9 +17548,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -16640,9 +17654,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", - "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "license": "MIT", "dependencies": { @@ -16657,10 +17671,11 @@ "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -16681,9 +17696,12 @@ "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", @@ -16726,9 +17744,9 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -16738,28 +17756,32 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, + "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==", + "devOptional": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -16781,10 +17803,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", - "devOptional": true, + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -16794,31 +17815,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" } }, "node_modules/esbuild-register": { @@ -16835,9 +17856,9 @@ } }, "node_modules/esbuild-wasm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.24.0.tgz", - "integrity": "sha512-xhNn5tL1AhkPg4ft59yXT6FkwKXiPSYyz1IeinJHUJpjvOHOIPvdmFQc0pGdjxlKSbzZc2mNmtVOWAR1EF/JAg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.0.tgz", + "integrity": "sha512-60iuWr6jdTVylmGXjpnqk3pCktUi5Rmjiv6EMza3h4X20BLtfL2BjUGs1+UCt2G9UK7jVGrJdUr5i1k0sL3wBg==", "license": "MIT", "bin": { "esbuild": "bin/esbuild" @@ -16862,74 +17883,49 @@ "license": "MIT" }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "estraverse": "^5.2.0", + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, "optionalDependencies": { "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, "node_modules/eslint": { @@ -17083,9 +18079,9 @@ } }, "node_modules/eslint-plugin-cypress/node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "license": "MIT", "engines": { @@ -17169,6 +18165,16 @@ "semver": "bin/semver.js" } }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -17201,25 +18207,20 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -17252,36 +18253,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", @@ -17295,7 +18266,14 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/espree": { + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/espree": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", @@ -17313,75 +18291,14 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -17516,6 +18433,13 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/executable": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", @@ -17579,9 +18503,9 @@ } }, "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", "dev": true, "license": "Apache-2.0" }, @@ -17640,59 +18564,24 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/express/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" }, - "node_modules/express/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/exsolve": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz", + "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==", "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "optional": true }, "node_modules/extend": { "version": "3.0.2", @@ -17715,19 +18604,6 @@ "node": ">=4" } }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/external-editor/node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -17791,16 +18667,16 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -17822,6 +18698,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "devOptional": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -17843,9 +18720,19 @@ "license": "Apache-2.0" }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "BSD-3-Clause" }, "node_modules/fastparse": { @@ -17856,9 +18743,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -17907,9 +18794,9 @@ } }, "node_modules/fdir": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", - "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -17935,6 +18822,16 @@ "node": ">=0.10.0" } }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -17958,6 +18855,16 @@ "minimatch": "^5.0.1" } }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -18010,15 +18917,6 @@ "ms": "2.0.0" } }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -18041,103 +18939,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "license": "MIT", - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/find-file-up": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", @@ -18165,17 +18966,20 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "devOptional": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { @@ -18202,9 +19006,9 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -18229,38 +19033,31 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "devOptional": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "is-callable": "^1.2.7" }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "devOptional": true, "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, "engines": { "node": ">=14" }, @@ -18446,14 +19243,15 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "devOptional": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -18501,6 +19299,37 @@ "js-yaml": "^3.13.1" } }, + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/front-matter/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -18555,6 +19384,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -18620,6 +19450,31 @@ "node": ">=10" } }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/gcp-metadata": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", @@ -18673,21 +19528,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.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.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -18718,6 +19573,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -18776,6 +19644,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "devOptional": true, "license": "ISC", "dependencies": { @@ -18906,41 +19775,60 @@ "gopd": "^1.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "node_modules/globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, + "node_modules/globby/node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", "license": "MIT", - "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -18976,27 +19864,6 @@ "node": ">=10" } }, - "node_modules/google-auth-library/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/google-auth-library/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, "node_modules/google-auth-library/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -19013,6 +19880,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", + "deprecated": "Package is no longer maintained", "license": "MIT", "dependencies": { "node-forge": "^1.3.1" @@ -19086,27 +19954,6 @@ "node": ">=10" } }, - "node_modules/gtoken/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/gtoken/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -19123,6 +19970,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT", + "optional": true + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -19236,7 +20090,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -19305,6 +20159,13 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -19366,10 +20227,37 @@ "node": ">=12" } }, + "node_modules/html-encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/html-encoding-sniffer/node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/html-entities": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, "funding": [ { "type": "github", @@ -19421,32 +20309,6 @@ "node": ">= 12" } }, - "node_modules/html-minifier-terser/node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", - "devOptional": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "devOptional": true, - "license": "MIT" - }, "node_modules/html-webpack-plugin": { "version": "5.6.3", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", @@ -19580,9 +20442,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz", + "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==", "license": "MIT" }, "node_modules/http-proxy": { @@ -19628,27 +20490,20 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz", + "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==", "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.8", + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/http-proxy/node_modules/eventemitter3": { @@ -19707,28 +20562,16 @@ "license": "MIT" }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { + "agent-base": "^7.1.2", "debug": "4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -19767,12 +20610,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" @@ -19833,6 +20676,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -19851,6 +20695,16 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/ignore-walk/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -19887,9 +20741,9 @@ "license": "MIT" }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -19908,27 +20762,96 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "devOptional": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "find-up": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { @@ -19955,6 +20878,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "devOptional": true, "license": "ISC", "dependencies": { @@ -20023,9 +20947,9 @@ } }, "node_modules/ioredis": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.2.tgz", - "integrity": "sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz", + "integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==", "license": "MIT", "dependencies": { "@ioredis/commands": "^1.1.1", @@ -20060,20 +20984,13 @@ "node": ">= 12" } }, - "node_modules/ip-address/node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true, - "license": "MIT" - }, "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "license": "MIT", "engines": { - "node": ">= 10" + "node": ">= 0.10" } }, "node_modules/is-arguments": { @@ -20118,13 +21035,17 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "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" }, "engines": { "node": ">= 0.4" @@ -20162,13 +21083,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -20204,13 +21125,6 @@ "is-ci": "bin.js" } }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true, - "license": "MIT" - }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -20262,16 +21176,15 @@ } }, "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "license": "MIT", "bin": { "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -20322,13 +21235,16 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -20367,21 +21283,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-installed-globally": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", @@ -20671,13 +21572,13 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -20767,11 +21668,12 @@ } }, "node_modules/isomorphic-rslog": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.7.tgz", - "integrity": "sha512-n6/XnKnZ5eLEj6VllG4XmamXG7/F69nls8dcynHyhcTpsPUYgcgx4ifEaCo4lQJ2uzwfmIT+F0KBGwBcMKmt5g==", - "dev": true, + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.6.tgz", + "integrity": "sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==", + "devOptional": true, "license": "MIT", + "peer": true, "engines": { "node": ">=14.17.6" } @@ -20833,22 +21735,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -20864,6 +21750,16 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/istanbul-reports": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", @@ -21018,6 +21914,13 @@ "node": ">=10.17.0" } }, + "node_modules/jest-changed-files/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true, + "license": "ISC" + }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -21050,20 +21953,38 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "devOptional": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "devOptional": true, "license": "MIT" }, @@ -21147,6 +22068,57 @@ } } }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -21163,6 +22135,41 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/jest-docblock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", @@ -21176,23 +22183,58 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each": { + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-each/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/jest-environment-jsdom": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", @@ -21221,23 +22263,6 @@ } } }, - "node_modules/jest-environment-jsdom/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -21256,23 +22281,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-node/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/jest-environment-node/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/jest-get-type": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", @@ -21309,37 +22317,55 @@ "fsevents": "^2.3.2" } }, - "node_modules/jest-haste-map/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "devOptional": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-haste-map/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/jest-leak-detector": { + "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "devOptional": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -21356,6 +22382,41 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", @@ -21377,6 +22438,41 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -21392,23 +22488,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-mock/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/jest-mock/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", @@ -21455,68 +22534,41 @@ "typescript": ">=4.8" } }, - "node_modules/jest-preset-angular/node_modules/esbuild-wasm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.24.2.tgz", - "integrity": "sha512-03/7Z1gD+ohDnScFztvI4XddTAbKVmMEzCvvkBpQdWKEXJ+73dTyeNrmdxP1Q0zpDMFjzUJwtK4rLjqwiHbzkw==", + "node_modules/jest-preset-angular/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-preset-angular/node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "node_modules/jest-preset-angular/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.6.3", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-preset-angular/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-regex-util": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", @@ -21595,14 +22647,14 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, "node_modules/jest-runner/node_modules/source-map-support": { @@ -21616,13 +22668,6 @@ "source-map": "^0.6.0" } }, - "node_modules/jest-runner/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/jest-runtime": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", @@ -21645,45 +22690,18 @@ "graceful-fs": "^4.2.9", "jest-haste-map": "^29.7.0", "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "devOptional": true, - "license": "MIT", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -21716,6 +22734,41 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -21734,14 +22787,20 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "engines": { + "node": ">=8" } }, "node_modules/jest-util/node_modules/picomatch": { @@ -21757,13 +22816,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/jest-util/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/jest-validate": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", @@ -21782,6 +22834,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/jest-watcher": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", @@ -21802,23 +22902,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/jest-watcher/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/jest-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", @@ -21835,16 +22918,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -21861,13 +22934,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-worker/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/jiti": { "version": "1.21.7", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", @@ -21897,40 +22963,21 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "devOptional": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, - "node_modules/js-yaml/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/js-yaml/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "devOptional": true, - "license": "BSD-3-Clause" - }, "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", "dev": true, "license": "MIT" }, @@ -21990,26 +23037,67 @@ } } }, - "node_modules/jsdom/node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "node_modules/jsdom/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "devOptional": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" + "debug": "4" }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=6.0" + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "optionalDependencies": { - "source-map": "~0.6.1" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsdom/node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=12" } }, "node_modules/jsesc": { @@ -22041,10 +23129,14 @@ "license": "MIT" }, "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", + "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } }, "node_modules/json-schema": { "version": "0.4.0", @@ -22110,14 +23202,31 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ota-meshi" + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true, + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "license": "MIT" }, "node_modules/jsonfile": { @@ -22188,6 +23297,27 @@ "npm": ">=6" } }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/jsonwebtoken/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -22211,9 +23341,9 @@ } }, "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", "license": "MIT", "dependencies": { "buffer-equal-constant-time": "1.0.1", @@ -22222,12 +23352,12 @@ } }, "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", "license": "MIT", "dependencies": { - "jwa": "^1.4.1", + "jwa": "^2.0.0", "safe-buffer": "^5.0.1" } }, @@ -22241,9 +23371,9 @@ } }, "node_modules/katex": { - "version": "0.16.18", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.18.tgz", - "integrity": "sha512-LRuk0rPdXrecAFwQucYjMiIs0JFefk6N1q/04mlw14aVIVgxq1FO0MA9RiIIGVaKOB5GIP5GH4aBBNraZERmaQ==", + "version": "0.16.21", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz", + "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -22326,9 +23456,9 @@ } }, "node_modules/koa": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz", - "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==", + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.4.tgz", + "integrity": "sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22381,6 +23511,16 @@ "node": ">= 10" } }, + "node_modules/koa/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/koa/node_modules/http-errors": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", @@ -22418,10 +23558,34 @@ "node": ">= 0.6" } }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT", + "optional": true + }, + "node_modules/langium": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", + "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", + "license": "MIT", + "optional": true, + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/launch-editor": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", - "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", + "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", "license": "MIT", "dependencies": { "picocolors": "^1.0.0", @@ -22446,9 +23610,9 @@ } }, "node_modules/less": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", - "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.2.tgz", + "integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==", "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", @@ -22472,24 +23636,73 @@ } }, "node_modules/less-loader": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", - "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", - "dev": true, + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz", + "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", "license": "MIT", - "dependencies": { - "klona": "^2.0.4" - }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "less": "^3.5.0 || ^4.0.0", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/leven": { @@ -22516,33 +23729,10 @@ "node": ">= 0.8.0" } }, - "node_modules/levn/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/levn/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/libphonenumber-js": { - "version": "1.11.17", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.17.tgz", - "integrity": "sha512-Jr6v8thd5qRlOlc6CslSTzGzzQW03uiscab7KHQZX1Dfo4R6n6FDhZ0Hri6/X7edLIDv9gl4VMZXhxTjLnl0VQ==", + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.5.tgz", + "integrity": "sha512-DOjiaVjjSmap12ztyb4QgoFmUe/GbgnEXHu+R7iowk0lzDIjScvPAm8cK9RYTEobbRb0OPlwlZUGTTJPJg13Kw==", "license": "MIT" }, "node_modules/license-webpack-plugin": { @@ -22639,16 +23829,6 @@ "listr": "^0.14.2" } }, - "node_modules/listr-update-renderer/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/listr-update-renderer/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -22686,7 +23866,97 @@ "node": ">=0.10.0" } }, - "node_modules/listr-update-renderer/node_modules/cli-cursor": { + "node_modules/listr-update-renderer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-update-renderer/node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", @@ -22699,62 +23969,64 @@ "node": ">=4" } }, - "node_modules/listr-update-renderer/node_modules/cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "node_modules/listr-verbose-renderer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "color-name": "1.1.3" } }, - "node_modules/listr-update-renderer/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "node_modules/listr-verbose-renderer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr-verbose-renderer/node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr-verbose-renderer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/listr-update-renderer/node_modules/log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "node_modules/listr-verbose-renderer/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^1.0.0" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/listr-update-renderer/node_modules/log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "node_modules/listr-verbose-renderer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, "engines": { "node": ">=4" } }, - "node_modules/listr-update-renderer/node_modules/mimic-fn": { + "node_modules/listr-verbose-renderer/node_modules/mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", @@ -22764,7 +24036,7 @@ "node": ">=4" } }, - "node_modules/listr-update-renderer/node_modules/onetime": { + "node_modules/listr-verbose-renderer/node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", @@ -22777,7 +24049,7 @@ "node": ">=4" } }, - "node_modules/listr-update-renderer/node_modules/restore-cursor": { + "node_modules/listr-verbose-renderer/node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", @@ -22791,320 +24063,311 @@ "node": ">=4" } }, - "node_modules/listr-update-renderer/node_modules/slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "node_modules/listr-verbose-renderer/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/listr-update-renderer/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "node_modules/listr-verbose-renderer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/listr-update-renderer/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/listr/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/listr-update-renderer/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/listr-update-renderer/node_modules/wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "node_modules/listr/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" + "tslib": "^1.9.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/listr-update-renderer/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "npm": ">=2.0.0" } }, - "node_modules/listr-update-renderer/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/listr/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "0BSD" }, - "node_modules/listr-update-renderer/node_modules/wrap-ansi/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "node_modules/listr2": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", "license": "MIT", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=4" + "node": ">=18.0.0" } }, - "node_modules/listr-update-renderer/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, + "node_modules/listr2/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "environment": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "license": "MIT", - "dependencies": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/listr-verbose-renderer/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr-verbose-renderer/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "node_modules/listr2/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-verbose-renderer/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "license": "MIT", "dependencies": { - "restore-cursor": "^2.0.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/listr-verbose-renderer/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/listr-verbose-renderer/node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "license": "MIT" }, - "node_modules/listr-verbose-renderer/node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-verbose-renderer/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, + "node_modules/listr2/node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-verbose-renderer/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, + "node_modules/listr2/node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/listr-verbose-renderer/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, + "node_modules/listr2/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "license": "MIT", "dependencies": { - "mimic-fn": "^1.0.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-verbose-renderer/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, + "node_modules/listr2/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "license": "MIT", "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-verbose-renderer/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/listr/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "license": "Apache-2.0", + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { - "tslib": "^1.9.0" + "ansi-regex": "^6.0.1" }, "engines": { - "npm": ">=2.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/listr/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/listr2": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", - "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "license": "MIT", "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/lmdb": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.1.5.tgz", - "integrity": "sha512-46Mch5Drq+A93Ss3gtbg+Xuvf5BOgIuvhKDWoGa3HcPHI6BL2NCOkRdSx1D4VfzwrxhnsjbyIVsLRlQHu6URvw==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.2.6.tgz", + "integrity": "sha512-SuHqzPl7mYStna8WRotY8XX/EUZBjjv3QyKIByeCLFfC9uXT/OIHByEcA07PzbMfQAM0KYJtLgtpMRlIe5dErQ==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -23119,21 +24382,14 @@ "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.1.5", - "@lmdb/lmdb-darwin-x64": "3.1.5", - "@lmdb/lmdb-linux-arm": "3.1.5", - "@lmdb/lmdb-linux-arm64": "3.1.5", - "@lmdb/lmdb-linux-x64": "3.1.5", - "@lmdb/lmdb-win32-x64": "3.1.5" + "@lmdb/lmdb-darwin-arm64": "3.2.6", + "@lmdb/lmdb-darwin-x64": "3.2.6", + "@lmdb/lmdb-linux-arm": "3.2.6", + "@lmdb/lmdb-linux-arm64": "3.2.6", + "@lmdb/lmdb-linux-x64": "3.2.6", + "@lmdb/lmdb-win32-x64": "3.2.6" } }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "license": "MIT", - "optional": true - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -23144,39 +24400,46 @@ } }, "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, "engines": { - "node": ">=8.9.0" + "node": ">= 12.13.0" } }, - "node_modules/loader-utils/node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/local-pkg": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", + "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", "license": "MIT", + "optional": true, + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.0.1", + "quansync": "^0.2.8" + }, "engines": { - "node": "*" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "devOptional": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -23289,179 +24552,160 @@ "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, "license": "MIT", "dependencies": { - "environment": "^1.0.0" + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=4" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, "node_modules/log-update/node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^5.0.0" + "restore-cursor": "^2.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, "node_modules/log-update/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, "license": "MIT", "dependencies": { - "mimic-function": "^5.0.0" + "mimic-fn": "^1.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/log-update/node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, "license": "MIT", "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/log-update/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=4" } }, "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "engines": { + "node": ">=4" } }, "node_modules/log4js": { @@ -23502,9 +24746,9 @@ } }, "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, "license": "MIT" }, @@ -23519,9 +24763,18 @@ } }, "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, "node_modules/luxon": { @@ -23544,50 +24797,28 @@ } }, "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-error": { @@ -23660,50 +24891,11 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", - "optional": true, - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 0.4" } }, "node_modules/mdn-data": { @@ -23723,9 +24915,9 @@ } }, "node_modules/memfs": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz", - "integrity": "sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "license": "Unlicense", "dependencies": { @@ -23770,32 +24962,45 @@ } }, "node_modules/mermaid": { - "version": "10.9.3", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.3.tgz", - "integrity": "sha512-V80X1isSEvAewIL3xhmz/rVmc27CVljcsbWxkxlWJWY/1kQa4XOABqpDl2qQLGKzpKm6WbTfUEKImBlUfFYArw==", + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.4.1.tgz", + "integrity": "sha512-Mb01JT/x6CKDWaxigwfZYuYmDZ6xtrNwNlidKZwkSrDaY9n90tdrJTV5Umk+wP1fZscGptmKFXHsXMDEVZ+Q6A==", "license": "MIT", "optional": true, "dependencies": { - "@braintree/sanitize-url": "^6.0.1", - "@types/d3-scale": "^4.0.3", - "@types/d3-scale-chromatic": "^3.0.0", - "cytoscape": "^3.28.1", + "@braintree/sanitize-url": "^7.0.1", + "@iconify/utils": "^2.1.32", + "@mermaid-js/parser": "^0.3.0", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.2", "cytoscape-cose-bilkent": "^4.1.0", - "d3": "^7.4.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.10", - "dayjs": "^1.11.7", - "dompurify": "^3.0.5 <3.1.7", - "elkjs": "^0.9.0", + "dagre-d3-es": "7.0.11", + "dayjs": "^1.11.10", + "dompurify": "^3.2.1", "katex": "^0.16.9", - "khroma": "^2.0.0", + "khroma": "^2.1.0", "lodash-es": "^4.17.21", - "mdast-util-from-markdown": "^1.3.0", - "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.3", + "marked": "^13.0.2", + "roughjs": "^4.6.6", + "stylis": "^4.3.1", "ts-dedent": "^2.2.0", - "uuid": "^9.0.0", - "web-worker": "^1.2.0" + "uuid": "^9.0.1" + } + }, + "node_modules/mermaid/node_modules/marked": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz", + "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==", + "license": "MIT", + "optional": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" } }, "node_modules/mermaid/node_modules/uuid": { @@ -23821,1163 +25026,1256 @@ "node": ">= 0.6" } }, - "node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "license": "MIT", - "optional": true, "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", - "optional": true, - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "license": "MIT", - "optional": true, - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" } }, - "node_modules/micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", - "optional": true, "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", "license": "MIT", - "optional": true, "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "node_modules/micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "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==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "license": "MIT", - "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "devOptional": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "license": "ISC", "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/minipass-fetch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz", + "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "optional": true, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "optional": true, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "license": "ISC", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "optional": true, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/minizlib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", + "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" } }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "license": "MIT", - "optional": true, "dependencies": { - "micromark-util-symbol": "^1.0.0" + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", "license": "MIT", "optional": true, "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" } }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "optional": true - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", "license": "MIT", "optional": true }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", "license": "MIT", "optional": true, "dependencies": { - "micromark-util-symbol": "^1.0.0" + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" } }, - "node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "micromark-util-types": "^1.0.0" + "engines": { + "node": "*" } }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "license": "MIT", - "optional": true, - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" + "engines": { + "node": ">=10" } }, - "node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/ms": { + "version": "3.0.0-canary.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", + "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==", "license": "MIT", - "optional": true, - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "engines": { + "node": ">=12.13" } }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/msgpackr": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", + "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", "license": "MIT", - "optional": true + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "hasInstallScript": true, "license": "MIT", - "optional": true + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/multer": { + "version": "1.4.4-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", + "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" }, "engines": { - "node": ">=8.6" + "node": ">= 6.0.0" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/nanoid": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "bin": { - "mime": "cli.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=4" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "devOptional": true, + "license": "MIT" }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "license": "MIT", + "optional": true, "dependencies": { - "mime-db": "1.52.0" + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" }, "engines": { - "node": ">= 0.6" + "node": ">= 4.4.x" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" }, - "node_modules/mini-css-extract-plugin": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", - "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", - "dev": true, + "node_modules/ng-extract-i18n-merge": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.14.1.tgz", + "integrity": "sha512-hymcJcjfXJ+0r3EQShaSGmsST0AV3usgJuNMf6l04X+nIsgUPLMrXPBB/hVVVlAOjRcEB7RamKnfmexa5Rq1tw==", "license": "MIT", "dependencies": { - "schema-utils": "^4.0.0" + "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0", + "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "xmldoc": "^1.1.3" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=14.0.0" }, "peerDependencies": { - "webpack": "^5.0.0" + "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "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==", - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, - "license": "ISC", + "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": { + "version": "0.1900.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1900.7.tgz", + "integrity": "sha512-3dRV0IB+MbNYbAGbYEFMcABkMphqcTvn5MG79dQkwcf2a9QZxCq2slwf/rIleWoDUcFm9r1NnVPYrTYNYJaqQg==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "@angular-devkit/core": "19.0.7", + "rxjs": "7.8.1" }, "engines": { - "node": "*" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, + "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/core": { + "version": "19.0.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.0.7.tgz", + "integrity": "sha512-VyuORSitT6LIaGUEF0KEnv2TwNaeWl6L3/4L4stok0BJ23B4joVca2DYVcrLC1hSzz8V4dwVgSlbNIgjgGdVpg==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "devOptional": true, - "license": "ISC", + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "dev": true, - "license": "ISC", + "node_modules/ngx-device-detector": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/ngx-device-detector/-/ngx-device-detector-9.0.0.tgz", + "integrity": "sha512-zpio/wqH1GnxIpWCdA7cp5fmWf7YLycgzfXzQHmB9vaS7eAcqpBF5mxDS65IhE7TzNTJziDrYJCT+9tVqBcsDg==", + "license": "MIT", "dependencies": { - "minipass": "^7.0.3" + "tslib": "^2.0.0" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "peerDependencies": { + "@angular/common": "^19.0.0", + "@angular/core": "^19.0.0" } }, - "node_modules/minipass-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.0.tgz", - "integrity": "sha512-2v6aXUXwLP1Epd/gc32HAMIWoczx+fZwEPRHm/VwtrJzRGwR1qGZXEYV3Zp8ZjjbwaZhMrM6uHV4KVkk+XCc2w==", - "dev": true, + "node_modules/ngx-markdown": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-19.0.0.tgz", + "integrity": "sha512-/UDTYxK2sbG9LjeuPfqErCg9gbT1O64Rnqvs9qgvK70X//gEVCMStNUi1zYIqw/SLRk19Rk48DZMgPiFRbgb1Q==", "license": "MIT", "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^3.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" + "tslib": "^2.3.0" }, "optionalDependencies": { - "encoding": "^0.1.13" + "clipboard": "^2.0.11", + "emoji-toolkit": ">= 8.0.0 < 10.0.0", + "katex": "^0.16.0", + "mermaid": ">= 10.6.0 < 12.0.0", + "prismjs": "^1.28.0" + }, + "peerDependencies": { + "@angular/common": "^19.0.0", + "@angular/core": "^19.0.0", + "@angular/platform-browser": "^19.0.0", + "marked": "^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.15.0" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "license": "ISC", + "node_modules/ngx-skeleton-loader": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-9.0.0.tgz", + "integrity": "sha512-aO4/V6oGdZGNcTjasTg/fwzJJYl/ZmNKgCukOEQdUK3GSFOZtB/3GGULMJuZ939hk3Hzqh1OBiLfIM1SqTfhqg==", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "tslib": "^2.0.0" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0" } }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", + "node_modules/ngx-stripe": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/ngx-stripe/-/ngx-stripe-19.0.0.tgz", + "integrity": "sha512-Q95EnHcEjZrHg4f4XMwMhRlJNg/jenBfypk9JISC3T4R2hc+J6HS2NMHBuft9hfRepKrcQY+FiSLzH2yS+5cAg==", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "tslib": "^2.3.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@angular/common": ">=19.0.0 <20.0.0", + "@angular/core": ">=19.0.0 <20.0.0", + "@stripe/stripe-js": ">=5.0.0 <6.0.0" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "license": "ISC", + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "license": "MIT", + "optional": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "license": "ISC", + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": ">=8" + "node": ">= 6.13.0" } }, - "node_modules/minizlib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", - "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", + "node_modules/node-gyp": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.1.0.tgz", + "integrity": "sha512-/+7TuHKnBpnMvUQnsYEb0JOozDZqarQbfNuSGLXIjhStMT0fbw7IdSqWgopOP5xhRZE+lsbIvAHcekddruPZgQ==", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "tar": "^7.4.3", + "which": "^5.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 18" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "license": "MIT", + "optional": true, "dependencies": { - "minimist": "^1.2.6" + "detect-libc": "^2.0.1" }, "bin": { - "mkdirp": "bin/cmd.js" + "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/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "license": "MIT", - "optional": true, + "node_modules/node-gyp/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", - "license": "MIT", - "engines": { - "node": ">=10" + "node_modules/node-gyp/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ms": { - "version": "3.0.0-canary.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", - "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==", - "license": "MIT", + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=12.13" - } - }, - "node_modules/msgpackr": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", - "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", - "license": "MIT", - "optionalDependencies": { - "msgpackr-extract": "^3.0.2" + "node": ">=16" } }, - "node_modules/msgpackr-extract": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", - "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", "dependencies": { - "node-gyp-build-optional-packages": "5.2.2" + "brace-expansion": "^2.0.1" }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + "engines": { + "node": ">=16 || 14 >=14.17" }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/multer": { - "version": "1.4.4-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", - "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, "license": "MIT", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" + "bin": { + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { - "node": ">= 6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "license": "MIT", + "node_modules/node-gyp/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, - "bin": { - "multicast-dns": "cli.js" + "engines": { + "node": ">=18" } }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "node_modules/node-gyp/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=18" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "devOptional": true, "license": "MIT" }, - "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/node-schedule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" + "cron-parser": "^4.2.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/nopt": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" }, "bin": { - "needle": "bin/needle" + "nopt": "bin/nopt.js" }, "engines": { - "node": ">= 4.4.x" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT" - }, - "node_modules/ng-extract-i18n-merge": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.14.1.tgz", - "integrity": "sha512-hymcJcjfXJ+0r3EQShaSGmsST0AV3usgJuNMf6l04X+nIsgUPLMrXPBB/hVVVlAOjRcEB7RamKnfmexa5Rq1tw==", + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz", + "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==", + "dev": true, + "license": "ISC", "dependencies": { - "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0", - "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "xmldoc": "^1.1.3" + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-install-checks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.1.tgz", + "integrity": "sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" }, - "peerDependencies": { - "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/ngx-device-detector": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ngx-device-detector/-/ngx-device-detector-9.0.0.tgz", - "integrity": "sha512-zpio/wqH1GnxIpWCdA7cp5fmWf7YLycgzfXzQHmB9vaS7eAcqpBF5mxDS65IhE7TzNTJziDrYJCT+9tVqBcsDg==", - "license": "MIT", + "node_modules/npm-normalize-package-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", + "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-package-arg": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz", + "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==", + "dev": true, + "license": "ISC", "dependencies": { - "tslib": "^2.0.0" + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" }, - "peerDependencies": { - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0" + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/ngx-markdown": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-19.0.0.tgz", - "integrity": "sha512-/UDTYxK2sbG9LjeuPfqErCg9gbT1O64Rnqvs9qgvK70X//gEVCMStNUi1zYIqw/SLRk19Rk48DZMgPiFRbgb1Q==", - "license": "MIT", + "node_modules/npm-packlist": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-9.0.0.tgz", + "integrity": "sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ==", + "dev": true, + "license": "ISC", "dependencies": { - "tslib": "^2.3.0" + "ignore-walk": "^7.0.0" }, - "optionalDependencies": { - "clipboard": "^2.0.11", - "emoji-toolkit": ">= 8.0.0 < 10.0.0", - "katex": "^0.16.0", - "mermaid": ">= 10.6.0 < 12.0.0", - "prismjs": "^1.28.0" + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz", + "integrity": "sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", + "semver": "^7.3.5" }, - "peerDependencies": { - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0", - "@angular/platform-browser": "^19.0.0", - "marked": "^15.0.0", - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.15.0" + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz", + "integrity": "sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^3.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^14.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/ngx-skeleton-loader": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-9.0.0.tgz", - "integrity": "sha512-aO4/V6oGdZGNcTjasTg/fwzJJYl/ZmNKgCukOEQdUK3GSFOZtB/3GGULMJuZ939hk3Hzqh1OBiLfIM1SqTfhqg==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "devOptional": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "path-key": "^3.0.0" }, - "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/ngx-stripe": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/ngx-stripe/-/ngx-stripe-19.0.0.tgz", - "integrity": "sha512-Q95EnHcEjZrHg4f4XMwMhRlJNg/jenBfypk9JISC3T4R2hc+J6HS2NMHBuft9hfRepKrcQY+FiSLzH2yS+5cAg==", - "license": "MIT", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { - "tslib": "^2.3.0" + "boolbase": "^1.0.0" }, - "peerDependencies": { - "@angular/common": ">=19.0.0 <20.0.0", - "@angular/core": ">=19.0.0 <20.0.0", - "@stripe/stripe-js": ">=5.0.0 <6.0.0" + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "devOptional": true, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true, + "node_modules/nwsapi": { + "version": "2.2.18", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.18.tgz", + "integrity": "sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==", + "devOptional": true, "license": "MIT" }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "license": "MIT", - "optional": true - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/nx": { + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/nx/-/nx-20.5.0.tgz", + "integrity": "sha512-KuAzhTj1NHu3iOVsTBrzu7cboO69UgwzUMoAb8KfszV5FwQD5dARrkR7Ew4NZzFdB+arUr2rvo1ik9f1O19keg==", + "dev": true, + "hasInstallScript": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "@napi-rs/wasm-runtime": "0.2.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.2", + "@zkochan/js-yaml": "0.0.7", + "axios": "^1.7.4", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "front-matter": "^4.0.2", + "ignore": "^5.0.4", + "jest-diff": "^29.4.1", + "jsonc-parser": "3.2.0", + "lines-and-columns": "2.0.3", + "minimatch": "9.0.3", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "ora": "5.3.0", + "resolve.exports": "2.0.3", + "semver": "^7.5.3", + "string-width": "^4.2.3", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "yaml": "^2.6.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" }, - "engines": { - "node": "4.x || >=6.0.0" + "bin": { + "nx": "bin/nx.js", + "nx-cloud": "bin/nx-cloud.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "20.5.0", + "@nx/nx-darwin-x64": "20.5.0", + "@nx/nx-freebsd-x64": "20.5.0", + "@nx/nx-linux-arm-gnueabihf": "20.5.0", + "@nx/nx-linux-arm64-gnu": "20.5.0", + "@nx/nx-linux-arm64-musl": "20.5.0", + "@nx/nx-linux-x64-gnu": "20.5.0", + "@nx/nx-linux-x64-musl": "20.5.0", + "@nx/nx-win32-arm64-msvc": "20.5.0", + "@nx/nx-win32-x64-msvc": "20.5.0" }, "peerDependencies": { - "encoding": "^0.1.0" + "@swc-node/register": "^1.8.0", + "@swc/core": "^1.3.85" }, "peerDependenciesMeta": { - "encoding": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { "optional": true } } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/nx/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "license": "MIT", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "license": "(BSD-3-Clause OR GPL-2.0)", + "node_modules/nx/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, "engines": { - "node": ">= 6.13.0" + "node": ">=8" } }, - "node_modules/node-gyp": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.0.0.tgz", - "integrity": "sha512-zQS+9MTTeCMgY0F3cWPyJyRFAkVltQ1uXm+xXu/ES6KFgC6Czo1Seb9vQW2wNxSX2OrDTiqL0ojtkFxBQ0ypIw==", + "node_modules/nx/node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^14.0.3", - "nopt": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "tar": "^7.4.3", - "which": "^5.0.0" + "dotenv": "^16.4.5" }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/nx/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=0.8.0" } }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", - "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "node_modules/nx/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "detect-libc": "^2.0.1" + "escape-string-regexp": "^1.0.5" }, - "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/node-gyp-build-optional-packages/node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-gyp/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "node_modules/nx/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, + "license": "MIT", "bin": { - "glob": "dist/esm/bin.mjs" + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/nx/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/nx/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "license": "ISC", "dependencies": { @@ -24990,429 +26288,409 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/node-machine-id": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", - "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "license": "MIT" - }, - "node_modules/node-schedule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", - "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", + "node_modules/nx/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "license": "MIT", "dependencies": { - "cron-parser": "^4.2.0", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.3.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/non-layered-tidy-tree-layout": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", - "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", - "license": "MIT", - "optional": true - }, - "node_modules/nopt": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.0.0.tgz", - "integrity": "sha512-1L/fTJ4UmV/lUxT2Uf006pfZKTvAgCF+chz+0OgBHO8u2Z67pE7AaAUUj7CJy0lXqHmymUvGFt6NE9R3HER0yw==", + "node_modules/nx/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-package-data": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.0.tgz", - "integrity": "sha512-k6U0gKRIuNCTkwHGZqblCfLfBRh+w1vI6tBo+IeJwq2M8FUiOqhX7GH+GArQGScA7azd1WfyRCvxoXDO3hQDIA==", + "node_modules/nx/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "hosted-git-info": "^8.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=8" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/nx/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "node_modules/oauth": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.10.2.tgz", + "integrity": "sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/npm-bundled": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz", - "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^4.0.0" - }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-install-checks": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.1.tgz", - "integrity": "sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" + "node": ">= 0.4" }, - "engines": { - "node": "^18.17.0 || >=20.5.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-normalize-package-bin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", - "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">= 0.4" } }, - "node_modules/npm-package-arg": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.1.tgz", - "integrity": "sha512-aDxjFfPV3Liw0WOBWlyZLMBqtbgbg03rmGvHDJa2Ttv7tIz+1oB5qWec4psCDFZcZi9b5XdGkPdQiJxOPzvQRQ==", + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "hosted-git-info": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^6.0.0" + "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" }, "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-packlist": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-9.0.0.tgz", - "integrity": "sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^7.0.0" + "node": ">= 0.4" }, - "engines": { - "node": "^18.17.0 || >=20.5.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-pick-manifest": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz", - "integrity": "sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==", + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "npm-install-checks": "^7.1.0", - "npm-normalize-package-bin": "^4.0.0", - "npm-package-arg": "^12.0.0", - "semver": "^7.3.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-registry-fetch": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz", - "integrity": "sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@npmcli/redact": "^3.0.0", - "jsonparse": "^1.3.1", - "make-fetch-happen": "^14.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", - "minizlib": "^3.0.1", - "npm-package-arg": "^12.0.0", - "proc-log": "^5.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">= 0.4" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "devOptional": true, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0" + "ee-first": "1.1.1" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": ">= 0.8" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/nwsapi": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", - "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "devOptional": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "wrappy": "1" + } }, - "node_modules/nx": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/nx/-/nx-20.3.2.tgz", - "integrity": "sha512-VWUHX0uCn8ACFbpBTpgucDzwe4q/a/UU3AYOhzKCvTzb3kQiyvoxLjORSze93ZNEqgor0PMkCQgcoMBUjxJfzQ==", - "dev": true, - "hasInstallScript": true, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "license": "MIT", "dependencies": { - "@napi-rs/wasm-runtime": "0.2.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.2", - "@zkochan/js-yaml": "0.0.7", - "axios": "^1.7.4", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^8.0.1", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", - "enquirer": "~2.3.6", - "figures": "3.2.0", - "flat": "^5.0.2", - "front-matter": "^4.0.2", - "ignore": "^5.0.4", - "jest-diff": "^29.4.1", - "jsonc-parser": "3.2.0", - "lines-and-columns": "2.0.3", - "minimatch": "9.0.3", - "node-machine-id": "1.1.12", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "ora": "5.3.0", - "resolve.exports": "2.0.3", - "semver": "^7.5.3", - "string-width": "^4.2.3", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "yaml": "^2.6.0", - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "bin/nx.js", - "nx-cloud": "bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "20.3.2", - "@nx/nx-darwin-x64": "20.3.2", - "@nx/nx-freebsd-x64": "20.3.2", - "@nx/nx-linux-arm-gnueabihf": "20.3.2", - "@nx/nx-linux-arm64-gnu": "20.3.2", - "@nx/nx-linux-arm64-musl": "20.3.2", - "@nx/nx-linux-x64-gnu": "20.3.2", - "@nx/nx-linux-x64-musl": "20.3.2", - "@nx/nx-win32-arm64-msvc": "20.3.2", - "@nx/nx-win32-x64-msvc": "20.3.2" + "mimic-fn": "^2.1.0" }, - "peerDependencies": { - "@swc-node/register": "^1.8.0", - "@swc/core": "^1.3.85" + "engines": { + "node": ">=6" }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "dev": true + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/open-color": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/open-color/-/open-color-1.9.1.tgz", + "integrity": "sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw==", + "license": "MIT" + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/nx/node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", "dependencies": { - "dotenv": "^16.4.5" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://dotenvx.com" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "restore-cursor": "^3.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { "node": ">=8" } }, - "node_modules/nx/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/ora/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/ordered-binary": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", + "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", + "license": "MIT", + "optional": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nx/node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "p-limit": "^3.0.2" }, "engines": { "node": ">=10" @@ -25421,1090 +26699,1109 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/ora/node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, "license": "MIT", "engines": { "node": ">=6" + } + }, + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "devOptional": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/package-manager-detector": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", + "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "quansync": "^0.2.7" + } + }, + "node_modules/pacote": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-20.0.0.tgz", + "integrity": "sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A==", "dev": true, "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, "bin": { - "yaml": "bin.mjs" + "pacote": "bin/index.js" }, "engines": { - "node": ">= 14" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/oauth": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.10.0.tgz", - "integrity": "sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q==", + "node_modules/papaparse": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz", + "integrity": "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==", "license": "MIT" }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, + "node_modules/parse-json/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/parse-json/node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 0.10" } }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, "license": "MIT", - "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" - }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, + "node_modules/parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" + "domhandler": "^5.0.3", + "parse5": "^7.0.0" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "parse5": "^7.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "license": "MIT" - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", "license": "MIT", "dependencies": { - "ee-first": "1.1.1" + "parse5": "^7.0.0" }, - "engines": { - "node": ">= 0.8" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "devOptional": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/only": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", - "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", - "dev": true - }, - "node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "node_modules/passport": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", + "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", "license": "MIT", "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" }, "engines": { - "node": ">=18" + "node": ">= 0.4.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open-color": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/open-color/-/open-color-1.9.1.tgz", - "integrity": "sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw==", - "license": "MIT" - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" } }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, + "node_modules/passport-google-oauth20": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz", + "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==", "license": "MIT", "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" + "passport-oauth2": "1.x.x" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4.0" } }, - "node_modules/optionator/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, + "node_modules/passport-headerapikey": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/passport-headerapikey/-/passport-headerapikey-1.2.2.tgz", + "integrity": "sha512-4BvVJRrWsNJPrd3UoZfcnnl4zvUWYKEtfYkoDsaOKBsrWHYmzTApCjs7qUbncOLexE9ul0IRiYBFfBG0y9IVQA==", "license": "MIT", - "engines": { - "node": ">= 0.8.0" + "dependencies": { + "lodash": "^4.17.15", + "passport-strategy": "^1.0.0" } }, - "node_modules/optionator/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, + "node_modules/passport-jwt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz", + "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==", "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" + "jsonwebtoken": "^9.0.0", + "passport-strategy": "^1.0.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "node_modules/passport-oauth2": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz", + "integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==", "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "base64url": "3.x.x", + "oauth": "0.10.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" }, "engines": { - "node": ">=10" + "node": ">= 0.4.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" } }, - "node_modules/ordered-binary": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", - "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", - "license": "MIT", - "optional": true - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", + "node_modules/passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4.0" } }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true, "license": "MIT" }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "devOptional": true, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "optional": true }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "devOptional": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { "node": ">=8" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "devOptional": true, "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/p-retry": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", - "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", - "license": "MIT", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "devOptional": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16.17" + "node": ">=16 || 14 >=14.18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "license": "ISC" }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "devOptional": true, - "license": "BlueOak-1.0.0" + "node_modules/path-to-regexp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", + "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", + "license": "MIT" }, - "node_modules/pacote": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-20.0.0.tgz", - "integrity": "sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^6.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/package-json": "^6.0.0", - "@npmcli/promise-spawn": "^8.0.0", - "@npmcli/run-script": "^9.0.0", - "cacache": "^19.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^12.0.0", - "npm-packlist": "^9.0.0", - "npm-pick-manifest": "^10.0.0", - "npm-registry-fetch": "^18.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^3.0.0", - "ssri": "^12.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "bin/index.js" - }, + "license": "MIT", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=8" } }, - "node_modules/pacote/node_modules/chownr": { + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT", + "optional": true + }, + "node_modules/pathval": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 14.16" } }, - "node_modules/pacote/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } + "license": "MIT" }, - "node_modules/pacote/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pacote/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/pacote/node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "devOptional": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/pacote/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "node_modules/piscina": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.8.0.tgz", + "integrity": "sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==", + "license": "MIT", + "optionalDependencies": { + "@napi-rs/nice": "^1.0.1" } }, - "node_modules/pacote/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "find-up": "^6.3.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/pacote/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/papaparse": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz", - "integrity": "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==", - "license": "MIT" - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "devOptional": true, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "license": "MIT", "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "license": "MIT", "dependencies": { - "callsites": "^3.0.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-json/node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, "engines": { - "node": ">= 0.10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.0.tgz", + "integrity": "sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==", "license": "MIT", - "dependencies": { - "entities": "^4.5.0" + "engines": { + "node": ">=12.20" }, "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5-html-rewriting-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", - "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "node_modules/pkg-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz", + "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", "license": "MIT", + "optional": true, "dependencies": { - "entities": "^4.3.0", - "parse5": "^7.0.0", - "parse5-sax-parser": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "confbox": "^0.2.1", + "exsolve": "^1.0.1", + "pathe": "^2.0.3" } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT", + "optional": true + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", "license": "MIT", + "optional": true, "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" } }, - "node_modules/parse5-sax-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", - "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "node_modules/polished": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "dev": true, "license": "MIT", "dependencies": { - "parse5": "^7.0.0" + "@babel/runtime": "^7.17.8" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">=10" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", "license": "MIT", - "engines": { - "node": ">= 0.8" + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "devOptional": true, + "node_modules/portfinder": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.34.tgz", + "integrity": "sha512-aTyliYB9lpGRx0iUzgbLpCz3xiCEBsPOiukSp1X8fOnHalHCKNxxpv2cSc00Cc49mpWUtlyRVFHRSaRJF8ew3g==", + "dev": true, "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "async": "^3.2.6", + "debug": "^4.3.6", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 6.0" } }, - "node_modules/passport": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", - "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, "license": "MIT", - "dependencies": { - "passport-strategy": "1.x.x", - "pause": "0.0.1", - "utils-merge": "^1.0.1" - }, "engines": { - "node": ">= 0.4.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jaredhanson" + "node": ">= 0.4" } }, - "node_modules/passport-google-oauth20": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz", - "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==", + "node_modules/postcss": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", + "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "passport-oauth2": "1.x.x" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">= 0.4.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/passport-headerapikey": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/passport-headerapikey/-/passport-headerapikey-1.2.2.tgz", - "integrity": "sha512-4BvVJRrWsNJPrd3UoZfcnnl4zvUWYKEtfYkoDsaOKBsrWHYmzTApCjs7qUbncOLexE9ul0IRiYBFfBG0y9IVQA==", + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.15", - "passport-strategy": "^1.0.0" + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" } }, - "node_modules/passport-jwt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz", - "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==", + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dev": true, "license": "MIT", "dependencies": { - "jsonwebtoken": "^9.0.0", - "passport-strategy": "^1.0.0" + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/passport-oauth2": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz", - "integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==", + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dev": true, "license": "MIT", "dependencies": { - "base64url": "3.x.x", - "oauth": "0.10.x", - "passport-strategy": "1.x.x", - "uid2": "0.0.x", - "utils-merge": "1.x.x" + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 0.4.0" + "node": "^14 || ^16 || >=18.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jaredhanson" + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/passport-strategy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", "dev": true, - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "devOptional": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "devOptional": true, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "devOptional": true, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "devOptional": true, - "license": "BlueOak-1.0.0", + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=10.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "postcss": "^8.0.0" } }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "license": "MIT", + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, "engines": { - "node": ">=8" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, "engines": { - "node": ">= 14.16" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/pause": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "license": "MIT" }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", "dev": true, "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/piscina": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.7.0.tgz", - "integrity": "sha512-b8hvkpp9zS0zsfa939b/jXbe64Z2gZv0Ha7FYPNUiDIB1y2AtxcOZdfP8xN8HFjUaqQiT9gRlfjAsoL8vdJ1Iw==", - "license": "MIT", - "optionalDependencies": { - "@napi-rs/nice": "^1.0.1" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "devOptional": true, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", "dev": true, "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/polished": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", - "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.17.8" + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "license": "MIT", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", "dev": true, "license": "MIT", "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" + "postcss-selector-parser": "^6.0.16" }, "engines": { - "node": ">= 0.12.0" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "license": "MIT", + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, "engines": { - "node": ">= 0.4" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=4" } }, - "node_modules/postcss-calc": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", - "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", - "dev": true, - "license": "MIT", + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0" + "icss-utils": "^5.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": "^10 || ^12 || >= 14" }, "peerDependencies": { - "postcss": "^8.2.2" + "postcss": "^8.1.0" } }, - "node_modules/postcss-colormin": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", - "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", "dev": true, "license": "MIT", - "dependencies": { - "browserslist": "^4.23.0", - "caniuse-api": "^3.0.0", - "colord": "^2.9.3", - "postcss-value-parser": "^4.2.0" - }, "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -26512,14 +27809,13 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-convert-values": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", - "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -26529,12 +27825,15 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-discard-comments": { + "node_modules/postcss-normalize-positions": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", - "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -26542,12 +27841,15 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-discard-duplicates": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", - "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -26555,12 +27857,15 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-discard-empty": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", - "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -26568,12 +27873,15 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-discard-overridden": { + "node_modules/postcss-normalize-timing-functions": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", - "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { "node": "^14 || ^16 || >=18.0" }, @@ -26581,62 +27889,47 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=10.0.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.0.0" + "postcss": "^8.4.31" } }, - "node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", "dev": true, "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" + "postcss": "^8.4.31" } }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "license": "MIT" - }, - "node_modules/postcss-merge-longhand": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", - "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^6.1.1" + "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -26645,17 +27938,15 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-merge-rules": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", - "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-api": "^3.0.0", "cssnano-utils": "^4.0.2", - "postcss-selector-parser": "^6.0.16" + "postcss-value-parser": "^4.2.0" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -26664,14 +27955,15 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-minify-font-values": { + "node_modules/postcss-reduce-initial": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", - "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" }, "engines": { "node": "^14 || ^16 || >=18.0" @@ -26680,15 +27972,13 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-minify-gradients": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", - "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", "dev": true, "license": "MIT", "dependencies": { - "colord": "^2.9.3", - "cssnano-utils": "^4.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -26698,28 +27988,41 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-minify-params": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", - "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "cssnano-utils": "^4.0.2", - "postcss-value-parser": "^4.2.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" }, "peerDependencies": { "postcss": "^8.4.31" } }, - "node_modules/postcss-minify-selectors": { + "node_modules/postcss-unique-selectors": { "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", - "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", "dev": true, "license": "MIT", "dependencies": { @@ -26732,1671 +28035,1808 @@ "postcss": "^8.4.31" } }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "license": "ISC", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.8.0" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", - "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "node_modules/prettier": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", + "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "dev": true, "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.1.0" + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-organize-attributes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-attributes/-/prettier-plugin-organize-attributes-1.0.0.tgz", + "integrity": "sha512-+NmameaLxbCcylEXsKPmawtzla5EE6ECqvGkpfQz4KM847fXDifB1gFnPQEpoADAq6IXg+cMI8Z0ISJEXa6fhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" }, "peerDependencies": { - "postcss": "^8.1.0" + "prettier": "^3.0.0" } }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "devOptional": true, "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/postcss-modules-scope": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", - "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", - "license": "ISC", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prisma": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.4.1.tgz", + "integrity": "sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "postcss-selector-parser": "^7.0.0" + "@prisma/engines": "6.4.1", + "esbuild": ">=0.12 <1", + "esbuild-register": "3.6.0" + }, + "bin": { + "prisma": "build/index.js" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=18.18" + }, + "optionalDependencies": { + "fsevents": "2.3.3" }, "peerDependencies": { - "postcss": "^8.1.0" + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, + "optional": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, + "node_modules/proc-log": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", + "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", + "dev": true, + "license": "ISC", "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/postcss-normalize-charset": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", - "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">= 0.6.0" } }, - "node_modules/postcss-normalize-display-values": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", - "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promise-coalesce": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/promise-coalesce/-/promise-coalesce-1.1.2.tgz", + "integrity": "sha512-zLaJ9b8hnC564fnJH6NFSOGZYYdzrAJn2JUUIwzoQb32fG2QAakpDNM+CZo1km6keXkRXRM+hml1BFAPVnPkxg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=16" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=10" } }, - "node_modules/postcss-normalize-positions": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", - "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", - "dev": true, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "devOptional": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">= 6" } }, - "node_modules/postcss-normalize-repeat-style": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", - "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", - "dev": true, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">= 0.10" } }, - "node_modules/postcss-normalize-string": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", - "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true, + "license": "MIT" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "license": "MIT", + "optional": true + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" + "punycode": "^2.3.1" }, - "peerDependencies": { - "postcss": "^8.4.31" + "funding": { + "url": "https://github.com/sponsors/lupomontero" } }, - "node_modules/postcss-normalize-timing-functions": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", - "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=6" } }, - "node_modules/postcss-normalize-unicode": { + "node_modules/pure-rand": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", - "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", - "dev": true, + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "tslib": "^2.8.1" } }, - "node_modules/postcss-normalize-url": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", - "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", - "dev": true, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", "dependencies": { - "postcss-value-parser": "^4.2.0" + "side-channel": "^1.0.6" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=0.6" }, - "peerDependencies": { - "postcss": "^8.4.31" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quansync": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.8.tgz", + "integrity": "sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/rambda": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.2.tgz", + "integrity": "sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" } }, - "node_modules/postcss-normalize-whitespace": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", - "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", - "dev": true, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">= 0.6" } }, - "node_modules/postcss-ordered-values": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", - "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", - "dev": true, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "license": "MIT", "dependencies": { - "cssnano-utils": "^4.0.2", - "postcss-value-parser": "^4.2.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">= 0.8" } }, - "node_modules/postcss-reduce-initial": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", - "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-api": "^3.0.0" + "loose-envify": "^1.1.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-transforms": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", - "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" }, "peerDependencies": { - "postcss": "^8.4.31" + "react": "^18.2.0" } }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/postcss-svgo": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", - "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^3.2.0" - }, - "engines": { - "node": "^14 || ^16 || >= 18" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "pify": "^2.3.0" } }, - "node_modules/postcss-unique-selectors": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", - "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", - "dev": true, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.16" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, - "peerDependencies": { - "postcss": "^8.4.31" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "engines": { - "node": ">= 0.8.0" + "node": ">= 6" } }, - "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", - "dev": true, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, "engines": { - "node": ">=14" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/prettier-plugin-organize-attributes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-organize-attributes/-/prettier-plugin-organize-attributes-1.0.0.tgz", - "integrity": "sha512-+NmameaLxbCcylEXsKPmawtzla5EE6ECqvGkpfQz4KM847fXDifB1gFnPQEpoADAq6IXg+cMI8Z0ISJEXa6fhg==", + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.0.0" + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" }, - "peerDependencies": { - "prettier": "^3.0.0" + "engines": { + "node": ">= 4" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "node_modules/recast/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" + "node": ">=0.10.0" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "devOptional": true, - "license": "MIT", + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "resolve": "^1.1.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.10" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "devOptional": true, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prisma": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.4.1.tgz", - "integrity": "sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg==", - "devOptional": true, - "hasInstallScript": true, - "license": "Apache-2.0", "dependencies": { - "@prisma/engines": "6.4.1", - "esbuild": ">=0.12 <1", - "esbuild-register": "3.6.0" - }, - "bin": { - "prisma": "build/index.js" - }, - "engines": { - "node": ">=18.18" - }, - "optionalDependencies": { - "fsevents": "2.3.3" - }, - "peerDependencies": { - "typescript": ">=5.1.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "node_modules/redent/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/proc-log": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", - "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" + "node_modules/redis": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.0.tgz", + "integrity": "sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==", + "license": "MIT", + "workspaces": [ + "./packages/*" + ], + "dependencies": { + "@redis/bloom": "1.2.0", + "@redis/client": "1.6.0", + "@redis/graph": "1.1.1", + "@redis/json": "1.0.7", + "@redis/search": "1.2.0", + "@redis/time-series": "1.1.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==", - "dev": true, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", "license": "MIT", "engines": { - "node": ">= 0.6.0" + "node": ">=4" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/promise-coalesce": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/promise-coalesce/-/promise-coalesce-1.1.2.tgz", - "integrity": "sha512-zLaJ9b8hnC564fnJH6NFSOGZYYdzrAJn2JUUIwzoQb32fG2QAakpDNM+CZo1km6keXkRXRM+hml1BFAPVnPkxg==", - "license": "BSD-3-Clause", + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "license": "MIT", + "dependencies": { + "redis-errors": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": ">=4" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "license": "ISC" + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "node_modules/reflect.getprototypeof": { + "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==", "dev": true, "license": "MIT", "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "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" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/promise-retry/node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, "engines": { - "node": ">= 4" + "node": ">=4" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "devOptional": true, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "license": "MIT", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" + "@babel/runtime": "^7.8.4" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "node_modules/regex-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "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==", + "dev": true, "license": "MIT", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "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" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "license": "MIT" }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "license": "MIT", - "optional": true - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "license": "MIT", + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "license": "BSD-2-Clause", "dependencies": { - "punycode": "^2.3.1" + "jsesc": "~3.0.2" }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/pump": { + "node_modules/regjsparser/node_modules/jsesc": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "devOptional": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/pvtsutils": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", - "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", "license": "MIT", "dependencies": { - "tslib": "^2.8.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/pvutils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", - "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", - "license": "MIT", + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "devOptional": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "devOptional": true, + "license": "BSD-2-Clause", "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/querystringify": { + "node_modules/renderkid/node_modules/entities": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "license": "MIT" + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "devOptional": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "devOptional": true, "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", { "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT" - }, - "node_modules/rambda": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.2.tgz", - "integrity": "sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==", - "dev": true, - "license": "MIT" - }, - "node_modules/ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "node_modules/replace-in-file": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-8.3.0.tgz", + "integrity": "sha512-4VhddQiMCPIuypiwHDTM+XHjZoVu9h7ngBbSCnwGRcwdHwxltjt/m//Ep3GDwqaOx1fDSrKFQ+n7uo4uVcEz9Q==", "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "chalk": "^5.3.0", + "glob": "^10.4.2", + "yargs": "^17.7.2" + }, + "bin": { + "replace-in-file": "bin/cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/replace-in-file/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" + "balanced-match": "^1.0.0" } }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "node_modules/replace-in-file/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", - "license": "MIT", "engines": { - "node": ">= 14.16.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "node_modules/replace-in-file/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">= 4" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "node_modules/replace-in-file/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { - "resolve": "^1.1.6" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/redent": { + "node_modules/request-progress": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, "license": "MIT", "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" + "throttleit": "^1.0.0" } }, - "node_modules/redent/node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/redis": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.0.tgz", - "integrity": "sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", - "workspaces": [ - "./packages/*" - ], - "dependencies": { - "@redis/bloom": "1.2.0", - "@redis/client": "1.6.0", - "@redis/graph": "1.1.1", - "@redis/json": "1.0.7", - "@redis/search": "1.2.0", - "@redis/time-series": "1.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/redis-parser": { + "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "devOptional": true, "license": "MIT", "dependencies": { - "redis-errors": "^1.0.0" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0" - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", - "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "dunder-proto": "^1.0.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "which-builtin-type": "^1.2.1" + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "license": "MIT" + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "license": "MIT", "dependencies": { - "regenerate": "^1.4.2" + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "node_modules/resolve-url-loader/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" + "engines": { + "node": "*" } }, - "node_modules/regex-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", - "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", - "dev": true, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.2" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.9.0" } }, - "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", - "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "license": "MIT" + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10" + } }, - "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", - "license": "BSD-2-Clause", + "node_modules/restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "license": "MIT", "dependencies": { - "jsesc": "~3.0.2" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" }, - "bin": { - "regjsparser": "bin/parser" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "node_modules/restore-cursor/node_modules/onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true, "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "devOptional": true, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 4" } }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "devOptional": true, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "license": "MIT", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "license": "ISC", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "devOptional": true, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", "dependencies": { - "domelementtype": "^2.2.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 4" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense", + "optional": true + }, + "node_modules/rollup": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "license": "MIT", "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "@types/estree": "1.0.6" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.34.8", + "@rollup/rollup-android-arm64": "4.34.8", + "@rollup/rollup-darwin-arm64": "4.34.8", + "@rollup/rollup-darwin-x64": "4.34.8", + "@rollup/rollup-freebsd-arm64": "4.34.8", + "@rollup/rollup-freebsd-x64": "4.34.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", + "@rollup/rollup-linux-arm64-gnu": "4.34.8", + "@rollup/rollup-linux-arm64-musl": "4.34.8", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", + "@rollup/rollup-linux-s390x-gnu": "4.34.8", + "@rollup/rollup-linux-x64-gnu": "4.34.8", + "@rollup/rollup-linux-x64-musl": "4.34.8", + "@rollup/rollup-win32-arm64-msvc": "4.34.8", + "@rollup/rollup-win32-ia32-msvc": "4.34.8", + "@rollup/rollup-win32-x64-msvc": "4.34.8", + "fsevents": "~2.3.2" } }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "devOptional": true, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", { "type": "github", - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } ], "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "queue-microtask": "^1.2.2" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", + "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" + }, "engines": { - "node": ">=0.10" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/replace-in-file": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-8.3.0.tgz", - "integrity": "sha512-4VhddQiMCPIuypiwHDTM+XHjZoVu9h7ngBbSCnwGRcwdHwxltjt/m//Ep3GDwqaOx1fDSrKFQ+n7uo4uVcEz9Q==", + "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" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.3.0", - "glob": "^10.4.2", - "yargs": "^17.7.2" - }, - "bin": { - "replace-in-file": "bin/cli.js" + "es-errors": "^1.3.0", + "isarray": "^2.0.5" }, "engines": { - "node": ">=18" - } - }, - "node_modules/replace-in-file/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/replace-in-file/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/replace-in-file/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz", + "integrity": "sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, + "node_modules/sass-embedded": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.85.1.tgz", + "integrity": "sha512-0i+3h2Df/c71afluxC1SXqyyMmJlnKWfu9ZGdzwuKRM1OftEa2XM2myt5tR36CF3PanYrMjFKtRIj8PfSf838w==", + "devOptional": true, "license": "MIT", "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "@bufbuild/protobuf": "^2.0.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.0.2", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-android-arm": "1.85.1", + "sass-embedded-android-arm64": "1.85.1", + "sass-embedded-android-ia32": "1.85.1", + "sass-embedded-android-riscv64": "1.85.1", + "sass-embedded-android-x64": "1.85.1", + "sass-embedded-darwin-arm64": "1.85.1", + "sass-embedded-darwin-x64": "1.85.1", + "sass-embedded-linux-arm": "1.85.1", + "sass-embedded-linux-arm64": "1.85.1", + "sass-embedded-linux-ia32": "1.85.1", + "sass-embedded-linux-musl-arm": "1.85.1", + "sass-embedded-linux-musl-arm64": "1.85.1", + "sass-embedded-linux-musl-ia32": "1.85.1", + "sass-embedded-linux-musl-riscv64": "1.85.1", + "sass-embedded-linux-musl-x64": "1.85.1", + "sass-embedded-linux-riscv64": "1.85.1", + "sass-embedded-linux-x64": "1.85.1", + "sass-embedded-win32-arm64": "1.85.1", + "sass-embedded-win32-ia32": "1.85.1", + "sass-embedded-win32-x64": "1.85.1" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.85.1.tgz", + "integrity": "sha512-GkcgUGMZtEF9gheuE1dxCU0ZSAifuaFXi/aX7ZXvjtdwmTl9Zc/OHR9oiUJkc8IW9UI7H8TuwlTAA8+SwgwIeQ==", + "cpu": [ + "arm" + ], "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/sass-embedded-android-arm64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.85.1.tgz", + "integrity": "sha512-27oRheqNA3SJM2hAxpVbs7mCKUwKPWmEEhyiNFpBINb5ELVLg+Ck5RsGg+SJmo130ul5YX0vinmVB5uPWc8X5w==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "node_modules/sass-embedded-android-ia32": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.85.1.tgz", + "integrity": "sha512-f3x16NyRgtXFksIaO/xXKrUhttUBv8V0XsAR2Dhdb/yz4yrDrhzw9Wh8fmw7PlQqECcQvFaoDr3XIIM6lKzasw==", + "cpu": [ + "ia32" + ], "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "devOptional": true, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.85.1.tgz", + "integrity": "sha512-IP6OijpJ8Mqo7XqCe0LsuZVbAxEFVboa0kXqqR5K55LebEplsTIA2GnmRyMay3Yr/2FVGsZbCb6Wlgkw23eCiA==", + "cpu": [ + "riscv64" + ], "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, + "node_modules/sass-embedded-android-x64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.85.1.tgz", + "integrity": "sha512-Mh7CA53wR3ADvXAYipFc/R3vV4PVOzoKwWzPxmq+7i8UZrtsVjKONxGtqWe9JG1mna0C9CRZAx0sv/BzbOJxWg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "devOptional": true, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.1.tgz", + "integrity": "sha512-msWxzhvcP9hqGVegxVePVEfv9mVNTlUgGr6k7O7Ihji702mbtrH/lKwF4aRkkt4g1j7tv10+JtQXmTNi/pi9kA==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "node_modules/sass-embedded-darwin-x64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.85.1.tgz", + "integrity": "sha512-J4UFHUiyI9Z+mwYMwz11Ky9TYr3hY1fCxeQddjNGL/+ovldtb0yAIHvoVM0BGprQDm5JqhtUk8KyJ3RMJqpaAA==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/resolve-url-loader/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "devOptional": true, + "node_modules/sass-embedded-linux-arm": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.85.1.tgz", + "integrity": "sha512-X0fDh95nNSw1wfRlnkE4oscoEA5Au4nnk785s9jghPFkTBg+A+5uB6trCjf0fM22+Iw6kiP4YYmDdw3BqxAKLQ==", + "cpu": [ + "arm" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/sass-embedded-linux-arm64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.85.1.tgz", + "integrity": "sha512-jGadetB03BMFG2rq3OXub/uvC/lGpbQOiLGEz3NLb2nRZWyauRhzDtvZqkr6BEhxgIWtMtz2020yD8ZJSw/r2w==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "node_modules/sass-embedded-linux-ia32": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.85.1.tgz", + "integrity": "sha512-7HlYY90d9mitDtNi5s+S+5wYZrTVbkBH2/kf7ixrzh2BFfT0YM81UHLJRnGX93y9aOMBL6DSZAIfkt1RsV9bkQ==", + "cpu": [ + "ia32" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 4" + "node": ">=14.0.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.85.1.tgz", + "integrity": "sha512-5vcdEqE8QZnu6i6shZo7x2N36V7YUoFotWj2rGekII5ty7Nkaj+VtZhUEOp9tAzEOlaFuDp5CyO1kUCvweT64A==", + "cpu": [ + "arm" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=14.0.0" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.85.1.tgz", + "integrity": "sha512-FLkIT0p18XOkR6wryJ13LqGBDsrYev2dRk9dtiU18NCpNXruKsdBQ1ZnWHVKB3h1dA9lFyEEisC0sooKdNfeOQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/sass-embedded-linux-musl-ia32": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.85.1.tgz", + "integrity": "sha512-N1093T84zQJor1yyIAdYScB5eAuQarGK1tKgZ4uTnxVlgA7Xi1lXV8Eh7ox9sDqKCaWkVQ3MjqU26vYRBeRWyw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=14.0.0" } }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "license": "Unlicense", - "optional": true - }, - "node_modules/rollup": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.26.0.tgz", - "integrity": "sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg==", + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.85.1.tgz", + "integrity": "sha512-WRsZS/7qlfYXsa93FBpSruieuURIu7ySfFhzYfF1IbKrNAGwmbduutkHZh2ddm5/vQMvQ0Rdosgv+CslaQHMcw==", + "cpu": [ + "riscv64" + ], "license": "MIT", - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.26.0", - "@rollup/rollup-android-arm64": "4.26.0", - "@rollup/rollup-darwin-arm64": "4.26.0", - "@rollup/rollup-darwin-x64": "4.26.0", - "@rollup/rollup-freebsd-arm64": "4.26.0", - "@rollup/rollup-freebsd-x64": "4.26.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.26.0", - "@rollup/rollup-linux-arm-musleabihf": "4.26.0", - "@rollup/rollup-linux-arm64-gnu": "4.26.0", - "@rollup/rollup-linux-arm64-musl": "4.26.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.26.0", - "@rollup/rollup-linux-riscv64-gnu": "4.26.0", - "@rollup/rollup-linux-s390x-gnu": "4.26.0", - "@rollup/rollup-linux-x64-gnu": "4.26.0", - "@rollup/rollup-linux-x64-musl": "4.26.0", - "@rollup/rollup-win32-arm64-msvc": "4.26.0", - "@rollup/rollup-win32-ia32-msvc": "4.26.0", - "@rollup/rollup-win32-x64-msvc": "4.26.0", - "fsevents": "~2.3.2" + "node": ">=14.0.0" } }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.85.1.tgz", + "integrity": "sha512-+OlLIilA5TnP0YEqTQ8yZtkW+bJIQYvzoGoNLUEskeyeGuOiIyn2CwL6G4JQB4xZQFaxPHb7JD3EueFkQbH0Pw==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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/sass-embedded-linux-riscv64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.85.1.tgz", + "integrity": "sha512-mKKlOwMGLN7yP1p0gB5yG/HX4fYLnpWaqstNuOOXH+fOzTaNg0+1hALg0H0CDIqypPO74M5MS9T6FAJZGdT6dQ==", + "cpu": [ + "riscv64" ], "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "license": "BSD-3-Clause", - "optional": true - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "node_modules/sass-embedded-linux-x64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.85.1.tgz", + "integrity": "sha512-uKRTv0z8NgtHV7xSren78+yoWB79sNi7TMqI7Bxd8fcRNIgHQSA8QBdF8led2ETC004hr8h71BrY60RPO+SSvA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "node_modules/sass-embedded-win32-arm64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.85.1.tgz", + "integrity": "sha512-/GMiZXBOc6AEMBC3g25Rp+x8fq9Z6Ql7037l5rajBPhZ+DdFwtdHY0Ou3oIU6XuWUwD06U3ii4XufXVFhsP6PA==", + "cpu": [ + "arm64" + ], "license": "MIT", "optional": true, - "dependencies": { - "mri": "^1.1.0" - }, + "os": [ + "win32" + ], "engines": { - "node": ">=6" + "node": ">=14.0.0" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, + "node_modules/sass-embedded-win32-ia32": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.85.1.tgz", + "integrity": "sha512-L+4BWkKKBGFOKVQ2PQ5HwFfkM5FvTf1Xx2VSRvEWt9HxPXp6SPDho6zC8fqNQ3hSjoaoASEIJcSvgfdQYO0gdg==", + "cpu": [ + "ia32" + ], "license": "MIT", - "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" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "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/sass-embedded-win32-x64": { + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.85.1.tgz", + "integrity": "sha512-/FO0AGKWxVfCk4GKsC0yXWBpUZdySe3YAAbQQL0lL6xUd1OiUY8Kow6g4Kc1TB/+z0iuQKKTqI/acJMEYl4iTQ==", + "cpu": [ + "x64" ], - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sass": { - "version": "1.80.7", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.7.tgz", - "integrity": "sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ==", + "node_modules/sass-embedded/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, "license": "MIT", "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=10" }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", + "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", "license": "MIT", "dependencies": { - "klona": "^2.0.4", "neo-async": "^2.6.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "fibers": { + "@rspack/core": { "optional": true }, "node-sass": { @@ -28407,6 +29847,9 @@ }, "sass-embedded": { "optional": true + }, + "webpack": { + "optional": true } } }, @@ -28458,6 +29901,23 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", @@ -28492,9 +29952,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -28523,6 +29983,60 @@ "semver": "bin/semver" } }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -28625,69 +30139,6 @@ "node": ">= 0.8.0" } }, - "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/serve-static/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/serve-static/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -28722,6 +30173,21 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -28883,24 +30349,30 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/sigstore": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-3.0.0.tgz", - "integrity": "sha512-PHMifhh3EN4loMcHCz6l3v/luzgT3za+9f8subGgeMNjbJjzH4Ij/YoX3Gvu+kaouJRIlVdTHHCREADYf+ZteA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-3.1.0.tgz", + "integrity": "sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.0.0", + "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "@sigstore/sign": "^3.0.0", - "@sigstore/tuf": "^3.0.0", - "@sigstore/verify": "^2.0.0" + "@sigstore/protobuf-specs": "^0.4.0", + "@sigstore/sign": "^3.1.0", + "@sigstore/tuf": "^3.1.0", + "@sigstore/verify": "^2.1.0" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -28945,43 +30417,13 @@ } }, "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/smart-buffer": { @@ -29016,9 +30458,9 @@ } }, "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", "dev": true, "license": "MIT", "dependencies": { @@ -29053,12 +30495,12 @@ "license": "MIT" }, "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/source-map-js": { @@ -29086,8 +30528,20 @@ "type": "opencollective", "url": "https://opencollective.com/webpack" }, - "peerDependencies": { - "webpack": "^5.72.1" + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/source-map-support": { @@ -29100,6 +30554,15 @@ "source-map": "^0.6.0" } }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -29130,9 +30593,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", "dev": true, "license": "CC0-1.0" }, @@ -29199,6 +30662,20 @@ "node": ">=0.10.0" } }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, "node_modules/ssri": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz", @@ -29250,6 +30727,97 @@ "escodegen": "^1.8.1" } }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -29483,13 +31051,13 @@ } }, "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-final-newline": { @@ -29541,36 +31109,6 @@ "node": ">=12.*" } }, - "node_modules/stripe/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/stripe/node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stripe/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, "node_modules/style-loader": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", @@ -29606,9 +31144,9 @@ } }, "node_modules/stylis": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", - "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", "license": "MIT", "optional": true }, @@ -29664,6 +31202,16 @@ "devOptional": true, "license": "MIT" }, + "node_modules/stylus/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/stylus/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -29701,16 +31249,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/stylus/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "devOptional": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -29803,6 +31341,29 @@ "devOptional": true, "license": "MIT" }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -29813,21 +31374,21 @@ } }, "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "license": "ISC", "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" } }, "node_modules/tar-stream": { @@ -29847,30 +31408,80 @@ "node": ">=6" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "license": "MIT", "bin": { - "mkdirp": "dist/cjs/src/bin.js" + "mkdirp": "bin/cmd.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" } }, "node_modules/telejson": { @@ -29884,9 +31495,9 @@ } }, "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -29902,9 +31513,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", - "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -29935,15 +31546,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -29973,30 +31575,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -30012,6 +31590,18 @@ "node": ">=8" } }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "license": "Unlicense", + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/throttleit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", @@ -30049,18 +31639,28 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT", + "optional": true + }, "node_modules/tinyglobby": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", - "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.2", + "fdir": "^6.4.3", "picomatch": "^4.0.2" }, "engines": { "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, "node_modules/tinyrainbow": { @@ -30180,6 +31780,22 @@ "node": ">=12" } }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -30190,9 +31806,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", - "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", "dev": true, "license": "MIT", "engines": { @@ -30277,16 +31893,6 @@ "webpack": "^5.0.0" } }, - "node_modules/ts-loader/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -30346,21 +31952,30 @@ } }, "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", - "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", - "tapable": "^2.2.1", - "tsconfig-paths": "^4.1.2" + "tsconfig-paths": "^4.0.0" }, "engines": { "node": ">=10.13.0" } }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -30413,6 +32028,17 @@ "node": ">=4" } }, + "node_modules/tslint/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/tslint/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -30448,6 +32074,17 @@ "license": "MIT", "peer": true }, + "node_modules/tslint/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/tslint/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -30459,6 +32096,21 @@ "node": ">=4" } }, + "node_modules/tslint/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/tslint/node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -30470,6 +32122,14 @@ "semver": "bin/semver" } }, + "node_modules/tslint/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, "node_modules/tslint/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -30492,7 +32152,17 @@ "license": "0BSD", "peer": true }, - "node_modules/tslint/node_modules/tsutils": { + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", @@ -30506,15 +32176,13 @@ "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" } }, - "node_modules/tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.x" - } + "license": "0BSD", + "peer": true }, "node_modules/tuf-js": { "version": "3.0.1", @@ -30545,10 +32213,9 @@ } }, "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", "license": "Unlicense" }, "node_modules/twitter-api-v2": { @@ -30558,12 +32225,13 @@ "license": "Apache-2.0" }, "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" @@ -30580,12 +32248,13 @@ } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -30695,9 +32364,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -30707,6 +32376,13 @@ "node": ">=14.17" } }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "license": "MIT", + "optional": true + }, "node_modules/uid": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", @@ -30751,9 +32427,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "license": "MIT", "engines": { "node": ">=18.17" @@ -30806,9 +32482,9 @@ } }, "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "license": "MIT", "engines": { "node": ">=18" @@ -30855,20 +32531,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -30889,9 +32551,9 @@ } }, "node_modules/unplugin": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.0.tgz", - "integrity": "sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", "dev": true, "license": "MIT", "dependencies": { @@ -30924,9 +32586,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -30944,7 +32606,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -31000,22 +32662,6 @@ "dev": true, "license": "MIT" }, - "node_modules/url/node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -31065,45 +32711,6 @@ "uuid": "dist/esm/bin/uuid" } }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "license": "MIT", - "optional": true, - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/uvu/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/uvu/node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -31125,6 +32732,13 @@ "node": ">=10.12.0" } }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -31155,6 +32769,13 @@ "node": ">= 0.10" } }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "devOptional": true, + "license": "MIT" + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -31186,31 +32807,22 @@ "dev": true, "license": "MIT" }, - "node_modules/verror/node_modules/extsprintf": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", - "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, "node_modules/vite": { - "version": "5.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", - "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz", + "integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==", "license": "MIT", + "peer": true, "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -31219,498 +32831,137 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" + "node_modules/vite/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, "engines": { - "node": ">=12" + "node": "^10 || ^12 || >=14" } }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", "license": "MIT", "optional": true, - "os": [ - "sunos" - ], "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" } }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" } }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } + "optional": true }, - "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", - "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", - "cpu": [ - "arm64" - ], + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "optional": true }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/vite/node_modules/rollup": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", - "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", "license": "MIT", - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.29.1", - "@rollup/rollup-android-arm64": "4.29.1", - "@rollup/rollup-darwin-arm64": "4.29.1", - "@rollup/rollup-darwin-x64": "4.29.1", - "@rollup/rollup-freebsd-arm64": "4.29.1", - "@rollup/rollup-freebsd-x64": "4.29.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", - "@rollup/rollup-linux-arm-musleabihf": "4.29.1", - "@rollup/rollup-linux-arm64-gnu": "4.29.1", - "@rollup/rollup-linux-arm64-musl": "4.29.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", - "@rollup/rollup-linux-riscv64-gnu": "4.29.1", - "@rollup/rollup-linux-s390x-gnu": "4.29.1", - "@rollup/rollup-linux-x64-gnu": "4.29.1", - "@rollup/rollup-linux-x64-musl": "4.29.1", - "@rollup/rollup-win32-arm64-msvc": "4.29.1", - "@rollup/rollup-win32-ia32-msvc": "4.29.1", - "@rollup/rollup-win32-x64-msvc": "4.29.1", - "fsevents": "~2.3.2" - } + "optional": true }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", @@ -31780,13 +33031,6 @@ "license": "MIT", "optional": true }, - "node_modules/web-worker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", - "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", - "license": "Apache-2.0", - "optional": true - }, "node_modules/webcrypto-core": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.1.tgz", @@ -31812,9 +33056,9 @@ } }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -31835,9 +33079,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -31884,27 +33128,24 @@ "node": ">= 10.13.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/webpack-bundle-analyzer/node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=10.0.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { @@ -31958,64 +33199,10 @@ } } }, - "node_modules/webpack-dev-middleware/node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/@jsonjoy.com/json-pack": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.1.tgz", - "integrity": "sha512-osjeBqMJ2lb/j/M8NCPjs1ylqWIcTRTycIhVB5pt6LgzgeRSb0YRZ7j9RfA8wIUrsr/medIuhVyonXRZWLyfdw==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.1.2", - "hyperdyperid": "^1.2.0", - "thingies": "^1.20.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/@jsonjoy.com/util": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", - "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, "node_modules/webpack-dev-middleware/node_modules/memfs": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.15.1.tgz", - "integrity": "sha512-ufCzgFwiVnR6R9cCYuvwznJdhdYXEvFl0hpnM4cCtVaVkHuqBR+6fo2sqt1SSMdp+uiHw9GyPZr3OMM5tqjSmQ==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.0.tgz", + "integrity": "sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==", "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", @@ -32031,38 +33218,10 @@ "url": "https://github.com/sponsors/streamich" } }, - "node_modules/webpack-dev-middleware/node_modules/thingies": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", - "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", - "license": "Unlicense", - "engines": { - "node": ">=10.18" - }, - "peerDependencies": { - "tslib": "^2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/tree-dump": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", - "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, "node_modules/webpack-dev-server": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.1.0.tgz", - "integrity": "sha512-aQpaN81X6tXie1FoOB7xlMfCsN19pSvRAeYUHOdFWOlhpQ/LlbfTqYwwmEDFV0h8GGuqmCmKmT+pxcUV/Nt2gQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.0.tgz", + "integrity": "sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==", "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", @@ -32078,10 +33237,9 @@ "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", - "express": "^4.19.2", + "express": "^4.21.2", "graceful-fs": "^4.2.6", - "html-entities": "^2.4.0", - "http-proxy-middleware": "^2.0.3", + "http-proxy-middleware": "^2.0.7", "ipaddr.js": "^2.1.0", "launch-editor": "^2.6.1", "open": "^10.0.3", @@ -32116,6 +33274,30 @@ } } }, + "node_modules/webpack-dev-server/node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/webpack-dev-server/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, "node_modules/webpack-dev-server/node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -32152,6 +33334,39 @@ "node": ">= 6" } }, + "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/webpack-dev-server/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -32249,55 +33464,34 @@ "dev": true, "license": "MIT" }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/webpack/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "license": "MIT" }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -32322,26 +33516,36 @@ } }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "devOptional": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "devOptional": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-url": { @@ -32359,19 +33563,19 @@ } }, "node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "dev": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^2.0.0" }, "bin": { - "node-which": "bin/which.js" + "node-which": "bin/node-which" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { @@ -32442,16 +33646,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -32462,16 +33667,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -32488,20 +33683,17 @@ } }, "node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/wrap-ansi-cjs": { @@ -32523,68 +33715,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -32606,6 +33736,13 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true, + "license": "ISC" + }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -32707,6 +33844,23 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/yahoo-finance2/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -32714,13 +33868,16 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "devOptional": true, "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { diff --git a/package.json b/package.json index 56d6d6d2f..77a336be8 100644 --- a/package.json +++ b/package.json @@ -56,17 +56,17 @@ "workspace-generator": "nx workspace-generator" }, "dependencies": { - "@angular/animations": "19.0.5", - "@angular/cdk": "19.0.4", - "@angular/common": "19.0.5", - "@angular/compiler": "19.0.5", - "@angular/core": "19.0.5", - "@angular/forms": "19.0.5", - "@angular/material": "19.0.4", - "@angular/platform-browser": "19.0.5", - "@angular/platform-browser-dynamic": "19.0.5", - "@angular/router": "19.0.5", - "@angular/service-worker": "19.0.5", + "@angular/animations": "19.2.1", + "@angular/cdk": "19.2.2", + "@angular/common": "19.2.1", + "@angular/compiler": "19.2.1", + "@angular/core": "19.2.1", + "@angular/forms": "19.2.1", + "@angular/material": "19.2.2", + "@angular/platform-browser": "19.2.1", + "@angular/platform-browser-dynamic": "19.2.1", + "@angular/router": "19.2.1", + "@angular/service-worker": "19.2.1", "@codewithdan/observable-store": "2.2.15", "@dfinity/agent": "0.15.7", "@dfinity/auth-client": "0.15.7", @@ -139,33 +139,33 @@ "zone.js": "0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "19.0.6", - "@angular-devkit/core": "19.0.6", - "@angular-devkit/schematics": "19.0.6", - "@angular-eslint/eslint-plugin": "19.0.2", - "@angular-eslint/eslint-plugin-template": "19.0.2", - "@angular-eslint/template-parser": "19.0.2", - "@angular/cli": "19.0.6", - "@angular/compiler-cli": "19.0.5", - "@angular/language-service": "19.0.5", - "@angular/localize": "19.0.5", - "@angular/pwa": "19.0.6", + "@angular-devkit/build-angular": "19.2.1", + "@angular-devkit/core": "19.2.1", + "@angular-devkit/schematics": "19.2.1", + "@angular-eslint/eslint-plugin": "19.2.1", + "@angular-eslint/eslint-plugin-template": "19.2.1", + "@angular-eslint/template-parser": "19.2.1", + "@angular/cli": "19.2.1", + "@angular/compiler-cli": "19.2.1", + "@angular/language-service": "19.2.1", + "@angular/localize": "19.2.1", + "@angular/pwa": "19.2.1", "@eslint/eslintrc": "3.2.0", "@eslint/js": "9.18.0", "@nestjs/schematics": "10.2.3", "@nestjs/testing": "10.4.15", - "@nx/angular": "20.3.2", - "@nx/cypress": "20.3.2", - "@nx/eslint-plugin": "20.3.2", - "@nx/jest": "20.3.2", - "@nx/js": "20.3.2", - "@nx/module-federation": "20.3.2", - "@nx/nest": "20.3.2", - "@nx/node": "20.3.2", - "@nx/storybook": "20.3.2", - "@nx/web": "20.3.2", - "@nx/workspace": "20.3.2", - "@schematics/angular": "19.0.6", + "@nx/angular": "20.5.0", + "@nx/cypress": "20.5.0", + "@nx/eslint-plugin": "20.5.0", + "@nx/jest": "20.5.0", + "@nx/js": "20.5.0", + "@nx/module-federation": "20.5.0", + "@nx/nest": "20.5.0", + "@nx/node": "20.5.0", + "@nx/storybook": "20.5.0", + "@nx/web": "20.5.0", + "@nx/workspace": "20.5.0", + "@schematics/angular": "19.2.1", "@storybook/addon-essentials": "8.4.7", "@storybook/addon-interactions": "8.4.7", "@storybook/angular": "8.4.7", @@ -192,7 +192,7 @@ "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", - "nx": "20.3.2", + "nx": "20.5.0", "prettier": "3.5.1", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "6.4.1", @@ -204,7 +204,7 @@ "ts-jest": "29.1.0", "ts-node": "10.9.2", "tslib": "2.8.1", - "typescript": "5.6.3", + "typescript": "5.7.3", "webpack-bundle-analyzer": "4.10.2" }, "engines": { From f528c45c6808df32eea875940685423ac308b638 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Mar 2025 20:42:29 +0100 Subject: [PATCH 138/164] Feature/update locales 20250313 (#4433) * Update translations * Update changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.de.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.es.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.fr.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.it.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.nl.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.pl.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.pt.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.tr.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.uk.xlf | 70 ++++++++++++++++++------- apps/client/src/locales/messages.xlf | 63 ++++++++++++++++------ apps/client/src/locales/messages.zh.xlf | 70 ++++++++++++++++++------- 13 files changed, 608 insertions(+), 226 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72f1f319a..2bfcf526a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the language localization for German (`de`) - Upgraded `angular` from version `19.0.5` to `19.2.1` - Upgraded `Nx` from version `20.3.2` to `20.5.0` diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 24df1cef4..8be91baf3 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -52,6 +52,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + Personal Finance @@ -1487,7 +1491,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -2815,7 +2819,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -5507,23 +5515,7 @@ Copy to clipboard apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Agree and continue - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7796,6 +7788,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 5f3f0b8e5..882a7d251 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -16,6 +16,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. @@ -530,7 +534,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1082,7 +1086,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -2454,23 +2462,7 @@ In die Zwischenablage kopieren apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - Ich stimme zu, meinen Security Token an einem sicheren Ort hinterlegt zu haben. Sollte ich diesen verlieren, kann ich mein Konto nicht wiederherstellen. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Zustimmen und fortfahren - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7796,6 +7788,46 @@ 91 + + Terms and Conditions + Nutzungsbedingungen + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Bitte bewahre dein Sicherheits-Token sicher auf. Wenn du es verlierst, kannst du dein Benutzerkonto nicht wiederherstellen. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + Ich nehme zur Kenntnis, dass ich mein Benutzerkonto nicht wiederherstellen kann, wenn ich mein Sicherheits-Token verliere. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Weiter + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Hier ist dein Sicherheits-Token. Es ist nur ein einziges Mal sichtbar. Bitte bewahre es sicher auf. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 15254d8f2..60ba7f15b 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -17,6 +17,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. @@ -531,7 +535,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1083,7 +1087,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -2455,23 +2463,7 @@ Copiar al portapapeles apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - Confirmo haber guardado mi Token de seguridad mostrado arriba en un lugar seguro. Si lo pierdo, no podré recuperar mi cuenta. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Aceptar y continuar - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7797,6 +7789,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index e249579de..da1592a72 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -590,7 +590,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1438,7 +1438,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -2928,6 +2932,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + Continue with Internet Identity @@ -2950,23 +2958,7 @@ Copier vers le presse-papier apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - Je certifie avoir sauvé mon Jeton de Sécurité ci-dessus dans un endroit sûr. Si je le perds, je ne pourrai pas récupérer mon compte. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Accepter et continuer - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7796,6 +7788,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index bf05d1e07..0620c018c 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -17,6 +17,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. @@ -531,7 +535,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1083,7 +1087,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -2455,23 +2463,7 @@ Copia negli appunti apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - Accetto di aver memorizzato il mio Token di sicurezza sopra citato in un luogo sicuro. Se lo perdo, non posso recuperare il mio account. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Accetta e continua - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7797,6 +7789,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index d6678c99a..61832f7fa 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -16,6 +16,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. @@ -530,7 +534,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1082,7 +1086,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -2454,23 +2462,7 @@ Kopieer naar klembord apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - Ik ga ermee akkoord dat ik mijn Security Token van hierboven op een veilige plaats heb opgeslagen. Als ik het verlies, kan ik mijn account niet terug krijgen. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Akkoord en doorgaan - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7796,6 +7788,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 485c86d7c..c071300bd 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -469,6 +469,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + Personal Finance @@ -1379,7 +1383,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -2471,7 +2475,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -5079,23 +5087,7 @@ Kopiuj do schowka apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - Wyrażam zgodę na przechowywanie mojego Tokenu zabezpieczającego w bezpiecznym miejscu. Jego utrata nie pozwoli odzyskać konta! - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Zgadzam się i kontynuuję - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7796,6 +7788,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 4c4a763fb..7ce4f9062 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -590,7 +590,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1318,7 +1318,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -2824,6 +2828,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + Continue with Internet Identity @@ -2846,23 +2854,7 @@ Copiar para a área de transferência apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - Concordo em como guardei o meu Token de Segurança acima num local seguro. Se o perder, não conseguirei recuperar a minha conta. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Aceitar e continuar - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7796,6 +7788,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index c84ddb5f1..8c646d8b9 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1343,7 +1343,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -2323,7 +2323,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -4541,6 +4545,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + Continue with Internet Identity @@ -4563,23 +4571,7 @@ Panoya Kopyala apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Kabul et ve devam et - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7796,6 +7788,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 0ac3b347b..dba73fe29 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -52,6 +52,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + Personal Finance @@ -1855,7 +1859,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -2943,7 +2947,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -5855,23 +5863,7 @@ Копіювати в буфер обміну apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - Я погоджуюся зберігати свій Секретний Токен у безпечному місці. Якщо я його втрачу, я не зможу відновити свій акаунт. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Погоджуюся і продовжую - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7796,6 +7788,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 4241f4601..e767e2266 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -459,6 +459,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + Personal Finance @@ -1329,7 +1333,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -2316,7 +2320,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -4655,21 +4663,7 @@ Copy to clipboard apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7049,6 +7043,41 @@ 28 + + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + + + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 3d07023d9..cb1c62a50 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -470,6 +470,10 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 81 + Personal Finance @@ -1388,7 +1392,7 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + 29 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -2480,7 +2484,11 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + 44 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 52 @@ -5088,23 +5096,7 @@ 复制到剪贴板 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - 我同意存储我的保安编码器从上面看,在一个安全的地方。如果我丢失了它,我将无法找回我的帐户。 - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - 同意并继续 - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 + 68 @@ -7797,6 +7789,46 @@ 91 + + Terms and Conditions + Terms and Conditions + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 13 + + + + I understand that if I lose my security token, I cannot recover my account. + I understand that if I lose my security token, I cannot recover my account. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 23 + + + + Continue + Continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 47 + + From a4c78739bbe0e4584402e541947b6fc36af90591 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 14 Mar 2025 08:00:07 +0100 Subject: [PATCH 139/164] Feature/improve width of user account registration dialog on mobile (#4434) * Improve width on mobile --- .../src/app/pages/register/register-page.component.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/client/src/app/pages/register/register-page.component.ts b/apps/client/src/app/pages/register/register-page.component.ts index 45fd53fcc..66a5f4beb 100644 --- a/apps/client/src/app/pages/register/register-page.component.ts +++ b/apps/client/src/app/pages/register/register-page.component.ts @@ -61,15 +61,18 @@ export class RegisterPageComponent implements OnDestroy, OnInit { public async onLoginWithInternetIdentity() { try { const { authToken } = await this.internetIdentityService.login(); + this.tokenStorageService.saveToken(authToken); - this.router.navigate(['/']); + + await this.router.navigate(['/']); } catch {} } public openShowAccessTokenDialog() { const dialogRef = this.dialog.open(ShowAccessTokenDialog, { disableClose: true, - width: '30rem' + height: this.deviceType === 'mobile' ? '98vh' : undefined, + width: this.deviceType === 'mobile' ? '100vw' : '30rem' }); dialogRef From 9e44023f86e49e80b7f95489d98e2f097726cf6c Mon Sep 17 00:00:00 2001 From: Tobias Kugel <78074722+tobikugel@users.noreply.github.com> Date: Sat, 15 Mar 2025 07:55:48 -0300 Subject: [PATCH 140/164] Feature/improve usability of AI prompt actions (#4426) * Improve usability of AI prompt actions * Update changelog --- CHANGELOG.md | 6 +- .../components/header/header.component.html | 2 +- .../analysis/analysis-page.component.ts | 27 +++++- .../portfolio/analysis/analysis-page.html | 90 ++++++++++++------- .../analysis/analysis-page.module.ts | 2 + apps/client/src/styles.scss | 2 +- 6 files changed, 89 insertions(+), 40 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bfcf526a..a71397b2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,12 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased -### Added - -- Improved the usability of the user account registration - ### Changed +- Improved the usability of the user account registration +- Improved the usability of the _Copy AI prompt to clipboard_ actions on the analysis page (experimental) - Improved the language localization for German (`de`) - Upgraded `angular` from version `19.0.5` to `19.2.1` - Upgraded `Nx` from version `20.3.2` to `20.5.0` diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index 8a611d935..680cc98f0 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -134,7 +134,7 @@ ; public benchmarkDataItems: HistoricalDataItem[] = []; public benchmarks: Partial[]; @@ -46,10 +55,12 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { public investments: InvestmentItem[]; public investmentTimelineDataLabel = $localize`Investment`; public investmentsByGroup: InvestmentItem[]; + public isLoadingAnalysisPrompt: boolean; public isLoadingBenchmarkComparator: boolean; public isLoadingDividendTimelineChart: boolean; public isLoadingInvestmentChart: boolean; public isLoadingInvestmentTimelineChart: boolean; + public isLoadingPortfolioPrompt: boolean; public mode: GroupBy = 'month'; public modeOptions: ToggleOption[] = [ { label: $localize`Monthly`, value: 'month' }, @@ -143,6 +154,12 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { } public onCopyPromptToClipboard(mode: AiPromptMode) { + if (mode === 'analysis') { + this.isLoadingAnalysisPrompt = true; + } else if (mode === 'portfolio') { + this.isLoadingPortfolioPrompt = true; + } + this.dataService .fetchPrompt(mode) .pipe(takeUntil(this.unsubscribeSubject)) @@ -163,6 +180,14 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { .subscribe(() => { window.open('https://duck.ai', '_blank'); }); + + this.actionsMenuButton.closeMenu(); + + if (mode === 'analysis') { + this.isLoadingAnalysisPrompt = false; + } else if (mode === 'portfolio') { + this.isLoadingPortfolioPrompt = false; + } }); } diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html index 84ca54e06..56c95e40f 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -5,6 +5,7 @@
    - - - + +
    + + +
    diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts index fb39b2ab9..e02e15ec8 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts @@ -10,6 +10,7 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatMenuModule } from '@angular/material/menu'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { AnalysisPageRoutingModule } from './analysis-page-routing.module'; @@ -29,6 +30,7 @@ import { AnalysisPageComponent } from './analysis-page.component'; MatButtonModule, MatCardModule, MatMenuModule, + MatProgressSpinnerModule, NgxSkeletonLoaderModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index b13b088b7..b4723d377 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -451,7 +451,7 @@ ngx-skeleton-loader { } .mat-mdc-menu-panel { - &.assistant { + &.no-max-width { max-width: unset !important; .mat-mdc-menu-content { From 1917c17cf9efcf17c806a28986bc66346c9471c8 Mon Sep 17 00:00:00 2001 From: Ken Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sat, 15 Mar 2025 17:57:01 +0700 Subject: [PATCH 141/164] Bugfix/fix issue with serving Storybook related to contentSecurityPolicy (#4437) * Fix issue with serving Storybook related to contentSecurityPolicy * Update changelog --- CHANGELOG.md | 4 +++ apps/api/src/main.ts | 35 +++++++++++-------- .../middlewares/html-template.middleware.ts | 3 +- libs/common/src/lib/config.ts | 2 ++ 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a71397b2c..70fb91984 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `angular` from version `19.0.5` to `19.2.1` - Upgraded `Nx` from version `20.3.2` to `20.5.0` +### Fixed + +- Fixed an issue with serving _Storybook_ related to the `contentSecurityPolicy` + ## 2.145.1 - 2025-03-10 ### Added diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index fdd6c1d99..7cd5953b0 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -1,3 +1,5 @@ +import { STORYBOOK_PATH } from '@ghostfolio/common/config'; + import { Logger, LogLevel, @@ -7,6 +9,7 @@ import { import { ConfigService } from '@nestjs/config'; import { NestFactory } from '@nestjs/core'; import type { NestExpressApplication } from '@nestjs/platform-express'; +import { NextFunction, Request, Response } from 'express'; import helmet from 'helmet'; import { AppModule } from './app/app.module'; @@ -50,20 +53,24 @@ async function bootstrap() { app.useBodyParser('json', { limit: '10mb' }); if (configService.get('ENABLE_FEATURE_SUBSCRIPTION') === 'true') { - app.use( - helmet({ - contentSecurityPolicy: { - directives: { - connectSrc: ["'self'", 'https://js.stripe.com'], // Allow connections to Stripe - frameSrc: ["'self'", 'https://js.stripe.com'], // Allow loading frames from Stripe - scriptSrc: ["'self'", "'unsafe-inline'", 'https://js.stripe.com'], // Allow inline scripts and scripts from Stripe - scriptSrcAttr: ["'self'", "'unsafe-inline'"], // Allow inline event handlers - styleSrc: ["'self'", "'unsafe-inline'"] // Allow inline styles - } - }, - crossOriginOpenerPolicy: false // Disable Cross-Origin-Opener-Policy header (for Internet Identity) - }) - ); + app.use((req: Request, res: Response, next: NextFunction) => { + if (req.path.startsWith(STORYBOOK_PATH)) { + next(); + } else { + helmet({ + contentSecurityPolicy: { + directives: { + connectSrc: ["'self'", 'https://js.stripe.com'], // Allow connections to Stripe + frameSrc: ["'self'", 'https://js.stripe.com'], // Allow loading frames from Stripe + scriptSrc: ["'self'", "'unsafe-inline'", 'https://js.stripe.com'], // Allow inline scripts and scripts from Stripe + scriptSrcAttr: ["'self'", "'unsafe-inline'"], // Allow inline event handlers + styleSrc: ["'self'", "'unsafe-inline'"] // Allow inline styles + } + }, + crossOriginOpenerPolicy: false // Disable Cross-Origin-Opener-Policy header (for Internet Identity) + })(req, res, next); + } + }); } app.use(HtmlTemplateMiddleware); diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index b6c8f2e54..256876952 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -3,6 +3,7 @@ import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { DEFAULT_LANGUAGE_CODE, DEFAULT_ROOT_URL, + STORYBOOK_PATH, SUPPORTED_LANGUAGE_CODES } from '@ghostfolio/common/config'; import { DATE_FORMAT, interpolate } from '@ghostfolio/common/helper'; @@ -129,7 +130,7 @@ export const HtmlTemplateMiddleware = async ( if ( path.startsWith('/api/') || - path.startsWith('/development/storybook') || + path.startsWith(STORYBOOK_PATH) || isFileRequest(path) || !environment.production ) { diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index edfe7fa69..696ca86d2 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -153,6 +153,8 @@ export const REPLACE_NAME_PARTS = [ 'Xtrackers (IE) Plc -' ]; +export const STORYBOOK_PATH = '/development/storybook'; + export const SUPPORTED_LANGUAGE_CODES = [ 'ca', 'de', From 2f868b8902e1243913053eea2c73c13b95c7df5d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Mar 2025 12:22:24 +0100 Subject: [PATCH 142/164] Feature/add guard to TransformDataSourceInRequestInterceptor (#4438) * Add guard --- .../transform-data-source-in-request.interceptor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts b/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts index 227d06d7b..b24fb8404 100644 --- a/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts +++ b/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts @@ -26,7 +26,7 @@ export class TransformDataSourceInRequestInterceptor const request = http.getRequest(); if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { - if (request.body.activities) { + if (request.body?.activities) { request.body.activities = request.body.activities.map((activity) => { if (DataSource[activity.dataSource]) { return activity; From 6319661b0c3aed5127b25d4419e199e70f48e366 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Mar 2025 18:24:05 +0100 Subject: [PATCH 143/164] Feature/upgrade prettier to version 3.5.3 (#4435) * Upgrade prettier to version 3.5.3 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70fb91984..cb597c155 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for German (`de`) - Upgraded `angular` from version `19.0.5` to `19.2.1` - Upgraded `Nx` from version `20.3.2` to `20.5.0` +- Upgraded `prettier` from version `3.5.1` to `3.5.3` ### Fixed diff --git a/package-lock.json b/package-lock.json index a0447ccba..59f7d2dde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -147,7 +147,7 @@ "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", "nx": "20.5.0", - "prettier": "3.5.1", + "prettier": "3.5.3", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "6.4.1", "react": "18.2.0", @@ -28052,9 +28052,9 @@ } }, "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 77a336be8..6a96bed12 100644 --- a/package.json +++ b/package.json @@ -193,7 +193,7 @@ "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", "nx": "20.5.0", - "prettier": "3.5.1", + "prettier": "3.5.3", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "6.4.1", "react": "18.2.0", From b90e3076d033731d439b2280d623e1230655e30b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Mar 2025 18:25:15 +0100 Subject: [PATCH 144/164] Feature/remove exchange rates from admin control overview (#4439) * Remove exchange rates * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.service.ts | 28 -------- .../admin-overview.component.ts | 44 +++--------- .../admin-overview/admin-overview.html | 67 ------------------- .../lib/interfaces/admin-data.interface.ts | 7 -- 5 files changed, 11 insertions(+), 136 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb597c155..1ac273b7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the usability of the user account registration - Improved the usability of the _Copy AI prompt to clipboard_ actions on the analysis page (experimental) +- Removed the exchange rates from the overview of the admin control panel - Improved the language localization for German (`de`) - Upgraded `angular` from version `19.0.5` to `19.2.1` - Upgraded `Nx` from version `20.3.2` to `20.5.0` diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 7f2b0da5a..edb96a28e 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -10,7 +10,6 @@ import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { - DEFAULT_CURRENCY, PROPERTY_CURRENCIES, PROPERTY_IS_READ_ONLY_MODE, PROPERTY_IS_USER_SIGNUP_ENABLED @@ -37,7 +36,6 @@ import { BadRequestException, Injectable, Logger } from '@nestjs/common'; import { AssetClass, AssetSubClass, - DataSource, Prisma, PrismaClient, Property, @@ -132,31 +130,6 @@ export class AdminService { } public async get(): Promise { - const exchangeRates = this.exchangeRateDataService - .getCurrencies() - .filter((currency) => { - return currency !== DEFAULT_CURRENCY; - }) - .map((currency) => { - const label1 = DEFAULT_CURRENCY; - const label2 = currency; - - return { - label1, - label2, - dataSource: - DataSource[ - this.configurationService.get('DATA_SOURCE_EXCHANGE_RATES') - ], - symbol: `${label1}${label2}`, - value: this.exchangeRateDataService.toCurrency( - 1, - DEFAULT_CURRENCY, - currency - ) - }; - }); - const [settings, transactionCount, userCount] = await Promise.all([ this.propertyService.get(), this.prismaService.order.count(), @@ -164,7 +137,6 @@ export class AdminService { ]); return { - exchangeRates, settings, transactionCount, userCount, diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index f54af4174..2f814668a 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -6,7 +6,6 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { PROPERTY_COUPONS, - PROPERTY_CURRENCIES, PROPERTY_IS_DATA_GATHERING_ENABLED, PROPERTY_IS_READ_ONLY_MODE, PROPERTY_IS_USER_SIGNUP_ENABLED, @@ -41,8 +40,6 @@ import { takeUntil } from 'rxjs/operators'; export class AdminOverviewComponent implements OnDestroy, OnInit { public couponDuration: StringValue = '14 days'; public coupons: Coupon[]; - public customCurrencies: string[]; - public exchangeRates: { label1: string; label2: string; value: number }[]; public hasPermissionForSubscription: boolean; public hasPermissionForSystemMessage: boolean; public hasPermissionToToggleReadOnlyMode: boolean; @@ -138,19 +135,6 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { }); } - public onDeleteCurrency(aCurrency: string) { - this.notificationService.confirm({ - confirmFn: () => { - const currencies = this.customCurrencies.filter((currency) => { - return currency !== aCurrency; - }); - this.putAdminSetting({ key: PROPERTY_CURRENCIES, value: currencies }); - }, - confirmType: ConfirmationDialogType.Warn, - title: $localize`Do you really want to delete this currency?` - }); - } - public onDeleteSystemMessage() { this.notificationService.confirm({ confirmFn: () => { @@ -231,25 +215,17 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { this.adminService .fetchAdminData() .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe( - ({ exchangeRates, settings, transactionCount, userCount, version }) => { - this.coupons = (settings[PROPERTY_COUPONS] as Coupon[]) ?? []; - this.customCurrencies = settings[PROPERTY_CURRENCIES] as string[]; - this.exchangeRates = exchangeRates; - this.isDataGatheringEnabled = - settings[PROPERTY_IS_DATA_GATHERING_ENABLED] === false - ? false - : true; - this.systemMessage = settings[ - PROPERTY_SYSTEM_MESSAGE - ] as SystemMessage; - this.transactionCount = transactionCount; - this.userCount = userCount; - this.version = version; + .subscribe(({ settings, transactionCount, userCount, version }) => { + this.coupons = (settings[PROPERTY_COUPONS] as Coupon[]) ?? []; + this.isDataGatheringEnabled = + settings[PROPERTY_IS_DATA_GATHERING_ENABLED] === false ? false : true; + this.systemMessage = settings[PROPERTY_SYSTEM_MESSAGE] as SystemMessage; + this.transactionCount = transactionCount; + this.userCount = userCount; + this.version = version; - this.changeDetectorRef.markForCheck(); - } - ); + this.changeDetectorRef.markForCheck(); + }); } private generateCouponCode(aLength: number) { diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index a85c32d43..bcbf666ef 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -30,73 +30,6 @@ }
    -
    -
    Exchange Rates
    -
    - - @for (exchangeRate of exchangeRates; track exchangeRate) { - - - - - - - - - } -
    - - {{ exchangeRate.label1 }}= - - {{ exchangeRate.label2 }} - - - - - - Edit - - - @if (customCurrencies.includes(exchangeRate.label2)) { -
    - - } -
    -
    -
    -
    User Signup
    diff --git a/libs/common/src/lib/interfaces/admin-data.interface.ts b/libs/common/src/lib/interfaces/admin-data.interface.ts index 3dc476df8..e14429493 100644 --- a/libs/common/src/lib/interfaces/admin-data.interface.ts +++ b/libs/common/src/lib/interfaces/admin-data.interface.ts @@ -1,11 +1,4 @@ -import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; - export interface AdminData { - exchangeRates: ({ - label1: string; - label2: string; - value: number; - } & AssetProfileIdentifier)[]; settings: { [key: string]: boolean | object | string | string[] }; transactionCount: number; userCount: number; From 755ab15755e8c0d4363d3f170080fef6d82e2798 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Mar 2025 18:47:07 +0100 Subject: [PATCH 145/164] Feature/format name in financial modeling prep service (#4441) * Format name * Update changelog --- CHANGELOG.md | 1 + .../financial-modeling-prep.service.ts | 21 +++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ac273b7a..9def6ab50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the usability of the user account registration - Improved the usability of the _Copy AI prompt to clipboard_ actions on the analysis page (experimental) +- Formatted the name in the _Financial Modeling Prep_ service - Removed the exchange rates from the overview of the admin control panel - Improved the language localization for German (`de`) - Upgraded `angular` from version `19.0.5` to `19.2.1` diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index 5216ed214..119e8ea67 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -12,6 +12,7 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; +import { REPLACE_NAME_PARTS } from '@ghostfolio/common/config'; import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { DataProviderInfo, @@ -186,7 +187,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { response.isin = assetProfile.isin; } - response.name = assetProfile.companyName; + response.name = this.formatName({ name: assetProfile.companyName }); if (assetProfile.website) { response.url = assetProfile.website; @@ -398,7 +399,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { assetSubClass: undefined, // TODO dataProviderInfo: this.getDataProviderInfo(), dataSource: this.getName(), - name: companyName + name: this.formatName({ name: companyName }) }; }); } else { @@ -414,12 +415,12 @@ export class FinancialModelingPrepService implements DataProviderInterface { items = result.map(({ currency, name, symbol }) => { return { currency, - name, symbol, assetClass: undefined, // TODO assetSubClass: undefined, // TODO dataProviderInfo: this.getDataProviderInfo(), - dataSource: this.getName() + dataSource: this.getName(), + name: this.formatName({ name }) }; }); } @@ -438,6 +439,18 @@ export class FinancialModelingPrepService implements DataProviderInterface { return { items }; } + private formatName({ name }: { name: string }) { + if (name) { + for (const part of REPLACE_NAME_PARTS) { + name = name.replace(part, ''); + } + + name = name.trim(); + } + + return name; + } + private getUrl({ version }: { version: number }) { return `https://financialmodelingprep.com/api/v${version}`; } From 0cc367478051f909dbe0365b36da3d7e252dc329 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Mar 2025 18:47:33 +0100 Subject: [PATCH 146/164] Feature/upgrade prisma to version 6.5.0 (#4440) * Upgrade prisma to version 6.5.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 78 ++++++++++++++++++++++++++--------------------- package.json | 4 +-- 3 files changed, 47 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9def6ab50..d08e8b7e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `angular` from version `19.0.5` to `19.2.1` - Upgraded `Nx` from version `20.3.2` to `20.5.0` - Upgraded `prettier` from version `3.5.1` to `3.5.3` +- Upgraded `prisma` from version `6.4.1` to `6.5.0` ### Fixed diff --git a/package-lock.json b/package-lock.json index 59f7d2dde..305eb185d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "@nestjs/platform-express": "10.4.15", "@nestjs/schedule": "4.1.2", "@nestjs/serve-static": "4.0.2", - "@prisma/client": "6.4.1", + "@prisma/client": "6.5.0", "@simplewebauthn/browser": "13.1.0", "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "5.4.0", @@ -149,7 +149,7 @@ "nx": "20.5.0", "prettier": "3.5.3", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.4.1", + "prisma": "6.5.0", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", @@ -8641,9 +8641,9 @@ "license": "MIT" }, "node_modules/@prisma/client": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.4.1.tgz", - "integrity": "sha512-A7Mwx44+GVZVexT5e2GF/WcKkEkNNKbgr059xpr5mn+oUm2ZW1svhe+0TRNBwCdzhfIZ+q23jEgsNPvKD9u+6g==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.5.0.tgz", + "integrity": "sha512-M6w1Ql/BeiGoZmhMdAZUXHu5sz5HubyVcKukbLs3l0ELcQb8hTUJxtGEChhv4SVJ0QJlwtLnwOLgIRQhpsm9dw==", "hasInstallScript": true, "license": "Apache-2.0", "engines": { @@ -8662,54 +8662,65 @@ } } }, + "node_modules/@prisma/config": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.5.0.tgz", + "integrity": "sha512-sOH/2Go9Zer67DNFLZk6pYOHj+rumSb0VILgltkoxOjYnlLqUpHPAN826vnx8HigqnOCxj9LRhT6U7uLiIIWgw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "esbuild": ">=0.12 <1", + "esbuild-register": "3.6.0" + } + }, "node_modules/@prisma/debug": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.4.1.tgz", - "integrity": "sha512-Q9xk6yjEGIThjSD8zZegxd5tBRNHYd13GOIG0nLsanbTXATiPXCLyvlYEfvbR2ft6dlRsziQXfQGxAgv7zcMUA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.5.0.tgz", + "integrity": "sha512-fc/nusYBlJMzDmDepdUtH9aBsJrda2JNErP9AzuHbgUEQY0/9zQYZdNlXmKoIWENtio+qarPNe/+DQtrX5kMcQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.4.1.tgz", - "integrity": "sha512-KldENzMHtKYwsOSLThghOIdXOBEsfDuGSrxAZjMnimBiDKd3AE4JQ+Kv+gBD/x77WoV9xIPf25GXMWffXZ17BA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.5.0.tgz", + "integrity": "sha512-FVPQYHgOllJklN9DUyujXvh3hFJCY0NX86sDmBErLvoZjy2OXGiZ5FNf3J/C4/RZZmCypZBYpBKEhx7b7rEsdw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.4.1", - "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", - "@prisma/fetch-engine": "6.4.1", - "@prisma/get-platform": "6.4.1" + "@prisma/debug": "6.5.0", + "@prisma/engines-version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "@prisma/fetch-engine": "6.5.0", + "@prisma/get-platform": "6.5.0" } }, "node_modules/@prisma/engines-version": { - "version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d.tgz", - "integrity": "sha512-Xq54qw55vaCGrGgIJqyDwOq0TtjZPJEWsbQAHugk99hpDf2jcEeQhUcF+yzEsSqegBaDNLA4IC8Nn34sXmkiTQ==", + "version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60.tgz", + "integrity": "sha512-iK3EmiVGFDCmXjSpdsKGNqy9hOdLnvYBrJB61far/oP03hlIxrb04OWmDjNTwtmZ3UZdA5MCvI+f+3k2jPTflQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.4.1.tgz", - "integrity": "sha512-uZ5hVeTmDspx7KcaRCNoXmcReOD+84nwlO2oFvQPRQh9xiFYnnUKDz7l9bLxp8t4+25CsaNlgrgilXKSQwrIGQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.5.0.tgz", + "integrity": "sha512-3LhYA+FXP6pqY8FLHCjewyE8pGXXJ7BxZw2rhPq+CZAhvflVzq4K8Qly3OrmOkn6wGlz79nyLQdknyCG2HBTuA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.4.1", - "@prisma/engines-version": "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d", - "@prisma/get-platform": "6.4.1" + "@prisma/debug": "6.5.0", + "@prisma/engines-version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60", + "@prisma/get-platform": "6.5.0" } }, "node_modules/@prisma/get-platform": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.4.1.tgz", - "integrity": "sha512-gXqZaDI5scDkBF8oza7fOD3Q3QMD0e0rBynlzDDZdTWbWmzjuW58PRZtj+jkvKje2+ZigCWkH8SsWZAsH6q1Yw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.5.0.tgz", + "integrity": "sha512-xYcvyJwNMg2eDptBYFqFLUCfgi+wZLcj6HDMsj0Qw0irvauG4IKmkbywnqwok0B+k+W+p+jThM2DKTSmoPCkzw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.4.1" + "@prisma/debug": "6.5.0" } }, "node_modules/@redis/bloom": { @@ -28133,16 +28144,15 @@ } }, "node_modules/prisma": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.4.1.tgz", - "integrity": "sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.5.0.tgz", + "integrity": "sha512-yUGXmWqv5F4PByMSNbYFxke/WbnyTLjnJ5bKr8fLkcnY7U5rU9rUTh/+Fja+gOrRxEgtCbCtca94IeITj4j/pg==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/engines": "6.4.1", - "esbuild": ">=0.12 <1", - "esbuild-register": "3.6.0" + "@prisma/config": "6.5.0", + "@prisma/engines": "6.5.0" }, "bin": { "prisma": "build/index.js" diff --git a/package.json b/package.json index 6a96bed12..d0b3e1644 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@nestjs/platform-express": "10.4.15", "@nestjs/schedule": "4.1.2", "@nestjs/serve-static": "4.0.2", - "@prisma/client": "6.4.1", + "@prisma/client": "6.5.0", "@simplewebauthn/browser": "13.1.0", "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "5.4.0", @@ -195,7 +195,7 @@ "nx": "20.5.0", "prettier": "3.5.3", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.4.1", + "prisma": "6.5.0", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", From 3efe06409e1e859d71d83606e33872d73bdda7ab Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Mar 2025 19:36:10 +0100 Subject: [PATCH 147/164] Feature/improve language localization for de 20250315 (#4442) * Update translations --- apps/client/src/locales/messages.ca.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.de.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.es.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.fr.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.it.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.nl.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.pl.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.pt.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.tr.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.uk.xlf | 98 ++++++++++--------------- apps/client/src/locales/messages.xlf | 96 ++++++++++-------------- apps/client/src/locales/messages.zh.xlf | 98 ++++++++++--------------- 12 files changed, 444 insertions(+), 730 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 8be91baf3..0f9de4906 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1185,10 +1185,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -1219,11 +1215,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1967,15 +1959,7 @@ Està segur qeu vol eliminar aquest cupó? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Està segur que vol eliminar aquesta divisa? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -1983,7 +1967,7 @@ Està segur que vol eliminar aquest missatge del sistema? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -1991,7 +1975,7 @@ Està segur que vol depurar el cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -1999,7 +1983,7 @@ Si us plau, afegeixi el seu missatge del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -2034,14 +2018,6 @@ 28 - - Exchange Rates - Tipus de Canvi - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Afegir Divisa @@ -2055,7 +2031,7 @@ Registrar Usuari apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -2063,7 +2039,7 @@ Mode Només Lecutra apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -2071,7 +2047,7 @@ Recollida de Dades apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -2079,7 +2055,7 @@ Missatge del Sistema apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -2087,7 +2063,7 @@ Estableix el Missatge apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -2095,7 +2071,7 @@ Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -2103,7 +2079,7 @@ Afegir apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -2115,7 +2091,7 @@ Ordre apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -2123,7 +2099,7 @@ Depurar el Cache apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -5063,7 +5039,7 @@ Dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -5075,11 +5051,11 @@ Investment apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5091,7 +5067,7 @@ Monthly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -5099,7 +5075,7 @@ Yearly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -5115,7 +5091,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -5123,7 +5099,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -5131,7 +5107,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -5139,7 +5115,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -5147,7 +5123,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -5155,7 +5131,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -5163,7 +5139,7 @@ Top apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -5171,7 +5147,7 @@ Bottom apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -5179,7 +5155,7 @@ Portfolio Evolution apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -5187,7 +5163,7 @@ Investment Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -5195,7 +5171,7 @@ Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -5203,7 +5179,7 @@ Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -5211,7 +5187,7 @@ Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -7613,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7709,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7748,12 +7724,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7761,7 +7737,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 882a7d251..223253bae 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -264,10 +264,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -298,11 +294,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -626,15 +618,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Möchtest du diese Währung wirklich löschen? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -642,7 +626,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -650,7 +634,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -697,14 +681,6 @@ 45 - - Exchange Rates - Wechselkurse - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Währung hinzufügen @@ -718,7 +694,7 @@ Systemmeldung apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -726,7 +702,7 @@ Systemmeldung setzen apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -734,7 +710,7 @@ Lese-Modus apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -742,7 +718,7 @@ Gutscheincodes apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -750,7 +726,7 @@ Hinzufügen apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -762,7 +738,7 @@ Verwaltung apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -770,7 +746,7 @@ Cache leeren apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -2142,7 +2118,7 @@ Zeitstrahl der Investitionen apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -2150,7 +2126,7 @@ Gewinner apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -2158,7 +2134,7 @@ Verlierer apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -2786,7 +2762,7 @@ Monatlich apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -2978,7 +2954,7 @@ Portfolio Wertentwicklung apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -3298,7 +3274,7 @@ Zeitstrahl der Dividenden apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -3306,7 +3282,7 @@ Dividenden apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -3326,7 +3302,7 @@ Benutzer Registrierung apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -3414,7 +3390,7 @@ Jährlich apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4162,7 +4138,7 @@ Aktueller Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4170,7 +4146,7 @@ Längster Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -6135,7 +6111,7 @@ Möchtest du diese Systemmeldung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -6291,11 +6267,11 @@ Einlage apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6307,7 +6283,7 @@ Absolute Anlage Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6315,7 +6291,7 @@ Anlage Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6323,7 +6299,7 @@ Absolute Währungsperformance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6331,7 +6307,7 @@ Währungsperformance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6339,7 +6315,7 @@ Absolute Netto Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6347,7 +6323,7 @@ Netto Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6455,7 +6431,7 @@ Daten einholen apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7613,7 +7589,7 @@ KI-Anweisung wurde in die Zwischenablage kopiert apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7709,7 +7685,7 @@ Öffne Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7748,12 +7724,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Kopiere Portfolio-Daten in die Zwischenablage für KI-Anweisung apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7761,7 +7737,7 @@ Kopiere KI-Anweisung in die Zwischenablage für Analyse apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 60ba7f15b..a763a3902 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -265,10 +265,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -299,11 +295,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -627,15 +619,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - ¿Estás seguro de eliminar esta divisa? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -643,7 +627,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -651,7 +635,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -698,14 +682,6 @@ 45 - - Exchange Rates - Tipos de cambio - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Añadir divisa @@ -719,7 +695,7 @@ Mensaje del sistema apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -727,7 +703,7 @@ Establecer mensaje apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -735,7 +711,7 @@ Modo de solo lectura apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -743,7 +719,7 @@ Cupones apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -751,7 +727,7 @@ Añadir apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -763,7 +739,7 @@ Tareas domésticas apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -771,7 +747,7 @@ Limpiar caché apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -2143,7 +2119,7 @@ Cronología de la inversión apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -2151,7 +2127,7 @@ Lo mejor apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -2159,7 +2135,7 @@ Lo peor apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -2815,7 +2791,7 @@ Mensual apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -2979,7 +2955,7 @@ Evolución cartera apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -3299,7 +3275,7 @@ Dividendo apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -3311,7 +3287,7 @@ Calendario de dividendos apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -3327,7 +3303,7 @@ Registro de usuario apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -3415,7 +3391,7 @@ Anual apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4163,7 +4139,7 @@ Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4171,7 +4147,7 @@ Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -6136,7 +6112,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -6292,11 +6268,11 @@ Inversión apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6308,7 +6284,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6316,7 +6292,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6324,7 +6300,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6332,7 +6308,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6340,7 +6316,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6348,7 +6324,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6456,7 +6432,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7614,7 +7590,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7710,7 +7686,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7749,12 +7725,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7762,7 +7738,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index da1592a72..0e7b6b9aa 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -320,10 +320,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -354,11 +350,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -882,15 +874,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Voulez-vous vraiment supprimer cette devise ? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -898,7 +882,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -906,7 +890,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -933,14 +917,6 @@ 28 - - Exchange Rates - Taux de Conversion - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Ajouter Devise @@ -970,7 +946,7 @@ Inscription de Nouveaux Utilisateurs apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -978,7 +954,7 @@ Mode Lecture Seule apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -986,7 +962,7 @@ Message Système apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -994,7 +970,7 @@ Définir Message apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -1002,7 +978,7 @@ Codes promotionnels apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -1010,7 +986,7 @@ Ajouter apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1022,7 +998,7 @@ Maintenance apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -1030,7 +1006,7 @@ Vider le Cache apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -2742,7 +2718,7 @@ Dividende apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -2762,7 +2738,7 @@ Mensuel apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -2778,7 +2754,7 @@ Haut apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -2786,7 +2762,7 @@ Bas apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -2794,7 +2770,7 @@ Évolution du Portefeuille apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -2802,7 +2778,7 @@ Historique des Investissements apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -2810,7 +2786,7 @@ Historique des Dividendes apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -3414,7 +3390,7 @@ Annuel apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4162,7 +4138,7 @@ Série en cours apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4170,7 +4146,7 @@ Série la plus longue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -6135,7 +6111,7 @@ Confirmer la suppresion de ce message système? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -6291,11 +6267,11 @@ Investissement apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6307,7 +6283,7 @@ Performance des Actifs en valeur absolue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6315,7 +6291,7 @@ Performance des Actifs apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6323,7 +6299,7 @@ Performance des devises en valeur absolue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6331,7 +6307,7 @@ Performance des devises apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6339,7 +6315,7 @@ Performance nette absolue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6347,7 +6323,7 @@ Performance nette apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6455,7 +6431,7 @@ Collecter les données apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7613,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7709,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7748,12 +7724,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7761,7 +7737,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 0620c018c..4ab6c53a1 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -265,10 +265,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -299,11 +295,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -627,15 +619,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Vuoi davvero eliminare questa valuta? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -643,7 +627,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -651,7 +635,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -698,14 +682,6 @@ 45 - - Exchange Rates - Tassi di cambio - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Aggiungi valuta @@ -719,7 +695,7 @@ Messaggio di sistema apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -727,7 +703,7 @@ Imposta messaggio apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -735,7 +711,7 @@ Modalità di sola lettura apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -743,7 +719,7 @@ Buoni sconto apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -751,7 +727,7 @@ Aggiungi apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -763,7 +739,7 @@ Bilancio domestico apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -771,7 +747,7 @@ Svuota la cache apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -2143,7 +2119,7 @@ Cronologia degli investimenti apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -2151,7 +2127,7 @@ In alto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -2159,7 +2135,7 @@ In basso apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -2815,7 +2791,7 @@ Mensile apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -2979,7 +2955,7 @@ Evoluzione del portafoglio apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -3299,7 +3275,7 @@ Dividendi apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -3311,7 +3287,7 @@ Cronologia dei dividendi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -3327,7 +3303,7 @@ Registrazione utente apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -3415,7 +3391,7 @@ Annuale apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4163,7 +4139,7 @@ Serie attuale apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4171,7 +4147,7 @@ Serie più lunga apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -6136,7 +6112,7 @@ Confermi di voler cancellare questo messaggio di sistema? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -6292,11 +6268,11 @@ Investimento apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6308,7 +6284,7 @@ Rendimento assoluto dell'Asset apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6316,7 +6292,7 @@ Rendimento dell'Asset apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6324,7 +6300,7 @@ Rendimento assoluto della Valuta apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6332,7 +6308,7 @@ Rendimento della Valuta apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6340,7 +6316,7 @@ Rendimento assoluto della Valuta apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6348,7 +6324,7 @@ Rendimento Netto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6456,7 +6432,7 @@ Raccolta Dati apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7614,7 +7590,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7710,7 +7686,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7749,12 +7725,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7762,7 +7738,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 61832f7fa..13671956d 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -264,10 +264,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -298,11 +294,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -626,15 +618,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Wil je deze valuta echt verwijderen? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -642,7 +626,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -650,7 +634,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -697,14 +681,6 @@ 45 - - Exchange Rates - Wisselkoersen - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Valuta toevoegen @@ -718,7 +694,7 @@ Systeembericht apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -726,7 +702,7 @@ Bericht instellen apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -734,7 +710,7 @@ Alleen lezen apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -742,7 +718,7 @@ Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -750,7 +726,7 @@ Toevoegen apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -762,7 +738,7 @@ Huishouding apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -770,7 +746,7 @@ Cache legen apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -2142,7 +2118,7 @@ Tijdlijn investeringen apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -2150,7 +2126,7 @@ Winnaars apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -2158,7 +2134,7 @@ Verliezers apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -2814,7 +2790,7 @@ Maandelijks apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -2978,7 +2954,7 @@ Waardeontwikkeling van portefeuille apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -3298,7 +3274,7 @@ Dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -3310,7 +3286,7 @@ Tijdlijn dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -3326,7 +3302,7 @@ Account aanmaken apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -3414,7 +3390,7 @@ Jaarlijks apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4162,7 +4138,7 @@ Huidige reeks apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4170,7 +4146,7 @@ Langste reeks apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -6135,7 +6111,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -6291,11 +6267,11 @@ Investment apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6307,7 +6283,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6315,7 +6291,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6323,7 +6299,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6331,7 +6307,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6339,7 +6315,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6347,7 +6323,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6455,7 +6431,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7613,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7709,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7748,12 +7724,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7761,7 +7737,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index c071300bd..ac208d13a 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1113,10 +1113,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -1147,11 +1143,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1791,15 +1783,7 @@ Czy naprawdę chcesz usunąć ten kupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Czy naprawdę chcesz usunąć tę walutę? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -1807,7 +1791,7 @@ Czy naprawdę chcesz usunąć tę wiadomość systemową? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -1815,7 +1799,7 @@ Czy naprawdę chcesz wyczyścić pamięć podręczną? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -1823,7 +1807,7 @@ Proszę ustawić swoją wiadomość systemową: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -1858,14 +1842,6 @@ 28 - - Exchange Rates - Kursy Walut - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Dodaj Walutę @@ -1879,7 +1855,7 @@ Rejestracja Użytkownika apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -1887,7 +1863,7 @@ Tryb Tylko do Odczytu apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -1895,7 +1871,7 @@ Wiadomość Systemowa apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -1903,7 +1879,7 @@ Ustaw Wiadomość apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -1911,7 +1887,7 @@ Kupony apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -1919,7 +1895,7 @@ Dodaj apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1931,7 +1907,7 @@ Konserwacja apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -1939,7 +1915,7 @@ Wyczyszczenie pamięci podręcznej apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -4663,7 +4639,7 @@ Dywidenda apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -4683,7 +4659,7 @@ Miesięcznie apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -4691,7 +4667,7 @@ Rocznie apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4707,7 +4683,7 @@ Największe wzrosty apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -4715,7 +4691,7 @@ Największy spadek apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -4723,7 +4699,7 @@ Rozwój portfela apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -4731,7 +4707,7 @@ Oś czasu inwestycji apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -4739,7 +4715,7 @@ Obecna passa apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4747,7 +4723,7 @@ Najdłuższa passa apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -4755,7 +4731,7 @@ Oś czasu dywidend apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -6291,11 +6267,11 @@ Inwestycje apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6307,7 +6283,7 @@ Łączny wynik aktywów apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6315,7 +6291,7 @@ Wyniki aktywów apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6323,7 +6299,7 @@ Łączny wynik walut apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6331,7 +6307,7 @@ Wynik walut apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6339,7 +6315,7 @@ Łączna wartość netto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6347,7 +6323,7 @@ Wynik netto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6455,7 +6431,7 @@ Gromadzenie Danych apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7613,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7709,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7748,12 +7724,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7761,7 +7737,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 7ce4f9062..789ee6360 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -320,10 +320,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -354,11 +350,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -786,15 +778,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Deseja realmente excluir esta moeda? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -802,7 +786,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -810,7 +794,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -829,14 +813,6 @@ 28 - - Exchange Rates - Taxas de Câmbio - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Adicionar Moeda @@ -850,7 +826,7 @@ Mensagem de Sistema apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -858,7 +834,7 @@ Definir Mensagem apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -866,7 +842,7 @@ Modo Somente Leitura apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -874,7 +850,7 @@ Cupões apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -882,7 +858,7 @@ Adicionar apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -894,7 +870,7 @@ Manutenção apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -902,7 +878,7 @@ Limpar Cache apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -2646,7 +2622,7 @@ Mensalmente apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -2662,7 +2638,7 @@ Topo apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -2670,7 +2646,7 @@ Fundo apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -2678,7 +2654,7 @@ Evolução do Portefólio apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -2686,7 +2662,7 @@ Cronograma de Investimento apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -3258,7 +3234,7 @@ Registo do Utilizador apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -3366,7 +3342,7 @@ Dividendos apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -3378,7 +3354,7 @@ Cronograma de Dividendos apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -3414,7 +3390,7 @@ Anualmente apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4162,7 +4138,7 @@ Série Atual apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4170,7 +4146,7 @@ Série mais Longa apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -6135,7 +6111,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -6291,11 +6267,11 @@ Investment apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6307,7 +6283,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6315,7 +6291,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6323,7 +6299,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6331,7 +6307,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6339,7 +6315,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6347,7 +6323,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6455,7 +6431,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7613,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7709,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7748,12 +7724,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7761,7 +7737,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 8c646d8b9..05e2566f8 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1073,10 +1073,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -1107,11 +1103,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1695,15 +1687,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Bu para birimini silmeyi gerçekten istiyor musunuz? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -1711,7 +1695,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -1719,7 +1703,7 @@ Lütfen sistem mesajınızı belirleyin: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -1746,14 +1730,6 @@ 28 - - Exchange Rates - Döviz Kurları - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency Para Birimi Ekle @@ -1783,7 +1759,7 @@ Kullanıcı Kaydı apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -1791,7 +1767,7 @@ Salt okunur mod apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -1799,7 +1775,7 @@ Sistem Mesajı apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -1807,7 +1783,7 @@ Mesaj Belirle apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -1815,7 +1791,7 @@ Kupon apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -1823,7 +1799,7 @@ Ekle apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1835,7 +1811,7 @@ Genel Ayarlar apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -1843,7 +1819,7 @@ Önbelleği temizle apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -4143,7 +4119,7 @@ Temettü apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -4163,7 +4139,7 @@ Aylık apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -4171,7 +4147,7 @@ Yıllık apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4187,7 +4163,7 @@ Üst apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -4195,7 +4171,7 @@ Alt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -4203,7 +4179,7 @@ Portföyün Gelişimi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -4211,7 +4187,7 @@ Yatırım Zaman Çizelgesi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -4219,7 +4195,7 @@ Güncel Seri apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4227,7 +4203,7 @@ En Uzun Seri apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -4235,7 +4211,7 @@ Temettü Zaman Çizelgesi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -6135,7 +6111,7 @@ Bu sistem mesajını silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -6291,11 +6267,11 @@ Investment apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6307,7 +6283,7 @@ Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6315,7 +6291,7 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6323,7 +6299,7 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6331,7 +6307,7 @@ Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6339,7 +6315,7 @@ Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6347,7 +6323,7 @@ Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6455,7 +6431,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7613,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7709,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7748,12 +7724,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7761,7 +7737,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index dba73fe29..94d3893ba 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1201,10 +1201,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -1235,11 +1231,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1963,15 +1955,7 @@ Ви дійсно хочете видалити цей купон? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - Ви дійсно хочете видалити цю валюту? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -1979,7 +1963,7 @@ Ви дійсно хочете видалити це системне повідомлення? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -1987,7 +1971,7 @@ Ви дійсно хочете очистити кеш? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -1995,7 +1979,7 @@ Будь ласка, встановіть ваше системне повідомлення: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -2030,20 +2014,12 @@ 28 - - Exchange Rates - Обмінні курси - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - User Signup Реєстрація користувача apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -2051,7 +2027,7 @@ Режим лише для читання apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -2059,7 +2035,7 @@ Збір даних apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -2067,7 +2043,7 @@ Системне повідомлення apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -2075,7 +2051,7 @@ Встановити повідомлення apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -2083,7 +2059,7 @@ Купони apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -2091,7 +2067,7 @@ Додати apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -2103,7 +2079,7 @@ Прибирання apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -2111,7 +2087,7 @@ Очистити кеш apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -5339,7 +5315,7 @@ Дивіденди apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -5351,11 +5327,11 @@ Інвестиції apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5367,7 +5343,7 @@ Щомісячно apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -5375,7 +5351,7 @@ Щорічно apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -5391,7 +5367,7 @@ Абсолютна прибутковість активів apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -5399,7 +5375,7 @@ Прибутковість активів apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -5407,7 +5383,7 @@ Абсолютна прибутковість валюти apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -5415,7 +5391,7 @@ Прибутковість валюти apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -5423,7 +5399,7 @@ Абсолютна чиста прибутковість apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -5431,7 +5407,7 @@ Чиста прибутковість apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -5439,7 +5415,7 @@ Топ apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -5447,7 +5423,7 @@ Низ apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -5455,7 +5431,7 @@ Еволюція портфеля apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -5463,7 +5439,7 @@ Інвестиційний графік apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -5471,7 +5447,7 @@ Поточна серія apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -5479,7 +5455,7 @@ Найдовша серія apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -5487,7 +5463,7 @@ Графік дивідендів apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -7621,7 +7597,7 @@ Запит AI скопійовано в буфер обміну apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7709,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7748,12 +7724,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7761,7 +7737,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index e767e2266..c1ec934be 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1081,10 +1081,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -1114,11 +1110,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1708,35 +1700,28 @@ Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -1767,13 +1752,6 @@ 28 - - Exchange Rates - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency @@ -1785,42 +1763,42 @@ User Signup apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 Read-only Mode apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 System Message apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 Set Message apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 Add apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1831,14 +1809,14 @@ Housekeeping apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 Flush Cache apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -4284,7 +4262,7 @@ Dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -4302,14 +4280,14 @@ Monthly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 Yearly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4323,49 +4301,49 @@ Top apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 Bottom apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 Portfolio Evolution apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 Investment Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -5727,32 +5705,32 @@ Absolute Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 Absolute Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 Absolute Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 Investment apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -5763,21 +5741,21 @@ Asset Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 Net Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 Currency Performance apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -5901,7 +5879,7 @@ Data Gathering apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -6889,7 +6867,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -6973,7 +6951,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7012,7 +6990,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 @@ -7036,11 +7014,11 @@ 77 - + Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index cb1c62a50..6d6054df6 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -1122,10 +1122,6 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 231 - - apps/client/src/app/components/admin-overview/admin-overview.html - 78 - apps/client/src/app/components/admin-platform/admin-platform.component.html 92 @@ -1156,11 +1152,7 @@ apps/client/src/app/components/admin-overview/admin-overview.html - 89 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 196 + 129 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1800,15 +1792,7 @@ 您确实要删除此优惠券吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 137 - - - - Do you really want to delete this currency? - 您真的要删除该货币吗? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 150 + 134 @@ -1816,7 +1800,7 @@ 您真的要删除这条系统消息吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 163 + 147 @@ -1824,7 +1808,7 @@ 您真的要刷新缓存吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 187 + 171 @@ -1832,7 +1816,7 @@ 请设置您的系统消息: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 207 + 191 @@ -1867,14 +1851,6 @@ 28 - - Exchange Rates - 汇率 - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - Add Currency 添加货币 @@ -1888,7 +1864,7 @@ 用户注册 apps/client/src/app/components/admin-overview/admin-overview.html - 101 + 34 @@ -1896,7 +1872,7 @@ 只读模式 apps/client/src/app/components/admin-overview/admin-overview.html - 115 + 48 @@ -1904,7 +1880,7 @@ 系统信息 apps/client/src/app/components/admin-overview/admin-overview.html - 139 + 72 @@ -1912,7 +1888,7 @@ 设置留言 apps/client/src/app/components/admin-overview/admin-overview.html - 161 + 94 @@ -1920,7 +1896,7 @@ 优惠券 apps/client/src/app/components/admin-overview/admin-overview.html - 169 + 102 @@ -1928,7 +1904,7 @@ 添加 apps/client/src/app/components/admin-overview/admin-overview.html - 229 + 162 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1940,7 +1916,7 @@ 家政 apps/client/src/app/components/admin-overview/admin-overview.html - 237 + 170 @@ -1948,7 +1924,7 @@ 刷新缓存 apps/client/src/app/components/admin-overview/admin-overview.html - 241 + 174 @@ -4672,7 +4648,7 @@ 股息 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + 51 libs/ui/src/lib/i18n.ts @@ -4692,7 +4668,7 @@ 每月 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 66 @@ -4700,7 +4676,7 @@ 每年 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + 67 @@ -4716,7 +4692,7 @@ 顶部 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 215 + 239 @@ -4724,7 +4700,7 @@ 底部 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 288 @@ -4732,7 +4708,7 @@ 投资组合演变 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 317 + 341 @@ -4740,7 +4716,7 @@ 投资时间表 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 344 + 368 @@ -4748,7 +4724,7 @@ 当前连胜 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 365 + 389 @@ -4756,7 +4732,7 @@ 最长连续纪录 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 374 + 398 @@ -4764,7 +4740,7 @@ 股息时间表 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 401 + 425 @@ -6292,7 +6268,7 @@ 绝对货币表现 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + 145 @@ -6300,7 +6276,7 @@ 绝对净性能 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 192 @@ -6308,7 +6284,7 @@ 绝对资产绩效 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 78 + 102 @@ -6316,11 +6292,11 @@ 投资 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 47 + 56 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 61 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -6332,7 +6308,7 @@ 资产绩效 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 99 + 123 @@ -6340,7 +6316,7 @@ 净绩效 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 187 + 211 @@ -6348,7 +6324,7 @@ 货币表现 apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + 169 @@ -6488,7 +6464,7 @@ 数据收集 apps/client/src/app/components/admin-overview/admin-overview.html - 127 + 60 @@ -7614,7 +7590,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 153 + 170 @@ -7710,7 +7686,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 154 + 171 @@ -7749,12 +7725,12 @@ 378 - + Copy portfolio data to clipboard for AI prompt Copy portfolio data to clipboard for AI prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 28 + 42 @@ -7762,7 +7738,7 @@ Copy AI prompt to clipboard for analysis apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 44 + 67 From 29b8d63951e8faaee63ab2faa683a1b8a9667cc1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 15 Mar 2025 19:39:07 +0100 Subject: [PATCH 148/164] Release 2.146.0 (#4444) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d08e8b7e7..b52353a35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.146.0 - 2025-03-15 ### Changed diff --git a/package-lock.json b/package-lock.json index 305eb185d..a6e4d4dd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.145.1", + "version": "2.146.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.145.1", + "version": "2.146.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index d0b3e1644..eb3a7083d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.145.1", + "version": "2.146.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 5783497a66eec1e83d34a69696e27fc889ce6ca3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 16 Mar 2025 10:42:35 +0100 Subject: [PATCH 149/164] Feature/improve symbol validation in Yahoo Finance service (#4445) * Improve symbol validation * Update changelog --- CHANGELOG.md | 6 ++++++ .../data-enhancer/yahoo-finance/yahoo-finance.service.ts | 2 ++ 2 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b52353a35..950a4d65d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Improved the symbol validation in the _Yahoo Finance_ service (get asset profiles) + ## 2.146.0 - 2025-03-15 ### Changed diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts index 18d624098..78644726a 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts @@ -170,6 +170,8 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { symbol = quotes[0].symbol; } } catch {} + } else if (symbol?.includes('-')) { + throw new Error(`${symbol} is not valid`); } else { symbol = this.convertToYahooFinanceSymbol(symbol); } From 6cd79fab310fe348c2faeb8ba8c81793b1d6988d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 16 Mar 2025 20:59:21 +0100 Subject: [PATCH 150/164] Feature/rename TWR to ROAI (#4453) * Rename TWR to ROAI --- .../calculator/portfolio-calculator.factory.ts | 8 ++++---- ...culator-baln-buy-and-sell-in-two-activities.spec.ts | 2 +- .../portfolio-calculator-baln-buy-and-sell.spec.ts | 2 +- .../portfolio-calculator-baln-buy.spec.ts | 2 +- ...io-calculator-btcusd-buy-and-sell-partially.spec.ts | 2 +- .../{twr => roai}/portfolio-calculator-fee.spec.ts | 2 +- .../portfolio-calculator-googl-buy.spec.ts | 2 +- .../{twr => roai}/portfolio-calculator-item.spec.ts | 2 +- .../portfolio-calculator-liability.spec.ts | 2 +- ...portfolio-calculator-msft-buy-with-dividend.spec.ts | 2 +- .../portfolio-calculator-no-orders.spec.ts | 2 +- ...olio-calculator-novn-buy-and-sell-partially.spec.ts | 2 +- .../portfolio-calculator-novn-buy-and-sell.spec.ts | 2 +- .../{twr => roai}/portfolio-calculator.spec.ts | 0 .../calculator/{twr => roai}/portfolio-calculator.ts | 2 +- apps/api/src/app/portfolio/portfolio.service.ts | 10 +++++----- .../portfolio-snapshot/portfolio-snapshot.processor.ts | 2 +- .../portfolio-summary/portfolio-summary.component.html | 4 ++-- 18 files changed, 25 insertions(+), 25 deletions(-) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts (96%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-baln-buy-and-sell.spec.ts (99%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-baln-buy.spec.ts (99%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts (99%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-fee.spec.ts (99%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-googl-buy.spec.ts (99%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-item.spec.ts (99%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-liability.spec.ts (98%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-msft-buy-with-dividend.spec.ts (99%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-no-orders.spec.ts (98%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-novn-buy-and-sell-partially.spec.ts (99%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator-novn-buy-and-sell.spec.ts (96%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator.spec.ts (100%) rename apps/api/src/app/portfolio/calculator/{twr => roai}/portfolio-calculator.ts (99%) diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts index 18738373e..70f27fe7b 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts @@ -10,11 +10,11 @@ import { Injectable } from '@nestjs/common'; import { MWRPortfolioCalculator } from './mwr/portfolio-calculator'; import { PortfolioCalculator } from './portfolio-calculator'; -import { TWRPortfolioCalculator } from './twr/portfolio-calculator'; +import { RoaiPortfolioCalculator } from './roai/portfolio-calculator'; export enum PerformanceCalculationType { MWR = 'MWR', // Money-Weighted Rate of Return - TWR = 'TWR' // Time-Weighted Rate of Return + ROAI = 'ROAI' // Return on Average Investment } @Injectable() @@ -56,8 +56,8 @@ export class PortfolioCalculatorFactory { portfolioSnapshotService: this.portfolioSnapshotService, redisCacheService: this.redisCacheService }); - case PerformanceCalculationType.TWR: - return new TWRPortfolioCalculator({ + case PerformanceCalculationType.ROAI: + return new RoaiPortfolioCalculator({ accountBalanceItems, activities, currency, diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts similarity index 96% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts index deb3cd72f..e157e2d26 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts @@ -137,7 +137,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'CHF', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts index 7b4d53b2f..a1650ea82 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts @@ -122,7 +122,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'CHF', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts index 002cbd5e9..63a4d77b4 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts @@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'CHF', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts index 640de3985..2853e3d87 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts @@ -136,7 +136,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'CHF', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts index 6f030a73d..b96e4f540 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts @@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'USD', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts index 4e25c17f7..b3793a5b4 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts @@ -120,7 +120,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'CHF', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts index 7fc5c526d..d226fe6f8 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts @@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'USD', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts similarity index 98% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts index 5fa90e94c..569212b9a 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-liability.spec.ts @@ -107,7 +107,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'USD', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts index 543985424..4c54ba7aa 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts @@ -135,7 +135,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'USD', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts similarity index 98% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts index 84898490f..77e3f6157 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts @@ -84,7 +84,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities: [], - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'CHF', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts index 37f22e2f6..84bcc5bc1 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts @@ -116,7 +116,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'CHF', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts similarity index 96% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts index caf196f54..937fd8b48 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts @@ -116,7 +116,7 @@ describe('PortfolioCalculator', () => { const portfolioCalculator = portfolioCalculatorFactory.createCalculator({ activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: 'CHF', userId: userDummyData.id }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.spec.ts similarity index 100% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.spec.ts diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts similarity index 99% rename from apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts index 059b85441..5b918fa03 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts @@ -15,7 +15,7 @@ import { Big } from 'big.js'; import { addMilliseconds, differenceInDays, format, isBefore } from 'date-fns'; import { cloneDeep, sortBy } from 'lodash'; -export class TWRPortfolioCalculator extends PortfolioCalculator { +export class RoaiPortfolioCalculator extends PortfolioCalculator { private chartDates: string[]; protected calculateOverallPerformance( diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index ce03c8024..e90ebd4ae 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -295,7 +295,7 @@ export class PortfolioService { activities, filters, userId, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: this.request.user.Settings.settings.baseCurrency }); @@ -372,7 +372,7 @@ export class PortfolioService { activities, filters, userId, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: userCurrency }); @@ -680,7 +680,7 @@ export class PortfolioService { const portfolioCalculator = this.calculatorFactory.createCalculator({ activities, userId, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: userCurrency }); @@ -950,7 +950,7 @@ export class PortfolioService { activities, filters, userId, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: this.request.user.Settings.settings.baseCurrency }); @@ -1116,7 +1116,7 @@ export class PortfolioService { activities, filters, userId, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: userCurrency }); diff --git a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts index 93b34cbdf..60c3cf695 100644 --- a/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts +++ b/apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.processor.ts @@ -68,7 +68,7 @@ export class PortfolioSnapshotProcessor { const portfolioCalculator = this.calculatorFactory.createCalculator({ accountBalanceItems, activities, - calculationType: PerformanceCalculationType.TWR, + calculationType: PerformanceCalculationType.ROAI, currency: job.data.userCurrency, filters: job.data.filters, userId: job.data.userId diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html index 2a8880225..1a52bd646 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -117,8 +117,8 @@ Net Performance (TWR)(ROAI)
    From f17a95eb48ed76aa654cfcbe4b3e2adb761f3c9b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 16 Mar 2025 20:59:49 +0100 Subject: [PATCH 151/164] Feature/refresh cryptocurrencies list 20250316 (#4449) * Update cryptocurrencies.json * Update changelog --- CHANGELOG.md | 1 + .../cryptocurrencies/cryptocurrencies.json | 684 ++++++++++++++++-- 2 files changed, 622 insertions(+), 63 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 950a4d65d..080a65cf1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the symbol validation in the _Yahoo Finance_ service (get asset profiles) +- Refreshed the cryptocurrencies list ## 2.146.0 - 2025-03-15 diff --git a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json index 7d414ef11..6ac25e5d9 100644 --- a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json +++ b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json @@ -1,6 +1,7 @@ { "3": "The Three Musketeers", "7": "Lucky7", + "32": "Project 32", "42": "42 Coin", "47": "President Trump", "300": "300 token", @@ -16,15 +17,16 @@ "1717": "1717 Masonic Commemorative Token", "2015": "2015 coin", "2024": "2024", + "2025": "2025 TOKEN", "2049": "TOKEN 2049", "2192": "LERNITAS", "$MAID": "MaidCoin", - "$ROPE": "Rope", "$TREAM": "World Stream Finance", "00": "ZER0ZER0", "007": "007 coin", "0DOG": "Bitcoin Dogs", "0KN": "0 Knowledge Network", + "0LNETWORK": "0L Network", "0NE": "Stone", "0X0": "0x0.ai", "0X1": "0x1.tools: AI Multi-tool Plaform", @@ -42,6 +44,7 @@ "1-UP": "1-UP", "1000SATS": "SATS", "1000X": "1000x by Virtuals", + "101M": "101M", "10SET": "Tenset", "1ART": "ArtWallet", "1CAT": "Bitcoin Cats", @@ -52,6 +55,7 @@ "1FLR": "Flare Token", "1GOLD": "1irstGold", "1GUY": "1GUY", + "1HUB": "1HubAI", "1INCH": "1inch", "1IRST": "1irstcoin", "1MCT": "MicroCreditToken", @@ -93,9 +97,11 @@ "3CRV": "LP 3pool Curve", "3D3D": "3d3d", "3DES": "3DES", + "3DVANCE": "3D Vance", "3FT": "ThreeFold Token", "3KM": "3 Kingdoms Multiverse", "3P": "Web3Camp", + "3RDEYE": "3rd Eye", "3ULL": "3ULL Coin", "3ULLV1": "Playa3ull Games v1", "3XD": "3DChain", @@ -117,6 +123,7 @@ "50TRUMP": "50TRUMP", "50X": "50x.com", "5IRE": "5ire", + "69MINUTES": "69 Minutes", "77G": "GraphenTech", "7E": "7ELEVEN", "88MPH": "88mph", @@ -131,7 +138,9 @@ "A": "Alpha Token", "A1INCH": "1inch (Arbitrum Bridge)", "A2A": "A2A", + "A2I": "Arcana AI", "A4": "A4 Finance", + "A47": "AGENDA 47", "A4M": "AlienForm", "A51": "A51 Finance", "A5T": "Alpha5", @@ -139,6 +148,7 @@ "AA": "Alva", "AAA": "Moon Rabbit", "AAAHHM": "Plankton in Pain", + "AAAI": "AAAI_agent by Virtuals", "AAB": "AAX Token", "AABL": "Abble", "AAC": "Double-A Chain", @@ -233,7 +243,8 @@ "ADA": "Cardano", "ADAB": "Adab Solutions", "ADACASH": "ADACash", - "ADAI": "Aave DAI", + "ADAI": "Aave Interest bearing DAI", + "ADAIV1": "Aave DAI", "ADAM": "Adam Back", "ADANA": "Adanaspor Fan Token", "ADAO": "ADADao", @@ -264,6 +275,7 @@ "ADON": "Adonis", "ADP": "Adappter Token", "ADR": "Adroverse", + "ADRI": "AdRise", "ADRX": "Adrenaline Chain", "ADS": "Adshares", "ADT": "AdToken", @@ -322,6 +334,7 @@ "AGATA": "Agatech", "AGB": "Apes Go Bananas", "AGC": "Argocoin", + "AGEN": "Agent Krasnov", "AGENT": "AgentLayer", "AGENTFUN": "AgentFun.AI", "AGET": "Agetron", @@ -330,6 +343,7 @@ "AGF": "Augmented Finance", "AGG": "AGG", "AGI": "Delysium", + "AGIALPHA": "AGI ALPHA AGENT", "AGII": "AGII", "AGIL": "Agility LSD", "AGIV1": "SingularityNET v1", @@ -356,7 +370,11 @@ "AHT": "AhaToken", "AI": "Sleepless", "AI16Z": "ai16z", + "AI21X": "ai21x", + "AI23T": "23 Turtles", + "AI69SAKURA": "Sakura", "AIA": "AIA Chain", + "AIAGENT": "Aiagent.app", "AIAI": "All In AI", "AIAKITA": "AiAkita", "AIAT": "AI Analysis Token", @@ -373,6 +391,7 @@ "AICODE": "AI CODE", "AICORE": "AICORE", "AICRYPTO": "AI Crypto", + "AICRYPTOKEN": "AI Crypto Token", "AID": "AidCoin", "AIDA": "Ai-Da robot", "AIDI": "Aidi Inu", @@ -385,6 +404,7 @@ "AIDUS": "AIDUS Token", "AIE": "A.I.Earn", "AIEN": "AIENGLISH", + "AIEPK": "EpiK Protocol", "AIF": "AI FREEDOM TOKEN", "AIFLOKI": "AI Floki", "AIFUN": "AI Agent Layer", @@ -400,12 +420,15 @@ "AIMBOT": "AimBot AI", "AIMEE": "AIMEE", "AIMET": "AI Metaverse", + "AIMONICA": "Aimonica Brands", "AIMR": "MeromAI", "AIMS": "HighCastle Token", "AIMX": "Aimedis", + "AIMXV1": "Aimedis v1", "AIN": "AI Network", "AINA": "Ainastasia", "AINN": "AINN", + "AINTI": "AIntivirus", "AINU": "Ainu Token", "AION": "Aion", "AIONE": "AiONE", @@ -423,6 +446,7 @@ "AIRBTC": "AIRBTC", "AIRDROP": "AIRDROP2049", "AIRE": "Tokenaire", + "AIREVOLUTION": "AI Revolution Coin", "AIRI": "aiRight", "AIRIAN": "AIRian", "AIRT": "Aircraft", @@ -441,17 +465,24 @@ "AITK": "AITK", "AITN": "Artificial Intelligence Technology Network", "AITRA": "Aitra", + "AITRUMP": "AITRUMP", "AITT": "AITrading", "AIUS": "Arbius", + "AIV": "AIVeronica", + "AIVA": "AI Voice Agents", "AIVIA": "AI Virtual Agents", "AIWALLET": "AiWallet Token", + "AIWS": "AIWS", "AIX": "Aigang", "AIXBT": "aixbt by Virtuals", "AIXERC": "AI-X", + "AIXT": "AIXTerminal", "AJNA": "Ajna Protocol", "AJUN": "Ajuna Network", "AK12": "AK12", "AKA": "Akroma", + "AKAL": "AKA Liberty", + "AKASHA": "Akasha by Bloomverse", "AKI": "Aki Network", "AKIT": "Akita Inu", "AKITA": "Akita Inu", @@ -491,15 +522,18 @@ "ALF": "AlphaCoin", "ALG": "Algory", "ALGB": "Algebra", + "ALGERIA": "Algeria", "ALGO": "Algorand", "ALGOBLK": "AlgoBlocks", "ALGOW": "Algowave", "ALH": "AlloHash", "ALI": "Alethea Artificial Liquid Intelligence Token", "ALIAS": "Alias", + "ALIBABAAI": "Alibaba AI Agent", "ALIC": "AliCoin", "ALICE": "My Neighbor Alice", "ALICEA": "Alice AI", + "ALICEW": "Alice Weidel", "ALIEN": "AlienCoin", "ALIENPEP": "Alien Pepe", "ALIF": " ALIF COIN", @@ -521,6 +555,7 @@ "ALN": "Aluna", "ALNV1": "Aluna v1", "ALOHA": "Aloha", + "ALON": "Alon", "ALOT": "Dexalot", "ALP": "Alphacon", "ALPA": "Alpaca", @@ -575,6 +610,7 @@ "AMERI": "AMERICAN EAGLE", "AMERIC": "American True Hero", "AMERICA": "America", + "AMERICAI": "AMERICA AI Agent", "AMERICANCOIN": "AmericanCoin", "AMF": "AddMeFast", "AMG": "DeHeroGame Amazing Token", @@ -620,7 +656,8 @@ "ANDY": "ANDY", "ANDYB": "AndyBlast", "ANDYBNB": "Andy", - "ANDYBSC": "ANDY", + "ANDYBSC": "Andy BSC", + "ANDYBSCVIP": "ANDY", "ANDYMAN": "ANDYMAN", "ANDYSOL": "Andy on SOL", "ANEX": "AstroNexus", @@ -632,8 +669,10 @@ "ANI": "Anime Token", "ANIM": "Animalia", "ANIMA": "Realm Anima", - "ANIME": "Anime", + "ANIME": "Animecoin", "ANIMECOIN": "Animecoin", + "ANIMEONBASE": "Anime", + "ANITA": "Anita AI", "ANJ": "Aragon Court", "ANJI": "Anji", "ANK": "AlphaLink", @@ -644,6 +683,7 @@ "ANKRETH": "Ankr Staked ETH", "ANKRFTM": "Ankr Staked FTM", "ANKRMATIC": "Ankr Staked MATIC", + "ANLOG": "Analog", "ANML": "Animal Concerts", "ANN": "Annex Finance", "ANON": "ANON", @@ -674,6 +714,7 @@ "AOS": "AOS", "AOT": "Age of Tanks", "AP": "AppleSwap AI", + "AP3X": "Apex token", "APAD": "Anypad", "APC": "AlpaCoin", "APCG": "ALLPAYCOIN", @@ -682,6 +723,7 @@ "APED": "Baddest Alpha Ape Bundle", "APEDEV": "The dev is an Ape", "APEFUN": "Ape", + "APEMAN": "APEMAN", "APEPE": "Ape and Pepe", "APES": "APES", "APETARDIO": "Apetardio", @@ -858,6 +900,7 @@ "ASD": "AscendEX Token", "ASDEX": "AstraDEX", "ASEED": "aUSD SEED (Acala)", + "ASF": "Asymmetry Finance Token", "ASG": "Asgard", "ASGC": "ASG", "ASH": "ASH", @@ -867,6 +910,7 @@ "ASIMI": "ASIMI", "ASIX": "ASIX+", "ASK": "Permission Coin", + "ASKAI": "ASKAI", "ASKO": "Asko", "ASM": "Assemble Protocol", "ASMO": "AS Monaco Fan Token", @@ -893,6 +937,7 @@ "ASTRAFER": "Astrafer", "ASTRAFERV1": "Astrafer v1", "ASTRAL": "Astral", + "ASTRALAB": "Astra Labs", "ASTRO": "Astroport", "ASTROC": "Astroport Classic", "ASTROLION": "AstroLion", @@ -934,6 +979,7 @@ "ATLX": "Atlantis Loans Polygon", "ATM": "Atletico de Madrid Fan Token", "ATMA": "ATMA", + "ATMBSC": "ATM", "ATMC": "Autumncoin", "ATMCHAIN": "ATMChain", "ATMCOIN": "ATM", @@ -994,6 +1040,8 @@ "AUTHORSHIP": "Authorship", "AUTISM": "AUTISM", "AUTO": "Auto", + "AUTOMATIC": "Automatic Treasury Machine", + "AUTONO": "Autonomi", "AUTUMN": "Autumn", "AUVERSE": "AuroraVerse", "AUX": "Auxilium", @@ -1012,6 +1060,7 @@ "AVAV": "AVAV", "AVAV1": "AVA v1", "AVAX": "Avalanche", + "AVAXAI": "AIvalanche DeFAI Agents", "AVAXIOU": "Avalanche IOU", "AVB": "Autonomous Virtual Beings", "AVDO": "AvocadoCoin", @@ -1034,6 +1083,7 @@ "AVTM": "Aventis Metaverse", "AVXL": "Avaxlauncher", "AVXT": "Avaxtars Token", + "AWARE": "ChainAware.ai", "AWAX": "AWAX", "AWC": "Atomic Wallet Coin", "AWK": "Awkward Monkey Base", @@ -1077,6 +1127,7 @@ "AZA": "Kaliza", "AZART": "Azart", "AZBI": "AZBI CORE", + "AZER": "Azerop", "AZERO": "Aleph Zero", "AZIT": "Azit", "AZR": "Azure", @@ -1096,7 +1147,8 @@ "B2G": "Bitcoiin2Gen", "B2M": "Bit2Me", "B2X": "SegWit2x", - "B3": "B3 Coin", + "B3": "B3", + "B3COIN": "B3 Coin", "B3X": "Bnext Token", "B91": "B91", "BA": "BAHA", @@ -1117,6 +1169,9 @@ "BABYBOME": "Book of Baby Memes", "BABYBOMEOW": "Baby of BOMEOW", "BABYBONK": "Baby Bonk", + "BABYBROC": "Baby Broccoli", + "BABYBROCCOL": "Baby Broccoli", + "BABYBROCCOLI": "BabyBroccoli", "BABYBTC": "BABYBTC", "BABYC": "Baby Cat", "BABYCAT": "Baby Cat Coin", @@ -1130,6 +1185,7 @@ "BABYD": "Baby Dragon", "BABYDENG": "Baby Moo Deng", "BABYDOGE": "BabyDoge", + "BABYDOGE2": "Baby Doge 2.0", "BABYDOGEINU": "BABY DOGE INU", "BABYDOGEZILLA": "BabyDogeZilla", "BABYDRAGON": "Baby Dragon", @@ -1150,6 +1206,7 @@ "BABYJERRY": "Baby Jerry", "BABYJESUS": "BabyJesusCoin", "BABYKABOSU": "Baby Kabosu", + "BABYKEKIUS": "Baby Kekius Maximus", "BABYKITTY": "BabyKitty", "BABYLONG": "Baby Long", "BABYM": "BabyMAGA", @@ -1162,6 +1219,7 @@ "BABYMUSK": "Baby Musk", "BABYMYRO": "Babymyro", "BABYNEIRO": "Baby Neiro", + "BABYNEIROB": "Baby Neiro", "BABYOKX": "BABYOKX", "BABYP": "BabyPepe", "BABYPEIPEI": "Baby PeiPei", @@ -1179,6 +1237,7 @@ "BABYSHIRO": "Baby Shiro Neko", "BABYSHIV": "Baby Shiva", "BABYSLERF": "BabySlerf", + "BABYSNAKE": "Baby Snake BSC", "BABYSOL": "Baby Solana", "BABYSORA": "Baby Sora", "BABYSWEEP": "BabySweep", @@ -1198,6 +1257,7 @@ "BACON": "BaconDAO (BACON)", "BAD": "Bad Idea AI", "BADA": "Bad Alien Division", + "BADAI": "BAD Coin", "BADC": "BADCAT", "BADCAT": "Andy’s Alter Ego", "BADGER": "Badger DAO", @@ -1205,6 +1265,7 @@ "BAG": "Bag", "BAGS": "Basis Gold Share", "BAHAMAS": "Bahamas", + "BAHIA": "Esporte Clube Bahia Fan Token", "BAI": "BearAI", "BAICA": "Baica", "BAJU": "Bajun Network", @@ -1218,6 +1279,7 @@ "BAKT": "Backed Protocol", "BAL": "Balancer", "BALA": "Shambala", + "BALANCE": "Balance AI", "BALD": "Bald", "BALIN": "Balin Bank", "BALL": "Game 5 BALL", @@ -1229,9 +1291,11 @@ "BAMA": "BabyAMA", "BAMBIT": "BAMBIT", "BAMBOO": "BambooDeFi", + "BAMF": "BAMF", "BAMITCOIN": "Bamit", "BAN": "Comedian", "BANANA": "Banana Gun", + "BANANACHARITY": "BANANA", "BANANAF": "Banana For Scale", "BANANAS": "Monkey Peepo", "BANANO": "Banano", @@ -1319,6 +1383,7 @@ "BBCH": "Binance Wrapped BCH", "BBCT": "TraDove B2BCoin", "BBDC": "Block Beats Network", + "BBDOGITO": "BabyBullDogito", "BBDT": "BBD Token", "BBEER": "BABY BEERCOIN", "BBF": "Bubblefong", @@ -1335,6 +1400,7 @@ "BBP": "BiblePay", "BBR": "Boolberry", "BBRETT": "Baby Brett", + "BBROCCOLI": "Baby Broccoli", "BBS": "BBSCoin", "BBSOL": "Bybit Staked SOL", "BBT": "BitBook", @@ -1397,6 +1463,7 @@ "BDAY": "Birthday Cake", "BDB": "Big Data Block", "BDC": "BILLION•DOLLAR•CAT", + "BDCA": "BitDCA", "BDCC": "BDCC COIN", "BDCLBSC": "BorderCollieBSC", "BDG": "BitDegree", @@ -1419,8 +1486,10 @@ "BEAMMW": "Beam", "BEAN": "Bean", "BEANS": "Moonbeans", + "BEARIN": "Bear in Bathrobe", "BEAST": "MrBeast", "BEAT": "BEAT Token", + "BEATAI": "eBeat AI", "BEATLES": "JohnLennonC0IN", "BEATS": "Sol Beats", "BEBE": "BEBE", @@ -1433,6 +1502,7 @@ "BEE": "Herbee", "BEEF": "PepeBull", "BEEG": "Beeg Blue Whale", + "BEENZ": "BEENZ", "BEEP": "BEEP", "BEER": "BEERCOIN", "BEERUSCAT": "BeerusCat", @@ -1477,6 +1547,9 @@ "BEPE": "Blast Pepe", "BEPR": "Blockchain Euro Project", "BEPRO": "BEPRO Network", + "BERA": "Berachain", + "BERAETH": "Berachain Staked ETH", + "BERASTONE": "StakeStone Berachain Vault Token", "BERF": "BERF", "BERG": "Bloxberg", "BERN": "BERNcash", @@ -1531,11 +1604,15 @@ "BGBP": "Binance GBP Stable Coin", "BGBV1": "Bitget Token v1", "BGC": "Bee Token", + "BGCI": "Bloomberg Galaxy Crypto Index", + "BGEO": "BGEO", "BGG": "BGG Token", "BGLD": "Based Gold", "BGONE": "BigONE Token", "BGPT": "BlockGPT", + "BGR": "Bitgrit", "BGS": "Battle of Guardians Share", + "BGSC": "BugsCoin", "BGSOL": "Bitget SOL Staking", "BGUY": "The Big Guy", "BGVT": "Bit Game Verse Token", @@ -1543,7 +1620,8 @@ "BHAT": "BH Network", "BHAX": "Bithashex", "BHBD": "bHBD", - "BHC": "BillionHappiness", + "BHC": "Billion Happiness", + "BHCV1": "Billion Happiness v1", "BHEROES": "BombHeroes coin", "BHIG": "BuckHathCoin", "BHIRE": "BitHIRE", @@ -1554,6 +1632,7 @@ "BIAO": "Biaocoin", "BIB": "BIB Token", "BIBI": "BIBI", + "BIBI2025": "Bibi", "BIBL": "Biblecoin", "BIBO": "Bible of Memes", "BIC": "Bikercoins", @@ -1573,9 +1652,12 @@ "BIDZV1": "BIDZ Coin v1", "BIFI": "Beefy.Finance", "BIFIF": "BiFi", + "BIFIV1": "Beefy v1", "BIG": "Big Eyes", + "BIGBALLS": "Edward Coristine", "BIGBANGCORE": "BigBang Core", "BIGCOIN": "BigCoin", + "BIGFACTS": "BIGFACTS", "BIGFOOT": "BigFoot Town", "BIGHAN": "BighanCoin", "BIGLEZ": "THE BIG LEZ SHOW", @@ -1618,6 +1700,7 @@ "BIRB": "Birb", "BIRD": "Bird.Money", "BIRDCHAIN": "Birdchain", + "BIRDD": "BIRD DOG", "BIRDDOG": "Bird Dog", "BIRDO": "Bird Dog", "BIS": "Bismuth", @@ -1642,6 +1725,7 @@ "BITCNY": "bitCNY", "BITCO": "Bitcoin Black Credit Card", "BITCOINC": "Bitcoin Classic", + "BITCOINOTE": "BitcoiNote", "BITCOINP": "Bitcoin Private", "BITCOINV": "BitcoinV", "BITCONNECT": "BitConnect Coin", @@ -1680,7 +1764,9 @@ "BITVOLT": "BitVolt", "BITWORLD": "Bit World Token", "BITX": "BitScreener", - "BITZ": "Bitz Coin", + "BITXOXO": "Bitxoxo", + "BITZ": "MARBITZ", + "BITZBIZ": "Bitz Coin", "BIUT": "Bit Trust System", "BIVE": "BIZVERSE", "BIX": "BiboxCoin", @@ -1784,11 +1870,12 @@ "BLTV": "BLTV Token", "BLU": "BlueCoin", "BLUB": "BLUB", - "BLUE": "Blue Protocol", + "BLUE": "Bluefin", "BLUEBUTT": "BLUE BUTT CHEESE", "BLUEG": "Blue Guy", "BLUEM": "BlueMove", "BLUEN": "Blue Norva", + "BLUEPROTOCOL": "Blue Protocol", "BLUES": "Blueshift", "BLUESC": "BluesCrypto", "BLUESPARROW": "BlueSparrow Token", @@ -1838,6 +1925,7 @@ "BNA": "BananaTok", "BNANA": "Chimpion", "BNB": "Binance Coin", + "BNBAI": "BNB Agents", "BNBBONK": "BNB BONK", "BNBBUNNY": "BNB BUNNY", "BNBCAT": "BNBcat", @@ -1853,12 +1941,14 @@ "BNBLION": "BNB LION", "BNBOLYMPIC": "BNB OLYMPIC", "BNBP": "BNBPot", + "BNBPRINTER": "BNBPrinter", "BNBSNAKE": "BNB SNAKE", "BNBSONGOKU": "BNBsongoku", "BNBTC": "BNbitcoin", "BNBVEGETA": "BNB VEGETA", "BNBWHALES": "BNB Whales", "BNBX": "Stader BNBx", + "BNBXBT": "BNBXBT", "BNC": "Bifrost Native Coin", "BND": "Bened", "BNF": "BonFi", @@ -1884,6 +1974,7 @@ "BNU": "ByteNext", "BNUSD": "Balanced Dollars", "BNX": "BinaryX", + "BNXV1": "BinaryX v1", "BNY": "TaskBunny", "BOA": "BOSAGORA", "BOAI": "BOLICAI", @@ -1900,11 +1991,13 @@ "BOBER": "BOBER", "BOBFUN": "BOB", "BOBLS": "Boblles", + "BOBMARLEY": "Bob Marley Meme", "BOBO": "BOBO", "BOBOT": "Bobo The Bear", "BOBS": "Bob's Repair", "BOBT": "BOB Token", "BOBUKI": "Bobuki Neko", + "BOBY": "BOBY", "BOC": "BOCOIN", "BOCA": "BookOfPussyCats", "BOCAC": "BocaChica token", @@ -1936,6 +2029,7 @@ "BOLD": "Bold", "BOLI": "BolivarCoin", "BOLT": "Bolt", + "BOLTAI": "Bolt AI", "BOLTT": "BolttCoin", "BOM": "Book Of Matt Furie", "BOMA": "Book of Maga", @@ -1951,12 +2045,14 @@ "BOMES": "BOOK OF MEMES", "BOMET": "BOME TRUMP", "BOMK": "BOMK", + "BOMT": "Baby One More Time", "BON": "Bonpay", "BONA": "Bonafi", "BOND": "BarnBridge", "BONDAPPETIT": "BondAppetit", "BONDLY": "Bondly", "BONDLYV1": "Bondly Finance", + "BONDX": "BondX", "BONE": "Bone ShibaSwap", "BONES": "Moonshots Farm", "BONESCOIN": "BonesCoin", @@ -1986,7 +2082,9 @@ "BOO": "Spookyswap", "BOOB": "BooBank", "BOOE": "Book of Ethereum", + "BOOF": "Boofus by Virtuals", "BOOFI": "Boo Finance", + "BOOG": "BOOG base", "BOOK": "Solbook", "BOOKIE": "BookieBot", "BOOKO": "Book of Pets", @@ -2010,6 +2108,7 @@ "BORA": "BORA", "BORED": "Bored Museum", "BORG": "SwissBorg", + "BORGY": "BORGY", "BORING": "BoringDAO", "BORK": "Bork", "BORKIE": "Borkie", @@ -2034,6 +2133,7 @@ "BOTX": "BOTXCOIN", "BOU": "Boulle", "BOUNCE": "Bounce Token", + "BOUNTY": "ChainBounty", "BOUTS": "BoutsPro", "BOW": "Archer Swap", "BOWE": "Book of Whales", @@ -2088,6 +2188,7 @@ "BR": "BOHR", "BR34P": "BR34P", "BRACE": "Bitci Racing Token", + "BRAI": "Brain Frog", "BRAIN": "BrainCoin", "BRAINERS": "Brainers", "BRAINLET": "Brainlet", @@ -2149,6 +2250,14 @@ "BRNK": "Brank", "BRNX": "Bronix", "BRO": "Bro the cat", + "BROC": "Broccoli (broc.wtf)", + "BROCC": "Broccoli", + "BROCCO": "Broccoli (firstbroccoli.com)", + "BROCCOL": "Broccoli (broccolibsc.com)", + "BROCCOLI": "CZ'S Dog (broccoli.gg)", + "BROCCOLIBNB": "BROCCOLI (broccolibnb.xyz)", + "BROCCOLICZ": "Broccoli (broccoli_cz)", + "BROCCOLIVIP": "Broccoli(broccoli.vip)", "BROCK": "Bitrock", "BROGG": "Brett's Dog", "BROKE": "Broke Again", @@ -2178,6 +2287,7 @@ "BS": "BlackShadowCoin", "BSAFE": "BlockSafe", "BSAFU": "BlockSAFU", + "BSAI": "Bitcoin Silver AI", "BSATOSHI": "BabySatoshi", "BSB": "Based Street Bets", "BSC": "BSC Layer", @@ -2194,6 +2304,7 @@ "BSCV": "Bscview", "BSDETH": "Based ETH", "BSE": "base season", + "BSEN": "Baby Sen by Sentio", "BSEND": "BitSend", "BSFM": "BABY SAFEMOON", "BSG": "Baby Squid Game", @@ -2206,6 +2317,7 @@ "BSKT": "BasketCoin", "BSL": "BankSocial", "BSOL": "BlazeStake Staked SOL", + "BSOP": "Bsop", "BSOV": "BitcoinSoV", "BSP": "BallSwap", "BSPM": "Bitcoin Supreme", @@ -2243,6 +2355,7 @@ "BTCA": "BITCOIN ADDITIONAL", "BTCAB": "Bitcoin Avalanche Bridged", "BTCACT": "BITCOIN Act", + "BTCAI": "BTC AI Agent", "BTCAS": "BitcoinAsia", "BTCAT": "Bitcoin Cat", "BTCB": "Bitcoin BEP2", @@ -2264,7 +2377,7 @@ "BTCL": "BTC Lite", "BTCM": "BTCMoon", "BTCMT": "Minto", - "BTCN": "BitcoiNote", + "BTCN": "Bitcorn", "BTCNOW": "Blockchain Technology Co.", "BTCP": "Bitcoin Palladium", "BTCPAY": "Bitcoin Pay", @@ -2273,6 +2386,7 @@ "BTCRED": "Bitcoin Red", "BTCRY": "BitCrystal", "BTCS": "Bitcoin Scrypt", + "BTCSR": "BTC Strategic Reserve", "BTCST": "BTC Standard Hashrate Token", "BTCT": "Bitcoin Token", "BTCUS": "Bitcoinus", @@ -2293,6 +2407,7 @@ "BTL": "Bitlocus", "BTLC": "BitLuckCoin", "BTM": "Bytom", + "BTMETA": "BTCASH", "BTMG": "Bitcademy Football", "BTMI": "BitMiles", "BTMK": "BitMark", @@ -2316,6 +2431,7 @@ "BTRS": "Bitball Treasure", "BTRST": "Braintrust", "BTRU": "Biblical Truth", + "BTRUMP": "Baron Trump", "BTS": "Bitshares", "BTSC": "BTS Chain", "BTSE": "BTSE Token", @@ -2361,19 +2477,23 @@ "BUGG": "Bugg Inu", "BUGS": "Bugs Bunny", "BUIDL": "Starter.xyz", + "BUIL": "BUILD", "BUILD": "BuildAI", "BUILDIN": "Buildin Token", "BUILDTEAM": "BuildTeam", + "BUILT": "Built Different", "BUK": "CryptoBuk", "BUL": "bul", "BULDAK": "Buldak", "BULEI": "Bulei", - "BULL": "Bullieverse", + "BULL": "Tron Bull", + "BULLBEAR": "BullBear AI", "BULLC": "BuySell", "BULLF": "BULL FINANCE", "BULLI": "Bullish On Ethereum", + "BULLIEVERSE": "Bullieverse", "BULLINU": "Bull inu", - "BULLION": "BullionFX", + "BULLIONFX": "BullionFX", "BULLISH": "bullish", "BULLMOON": "Bull Moon", "BULLPEPE": "Bullpepe", @@ -2389,7 +2509,9 @@ "BUND": "Bund V2.0", "BUNDL": "Bundl Tools", "BUNI": "Bunicorn", - "BUNN": "Bunni", + "BUNKER": "BunkerCoin", + "BUNNI": "Bunni", + "BUNNIV1": "Timeless", "BUNNY": "Pancake Bunny", "BUNNYINU": "Bunny Inu", "BUNNYM": "BUNNY MEV BOT", @@ -2410,6 +2532,8 @@ "BUSY": "Busy DAO", "BUT": "BitUP Token", "BUTT": "Buttercat", + "BUTTCOIN": "The Next Bitcoin", + "BUTTHOLE": "Butthole Coin", "BUX": "BUX", "BUXCOIN": "Buxcoin", "BUY": "Burency", @@ -2500,6 +2624,7 @@ "CAI": "Cai Token", "CAID": "ClearAid", "CAIR": "Crypto-AI-Robo.com", + "CAIV": "CARVIS", "CAIX": "CAIx", "CAIZ": "Caizcoin", "CAKE": "PancakeSwap", @@ -2515,6 +2640,7 @@ "CAM": "Consumption Avatar Matrix", "CAMC": "Camcoin", "CAMEL": "The Camel", + "CAMINO": "Camino Network", "CAMLY": "Camly Coin", "CAMP": "Camp", "CAMT": "CAMELL", @@ -2538,8 +2664,10 @@ "CAPRICOIN": "CapriCoin", "CAPS": "Ternoa", "CAPT": "Bitcoin Captain", + "CAPTAINBNB": "CaptainBNB", "CAPTAINPLANET": "Captain Planet", "CAPY": "Capybara", + "CAPYBARA": "Capybara", "CAR": "CarBlock", "CARAT": "Carats Token", "CARBO": "CleanCarbon", @@ -2556,7 +2684,8 @@ "CAROL": "CAROLToken", "CARPE": "CarpeDiemCoin", "CARR": "Carnomaly", - "CARROT": "CarrotSwap", + "CARROT": "Carrot by Puffer", + "CARROTSWAP": "CarrotSwap", "CART": "CryptoArt.Ai", "CARTAXI": "CarTaxi", "CARTERCOIN": "CarterCoin", @@ -2619,6 +2748,7 @@ "CATSY": "CAT SYLVESTER", "CATT": "Catex", "CATTO": "Cat Token", + "CATTON": "Catton AI", "CATVAX": "Catvax", "CATVILLS": "Catvills Coin", "CATW": "Cat wif Hands", @@ -2739,6 +2869,7 @@ "CEODOGE": "CEO DOGE", "CERBER": "CERBEROGE", "CERE": "Cere Network", + "CEREB": "Cerebrum", "CERES": "Ceres", "CES": "swap.coffee", "CESC": "Crypto Escudo", @@ -2765,6 +2896,7 @@ "CFXT": "Chainflix", "CFun": "CFun", "CGA": "Cryptographic Anomaly", + "CGAI": "GDAI Agent", "CGAR": "CryptoGuards", "CGG": "Chain Guardians", "CGL": "Crypto Gladiator Shards", @@ -2774,8 +2906,11 @@ "CGPU": "CloudGPU", "CGS": "Crypto Gladiator Shards", "CGT": "Coin Gabbar Token", + "CGTV1": "Curio Governance", + "CGTV2": "Curio Gas Token", "CGU": "Crypto Gaming United", "CGV": "Cogito Finance", + "CGX": "Forkast", "CHA": "Charity Coin", "CHACHA": "Chacha", "CHAD": "Chad Coin", @@ -2828,7 +2963,8 @@ "CHEESEBALL": "Cheeseball the Wizard", "CHEESECOIN": "Cheesecoin", "CHEESUS": "Cheesus", - "CHEF": "Chefdotfun", + "CHEF": "CoinChef", + "CHEFDOTFUN": "Chefdotfun", "CHENG": "Chengshi", "CHEQ": "CHEQD Network", "CHER": "Cherry Network", @@ -2859,8 +2995,10 @@ "CHILDAI": "Singularity's Child gonzoai", "CHILI": "CHILI", "CHILL": "ChillPill", + "CHILLAX": "Chillax", "CHILLGUY": "Chill Guy", "CHIM": "Chimera", + "CHINA": "China Coin", "CHINAU": "Chinau", "CHINAZILLA": "ChinaZilla", "CHINGON": "Mexico Chingon", @@ -2893,9 +3031,11 @@ "CHOPPER": "Chopper Inu", "CHOPPY": "Choppy", "CHORIZO": "Chorizo", + "CHORUZ": "Choruz AI", "CHOW": "Chow Chow Finance", "CHOY": "Bok Choy", "CHP": "CoinPoker Token", + "CHPD": "Chirppad", "CHR": "Chroma", "CHRETT": "Chinese BRETT", "CHRISPUMP": "Christmas Pump", @@ -2968,11 +3108,13 @@ "CLAY": "Clay Nation", "CLB": "Cloudbric", "CLBR": "Colibri Protocol", + "CLBTC": "clBTC", "CLCT": "CollectCoin", "CLD": "Cloud", "CLDX": "Cloverdex", - "CLEAR": "Clear Water", + "CLEAR": "Everclear", "CLEARPOLL": "ClearPoll", + "CLEARWATER": "Clear Water", "CLEG": "Chain of Legends", "CLEO": "Cleo Tech", "CLEV": "CLever Token", @@ -3012,6 +3154,7 @@ "CLUB": "ClubCoin", "CLUD": "CludCoin", "CLUSTR": "Clustr Labs", + "CLUTCH": "Clutch", "CLV": "Clover Finance", "CLVA": "Clever DeFi", "CLVX": "Calvex", @@ -3086,6 +3229,8 @@ "COCK": "Shibacock", "COCO": "COCO COIN", "COCONUT": "Coconut", + "COCOR": "Cocoro", + "COCORO": "Cocoro", "COD": "Chief of Deswamp", "CODA": "CODA", "CODAI": "CODAI", @@ -3107,6 +3252,7 @@ "COGI": "COGI", "COGS": "Cogmento", "COI": "Coinnec", + "COINAI": "Coinbase AI Agent", "COINB": "Coinbidex", "COINBT": "CoinBot", "COINDEFI": "Coin", @@ -3122,10 +3268,12 @@ "COJ": "Cojam", "COK": "Cat Own Kimono", "COKE": "Cocaine Cowboy Shards", + "COKEONS": "Coke on Sol", "COL": "Clash of Lilliput", "COLA": "Cola", "COLL": "Collateral Pay", "COLLAR": "PolyPup Finance", + "COLLAT": "Collaterize", "COLLE": "Collective Care", "COLLEA": "Colle AI", "COLLECT": "CoinCollect", @@ -3152,6 +3300,7 @@ "COMT": "Community Token", "CONAN": "Conan", "CONC": "Concentrator", + "CONCHO": "Sapo Concho", "CONDENSATE": "Condensate", "CONDO": "CONDO", "CONE": "BitCone", @@ -3195,6 +3344,7 @@ "CORN": "CORN", "CORNELLA": "CORNELLA", "CORSI": "Cane Corso", + "CORTEX": "Cortex Protocol", "CORX": "CorionX", "COS": "Contentos", "COSHI": "CoShi Inu", @@ -3258,6 +3408,7 @@ "CPTN": "Captain Max", "CPU": "CPUcoin", "CPX": "Apex Token", + "CPXTB": "Coin Prediction Tool On Base", "CPY": "COPYTRACK", "CQST": "ConquestCoin", "CQT": "Covalent", @@ -3353,6 +3504,7 @@ "CRONA": "CronaSwap", "CRONK": "CRONK", "CROPPER": "CropperFinance", + "CROW": "cr0w by Virtuals", "CROWD": "CrowdCoin", "CROWDWIZ": "Crowdwiz", "CROWN": "Crown by Third Time Games", @@ -3387,16 +3539,21 @@ "CRYP": "CrypticCoin", "CRYPT": "CryptCoin", "CRYPTER": "Crypteriumcoin", + "CRYPTOA": "CryptoAI", + "CRYPTOAGENT": "CRYPTO AGENT TRUMP", "CRYPTOAI": "CryptoAI", "CRYPTOB": "Crypto Burger", "CRYPTOBEAST": "CryptoBeast", "CRYPTOBL": "CryptoBlades Kingdoms", + "CRYPTOBR": "Crypto Bro", "CRYPTOBULLION": "CryptoBullion", + "CRYPTODELIVERY": "Crypto Delivery", "CRYPTOE": "Cryptoenter", "CRYPTOEM": "Crypto Emperor Trump", "CRYPTOF": "CryptoFarmers", "CRYPTOH": "CryptoHunterTrading", "CRYPTOJ": "Crypto Journey", + "CRYPTOJESUS": "Crypto Jesus Trump", "CRYPTON": "CRYPTON", "CRYPTONITE": "Cryptonite", "CRYPTOOFFICIAL": "Crypto", @@ -3457,6 +3614,7 @@ "CTLX": "Cash Telex", "CTN": "Continuum Finance", "CTO": "BaseCTO", + "CTOAI": "ClustroAI", "CTOK": "Codyfight", "CTP": "Ctomorrow Platform", "CTPL": "Cultiplan", @@ -3475,9 +3633,10 @@ "CU": "Crypto Unicorns", "CUAN": "CuanSwap.com", "CUB": "Cub Finance", - "CUBE": "Cube Network", + "CUBE": "Somnium Space CUBEs", "CUBEAUTO": "Cube", "CUBEB": "CubeBase", + "CUBENETWORK": "Cube Network", "CUCCI": "Cat in Gucci", "CUCK": "Cuckadoodledoo", "CUDOS": "Cudos", @@ -3495,7 +3654,6 @@ "CURA": "Cura Network", "CURE": "Curecoin", "CURI": "Curium", - "CURIO": "Curio Governance", "CURLY": "Curly", "CURR": "Curry", "CURRY": "CurrySwap", @@ -3537,6 +3695,7 @@ "CWAR": "Cryowar Token", "CWBTC": "Compound Wrapped BTC", "CWD": "CROWD", + "CWDV1": "Linkflow", "CWEB": "Coinweb", "CWEX": "Crypto Wine Exchange", "CWIF": "catwifhat", @@ -3592,7 +3751,9 @@ "CYS": "BlooCYS", "CYT": "Cryptokenz", "CZ": "CHANGPENG ZHAO (changpengzhao.club)", + "CZBROCCOLI": "Cz Broccoli", "CZC": "Crazy Coin", + "CZDOG": "CZ Dog", "CZF": "CZodiac Farming Token", "CZGOAT": "CZ THE GOAT", "CZKING": "CZKING", @@ -3602,7 +3763,6 @@ "CZSHARES": "CZshares", "CZUSD": "CZUSD", "CZZ": "ClassZZ", - "D": "Denarius", "D11": "DeFi11", "D2O": "DAM Finance", "D2T": "Dash 2 Trade", @@ -3631,6 +3791,7 @@ "DAFI": "Dafi Protocol", "DAFT": "DaftCoin", "DAG": "Constellation", + "DAGESTAN": "Dagestan And Forget", "DAGO": "Dago Mining", "DAGS": "Dagcoin", "DAGT": "Digital Asset Guarantee Token", @@ -3643,6 +3804,7 @@ "DAIQ": "Daiquilibrium", "DAISY": "Daisy Launch Pad", "DAK": "dak", + "DAKU": "Der Daku", "DAL": "DAOLaunch", "DALI": "Dalichain", "DALMA": "Dalma Inu", @@ -3653,6 +3815,7 @@ "DAMOON": "Damoon Coin", "DAN": "Daneel", "DANA": "Ardana", + "DANCING": "Dancing Michi", "DANG": "Guangdang", "DANGEL": "dAngel Fund", "DANJ": "Danjuan Cat", @@ -3681,10 +3844,12 @@ "DARED": "Daredevil Dog", "DARICO": "Darico", "DARIK": "Darik", - "DARK": "Dark", + "DARK": "Dark Frontiers", + "DARKCOIN": "Dark", "DARKEN": "Dark Energy Crystals", "DARKMAGACOIN": "DARK MAGA", "DARKT": "Dark Trump", + "DARKTOKEN": "DarkToken", "DART": "dART Insurance", "DARX": "Bitdaric", "DAS": "DAS", @@ -3695,6 +3860,7 @@ "DASIAv": "DASIA", "DAT": "Datum", "DATA": "Streamr", + "DATAB": "Databot", "DATAO": "Data Ownership Protocol", "DATAWALLET": "DataWallet", "DATOM": "Drop Staked ATOM", @@ -3760,7 +3926,7 @@ "DCN": "Dentacoin", "DCNT": "Decanect", "DCNTR": "Decentrahub Coin", - "DCOIN": "Crypto Delivery", + "DCOIN": "Dogcoin", "DCR": "Decred", "DCRE": "DeltaCredits", "DCRN": "Decred-Next", @@ -3779,6 +3945,7 @@ "DDIM": "DuckDaoDime", "DDK": "DDKoin", "DDL": "Donocle", + "DDM": "DDM Deutsche Mark", "DDMT": "Dongdaemun Token", "DDN": "Den Domains", "DDOS": "disBalancer", @@ -3804,13 +3971,18 @@ "DEDE": "Dede", "DEDI": "Dedium", "DEDPRZ": "DEDPRZ", + "DEE": "Deep AI", "DEEBO": "Deebo the Bear", "DEED": "Deed (Ordinals)", "DEEM": "iShares MSCI Emerging Markets ETF Defichain", "DEEP": "DeepBook Protocol", "DEEPCLOUD": "DeepCloud AI", "DEEPG": "Deep Gold", + "DEEPSEARCH": "Grok 3 DeepSearch", + "DEEPSEEK": "Global DePIN Chain", + "DEEPSEEKR1": "DeepSeek R1", "DEER": "ToxicDeer Finance", + "DEERSEIZED": "Deer Seized by US Government", "DEEX": "DEEX", "DEEZ": "DEEZ NUTS", "DEFAI": "DeFAI", @@ -3859,6 +4031,7 @@ "DEMI": "DeMi", "DEMIR": "Adana Demirspor Token", "DEMOS": "DEMOS", + "DENARIUS": "Denarius", "DENT": "Dent", "DENTX": "DENTNet", "DEO": "Demeter", @@ -3890,6 +4063,7 @@ "DEUS": "DEUS Finance", "DEUSD": "Elixir deUSD", "DEV": "Deviant Coin", + "DEVAI": "DEV AI", "DEVCOIN": "DevCoin", "DEVE": "Develocity Finance", "DEVI": "DEVITA", @@ -3898,9 +4072,11 @@ "DEVVE": "Devve", "DEVX": "Developeo", "DEX": "DEX", + "DEX223": "DEX223", "DEXA": "DEXA COIN", "DEXC": "DexCoyote Legends", "DEXE": "DeXe", + "DEXEV1": "DeXe v1", "DEXG": "Dextoken Governance", "DEXIO": "Dexioprotocol", "DEXM": "Dexmex", @@ -4036,6 +4212,7 @@ "DISK": "Dark Lisk", "DISPEPE": "Disabled Pepe", "DISTR": "Distributed Autonomous Organization", + "DISTRIBUTE": "DISTRIBUTE", "DIT": "Ditcoin", "DITH": "Dither AI", "DIVA": "DIVA Protocol", @@ -4110,6 +4287,7 @@ "DNO": "Denaro", "DNODE": "DecentraNode", "DNOTES": "Dnotes", + "DNOW": "DuelNow", "DNS": "BitDNS", "DNT": "district0x", "DNTX": "DNAtix", @@ -4152,10 +4330,12 @@ "DOGE1SAT": "DOGE-1SATELLITE", "DOGE2": "Dogecoin 2.0", "DOGE20": "Doge 2.0", + "DOGEAI": "DOGEai", "DOGEB": "DogeBonk", "DOGEBNB": "DogeBNB", "DOGEC": "DogeCash", "DOGECAST": "Dogecast", + "DOGECAUCUS": "Doge Caucus", "DOGECEO": "Doge CEO", "DOGECO": "Dogecolony", "DOGECOIN": "Buff Doge Coin", @@ -4164,6 +4344,7 @@ "DOGED": "DogeCoinDark", "DOGEDAO": "DogeDao", "DOGEDASH": "Doge Dash", + "DOGEDI": "Doge Dividends", "DOGEFA": "DOGEFATHER", "DOGEFATHER": "Dogefather", "DOGEFORK": "DogeFork", @@ -4177,6 +4358,7 @@ "DOGEM": "Doge Matrix", "DOGEMETA": "Dogemetaverse", "DOGEMOB": "DOGEMOB", + "DOGEMOON": "DOGE TO MOON", "DOGENFT": "The Doge NFT", "DOGEP": "Doge Protocol", "DOGEPAY": "Doge Payment", @@ -4186,6 +4368,7 @@ "DOGERA": "Dogera", "DOGES": "Dogeswap", "DOGESWAP": "Dogeswap Token (HECO)", + "DOGETF": "DOGE ETF", "DOGETH": "EtherDoge", "DOGEVERSE": "DogeVerse", "DOGEWHALE": "Dogewhale", @@ -4208,13 +4391,16 @@ "DOGLAI": "Doglaikacoin", "DOGMI": "DOGMI", "DOGO": "DogemonGo", + "DOGONB": "Dog on Base", "DOGPAD": "DogPad Finance", + "DOGPU": "DogeGPU", "DOGRMY": "DogeArmy", "DOGS": "Dogs", "DOGSROCK": "Dogs Rock", "DOGSS": "DOGS SOL", "DOGSSO": "DOGS Solana", "DOGSWAG": "DogSwaghat", + "DOGUN": "Dogun", "DOGW": "DOGWIFHOOD", "DOGWIFHAT": "dogwifhat", "DOGWIFSEAL": "dogwifseal", @@ -4238,6 +4424,7 @@ "DONA": "DONASWAP", "DONAL": "Donald Pump", "DONALD": "DONALD TRUMP", + "DONALDP": "Donald Pump", "DONALDT": "Donald The Trump", "DONATION": "DonationCoin", "DONG": "DongCoin", @@ -4289,6 +4476,7 @@ "DPEX": "DPEX", "DPI": "DeFiPulse Index", "DPIE": "DeFiPie", + "DPIN": "DPIN", "DPLAT": "zbyte", "DPLN": "DePlan", "DPLTR": "Palantir Tokenized Stock Defichain", @@ -4350,6 +4538,7 @@ "DRT": "DomRaider", "DRUGS": "Big Pharmai", "DRV": "Derive", + "DRX": "DRX Token", "DRXNE": "Droxne", "DRZ": "Droidz", "DS": "DeStorage", @@ -4376,7 +4565,7 @@ "DSTR": "Dynamic Supply Tracker", "DSUN": "DsunDAO", "DSYNC": "Destra Network", - "DT": "DarkToken", + "DT": "Drift Zone", "DT1": "Dollar Token 1", "DTA": "Data", "DTB": "Databits", @@ -4425,6 +4614,7 @@ "DUET": "Duet Protocol", "DUG": "DUG", "DUGE": "DUGE", + "DUK": "DUKE COIN", "DUK+": "Dukascoin", "DUKE": "Duke Inu", "DUKO": "DUKO", @@ -4518,6 +4708,7 @@ "EA": "EagleCoin", "EAC": "Education Assessment Cult", "EADX": "EADX Token", + "EAFIN": "EAFIN", "EAG": "Emerging Assets Group", "EAGLE": "Eagle Token", "EAGS": "EagsCoin", @@ -4525,6 +4716,7 @@ "EARLY": "Early Risers", "EARLYF": "EarlyFans", "EARN": "EarnGuild", + "EARNB": "Earn BTC", "EARTH": "Earth Token", "EARTHCOIN": "EarthCoin", "EASYF": "EasyFeedback", @@ -4616,12 +4808,15 @@ "EDUCOIN": "EduCoin", "EDUM": "EDUM", "EDUX": "Edufex", + "EDWIN": "Edwin", "EDX": "Equilibrium", + "EEFS": "Eefs", "EER": "Ethereum eRush", "EETH": "ether fi", "EFBAI": "EuroFootball AI", "EFC": "Everton Fan Token", "EFCR": "EFLANCER", + "EFFECT": "Effect AI", "EFFT": "Effort Economy ", "EFI": "Efinity", "EFIL": "Ethereum Wrapped Filecoin", @@ -4721,6 +4916,7 @@ "ELON": "Dogelon Mars", "ELON2024": "ELON 2024(BSC)", "ELON404": "Elon404", + "ELON4AFD": "Elon for AfD", "ELONCAT": "ELON CAT COIN", "ELOND": "ELON DOGE", "ELONDOGE": "ELON DOGE", @@ -4748,6 +4944,7 @@ "ELUSKMON": "Elusk Mon", "ELV": "Elvantis", "ELVN": "11Minutes", + "ELX": "Elixir Network", "ELY": "Elysian", "ELYS": "Elys Network", "ELYSIUM": "Elysium", @@ -4785,6 +4982,7 @@ "EMU": "eMusic", "EMV": "Ethereum Movie Venture", "EMX": "EMX", + "EMYC": "E Money", "ENA": "Ethena", "ENC": "Encores Token", "ENCD": "Encircled", @@ -4812,6 +5010,7 @@ "ENQ": "Enecuum", "ENQAI": "enqAI", "ENRG": "EnergyCoin", + "ENRON": "Enron", "ENRX": "Enrex", "ENS": "Ethereum Name Service", "ENT": "Eternity", @@ -4909,8 +5108,10 @@ "ESGC": "ESG Chain", "ESH": "Switch", "ESHIB": "Euro Shiba Inu", + "ESM": "EL SALVADOR MEME", "ESN": "Ethersocial", "ESNC": "Galaxy Arena Metaverse", + "ESOL": "Earn Solana", "ESP": "Espers", "ESPL": "ESPL ARENA", "ESPR": "Espresso Bot", @@ -4972,6 +5173,7 @@ "ETHPOW": "ETHPoW", "ETHPR": "Ethereum Premium", "ETHPY": "Etherpay", + "ETHR": "Ethereal", "ETHS": "EthereumScrypt", "ETHSHIB": "Eth Shiba", "ETHV": "Ethverse", @@ -5017,6 +5219,7 @@ "EUROP": "Europa Coin", "EURQ": "Quantoz EURQ", "EURR": "StablR Euro", + "EURRV1": "StablR Euro v1", "EURS": "STASIS EURS", "EURT": "Euro Tether", "EURTV1": "Euro Tether v1", @@ -5027,6 +5230,7 @@ "EV": "EVAI", "EVA": "Evadore", "EVAI": "EVA Intelligence", + "EVAL": "Chromia's EVAL by Virtuals", "EVAN": "Evanesco Network", "EVAULT": "EthereumVault", "EVAV1": "Evadore v1", @@ -5094,6 +5298,7 @@ "EXOS": "Exobots", "EXP": "Expanse", "EXPAND": "Gems", + "EXPERT": "EXPERT_MONEY", "EXPO": "Exponential Capital", "EXRD": "Radix", "EXRN": "EXRNchain", @@ -5127,6 +5332,7 @@ "F9": "Falcon Nine", "FAB": "FABRK Token", "FABA": "Faba Invest", + "FABIENNE": "Fabienne", "FABRIC": "MetaFabric", "FAC": "Flying Avocado Cat", "FACE": "FaceDAO", @@ -5136,6 +5342,8 @@ "FACTORY": "ChainFactory", "FACTR": "Defactor", "FADO": "FADO Go", + "FAFO": "FAFO", + "FAFOSOL": "Fafo", "FAG": "PoorFag", "FAH": "Falcons", "FAI": "Freysa AI", @@ -5172,7 +5380,11 @@ "FARME": "Farmers Only", "FARMING": "Farming Bad", "FARMS": "Farmsent", + "FARTAI": "Fart AI", + "FARTBOY": "Fartboy", "FARTCOIN": "Fartcoin", + "FARTDEV": "Fart Dev", + "FARTING": "Farting Unicorn", "FAS": "fast construction coin", "FAST": "Fastswap", "FASTAI": "Fast And Ai", @@ -5316,6 +5528,7 @@ "FINS": "AutoShark DEX", "FINT": "FintraDao", "FINU": "Formula Inu", + "FINVESTA": "Finvesta", "FIO": "FIO Protocol", "FIONA": "Fiona", "FIONABSC": "Fiona", @@ -5336,6 +5549,7 @@ "FITFI": "Step App", "FITT": "Fitmint", "FIU": "beFITTER", + "FIUSD": "Sygnum FIUSD Liquidity Fund", "FIWA": "Defi Warrior", "FIX00": "FIX00", "FJB": "Freedom. Jobs. Business.", @@ -5389,7 +5603,9 @@ "FLO": "Flo", "FLOAT": "Float Protocol", "FLOCHI": "Flochi", + "FLOCK": "FLock.io", "FLOCKA": "Waka Flocka", + "FLOCKE": "Flockerz", "FLOKA": "FLOKA", "FLOKEI": "FLOKEI", "FLOKI": "Floki Inu", @@ -5412,6 +5628,8 @@ "FLORKY": "Florky", "FLOSHIDO": "FLOSHIDO INU", "FLOT": "FireLotto", + "FLOTUS47": "Melania Trump", + "FLOURI": "Flourishing AI", "FLOVI": "Flovi inu", "FLOVM": "FLOV MARKET", "FLOW": "Flow", @@ -5423,12 +5641,14 @@ "FLRBRG": "Floor Cheese Burger", "FLRS": "Flourish Coin", "FLS": "Flits", + "FLSH": "FlashWash", "FLT": "Fluence", "FLUFFI": "Fluffington", "FLUFFY": "FLUFFY", "FLUFFYS": "Fluffys", "FLUI": "Fluidity", "FLUID": "Fluid", + "FLUIDTRADE": "Fluid", "FLURRY": "Flurry Finance", "FLUT": "Flute", "FLUTTERCOIN": "FlutterCoin", @@ -5517,6 +5737,7 @@ "FORT": "Forta", "FORTH": "Ampleforth Governance Token", "FORTHB": "ForthBox", + "FORTKNOX": "Fort Knox", "FORTUNA": "Fortuna", "FORTUNE": "Fortune", "FORWARD": "Forward Protocol", @@ -5544,6 +5765,7 @@ "FPEPE": "Based Father Pepe", "FPFT": "Peruvian National Football Team Fan Token", "FPI": "Frax Price Index", + "FPIBANK": "FPIBANK", "FPIS": "Frax Price Index Share", "FQS": "FQSwap V2", "FR": "Freedom Reserve", @@ -5573,13 +5795,15 @@ "FREET": "FreeTrump", "FREL": "Freela", "FREN": "FREN", + "FRENC": "Frencoin", "FRENCH": "French On Base", "FRENS": "Farmer Friends", "FRESCO": "Fresco", "FRF": "France REV Finance", "FRGST": "Froggies Token", "FRGX": "FRGX", - "FRIC": "Frictionless", + "FRIC": "Fric", + "FRICTION": "Frictionless", "FRIEND": "Friend.tech", "FRIES": "Soltato FRIES", "FRIN": "Fringe Finance", @@ -5589,6 +5813,7 @@ "FRM": "Ferrum Network", "FRN": "Francs", "FRNT": "Final Frontier", + "FROC": "Based Froc", "FROG": "FrogSwap", "FROGB": "Frog Bsc", "FROGCEO": "Frog Ceo", @@ -5629,6 +5854,7 @@ "FSO": "FSociety", "FST": "Futureswap", "FSTC": "FastCoin", + "FSTR": "Fourth Star", "FSW": "Falconswap", "FT": "Fracton Protocol", "FTB": "Fit&Beat", @@ -5656,10 +5882,12 @@ "FTVT": "FashionTV Token", "FTW": "FutureWorks", "FTX": "FintruX", + "FTXAI": "FTX AI Agent", "FTXT": "FUTURAX", "FU": "FU Money", "FUBAO": "FUBAO", "FUCK": "Fuck Token", + "FUCKTRUMP": "FUCK TRUMP", "FUD": "FUD.finance", "FUEGO": "FUEGO", "FUEL": "Fuel Network", @@ -5669,6 +5897,7 @@ "FUJIN": "Fujinto", "FUKU": "FUKU-KUN", "FUL": "Fulcrom Finance", + "FULLSEND": "Fullsend Community Coin", "FUMO": "Alien Milady Fumo", "FUN": "FUN Token", "FUNASSYI": "Funassyi", @@ -5736,6 +5965,7 @@ "G1X": "GoldFinX", "G3": "GAM3S.GG", "G50": "G50", + "G7": "Game7", "G8C": "ONEG8.ONE", "G999": "G999", "GAC": "Green Art Coin", @@ -5915,6 +6145,7 @@ "GENX": "Genx Token", "GENXNET": "Genesis Network", "GENZ": "GENZ Token", + "GENZAI": "GENZAI", "GEO": "GeoCoin", "GEOD": "GEODNET", "GEODB": "GeoDB", @@ -5942,6 +6173,7 @@ "GFCS": "Global Funeral Care", "GFI": "Goldfinch", "GFLY": "BattleFly", + "GFM": "GoFundMeme", "GFN": "Graphene", "GFOX": "Galaxy Fox", "GFT": "Gifto", @@ -5954,6 +6186,7 @@ "GGC": "Global Game Coin", "GGCM": "Gold Guaranteed Coin", "GGG": "Good Games Guild", + "GGGG": "Good Game Gary Gensler", "GGH": "Green Grass Hopper", "GGM": "Monster Galaxy", "GGMT": "GG MetaGame", @@ -5993,8 +6226,10 @@ "GIFT": "GiftNet", "GIG": "GigaCoin", "GIGA": "Gigachad", + "GIGABRAIN": "Gigabrain by virtuals", "GIGACAT": "GIGACAT", "GIGACHAD": "GigaChad", + "GIGAG": "GIGAGEEK", "GIGASWAP": "GigaSwap", "GIGGLE": "Giggle Academy", "GIGS": "Climate101", @@ -6091,6 +6326,7 @@ "GMNT": "Gmining", "GMPD": "GamesPad", "GMR": "GAMER", + "GMRT": "Gamertag Token", "GMRV1": "GAMER v1", "GMRV2": "GAMER v2", "GMRX": "Gaimin", @@ -6132,6 +6368,7 @@ "GOC": "GoCrypto", "GOCHU": "Gochujangcoin", "GOD": "Bitcoin God", + "GODC": "Godcoin", "GODCAT": "GodcatExplodingKittens", "GODE": "Gode Chain", "GODEX": "GUARD OF DECENT", @@ -6146,9 +6383,11 @@ "GOGLZ": "GOGGLES", "GOGO": "GOGO Finance", "GOGU": "GOGU Coin", + "GOHOME": "GOHOME", "GOIN": "GOinfluencer", "GOJOCOIN": "Gojo Coin", - "GOKU": "Goku", + "GOKU": "Goku Super Saiyan", + "GOKUINU": "Goku (gokuinu.io)", "GOL": "GogolCoin", "GOLC": "GOLCOIN", "GOLD": "CyberDragon Gold", @@ -6226,7 +6465,9 @@ "GPN": "Gamepass Network", "GPO": "GoldPesa Option", "GPPT": "Pluto Project Coin", - "GPS": "Triffic", + "GPRO": "GoldPro", + "GPS": "GoPlus Security", + "GPSTOKEN": "GPS Token", "GPT": "QnA3.AI", "GPT4O": "GPT-4o", "GPTG": "GPT Guru", @@ -6243,6 +6484,7 @@ "GRAIL": "Camelot Token", "GRAIN": "Granary", "GRAM": "Gram", + "GRAND": "Grand Theft Ape", "GRANDCOIN": "GrandCoin", "GRANDMA": "Grandma", "GRAPE": "GrapeCoin", @@ -6279,6 +6521,7 @@ "GRIMEVO": "Grim EVO", "GRIMEX": "SpaceGrime", "GRIN": "Grin", + "GRIND": "Self Improving", "GRL": "Greelance", "GRLC": "Garlicoin", "GRM": "GridMaster", @@ -6290,6 +6533,8 @@ "GROGGO": "Groggo By Matt Furie", "GROK": "Grok", "GROK2": "GROK 2.0", + "GROK3": "Grok 3", + "GROKAI": "Grok AI Agent", "GROKBANK": "Grok Bank", "GROKBOY": "GrokBoy", "GROKCAT": "Grok Cat", @@ -6306,12 +6551,14 @@ "GROKOLAUS": "GROKolaus", "GROKQUEEN": "Grok Queen", "GROKSORAX": "GROKSORAX", + "GROKVANCE": "GROK VANCE", "GROKX": "GROKX", "GROKXAI": "Grok X Ai", "GRON": "Gron Digital", "GROOOOOK": "Groooook", "GROOVE": "GROOVE", - "GROW": "GrownCoin", + "GROW": "Grow Token", + "GROWNCOIN": "GrownCoin", "GROWTH": "GROWTH DeFi", "GROYPER": "Groyper", "GRP": "Grape", @@ -6370,6 +6617,7 @@ "GTSE": "Global Tourism Sharing Ecology", "GTTM": "Going To The Moon", "GTX": "GALLACTIC", + "GTY": "G-Agents AI", "GUA": "GUA", "GUAC": "Guacamole", "GUAN": "Guanciale by Virtuals", @@ -6379,6 +6627,7 @@ "GUARDAI": "GuardAI", "GUC": "Green Universe Coin", "GUCCI": "GUCCI", + "GUDTEK": "ai16zterminalfartARCzereLLMswarm", "GUE": "GuerillaCoin", "GUESS": "Peerguess", "GUGU": "gugu", @@ -6432,6 +6681,7 @@ "GZT": "Golden Zen Token", "GZX": "GreenZoneX", "Glo Dollar": "USDGLO", + "H1DR4": "H1DR4 by Virtuals", "H2O": "H2O Dao", "H2ON": "H2O Securities", "H3O": "Hydrominer", @@ -6488,6 +6738,7 @@ "HARR": "HARRIS DOGS", "HARRIS": "KAMALA HARRIS", "HARRISV": "Harris V Trump", + "HARRYBOLZ": "Harry Bolz", "HARRYP": "HarryPotterObamaSonic10Inu (ERC20)", "HARRYPO": "HarryPotterObamaPacMan8Inu", "HART": "HARA", @@ -6533,6 +6784,7 @@ "HBX": "Hyperbridge", "HBZ": "HBZ Coin", "HC": "HyperCash", + "HCAT": "Hover Cat", "HCC": "HappyCreatorCoin", "HCT": "HurricaneSwap Token", "HCXP": "HCX PAY", @@ -6551,6 +6803,7 @@ "HEALT": "Healthmedi", "HEART": "Humans", "HEARTBOUT": "HeartBout Pay", + "HEARTN": "Heart Number", "HEARTR": "Heart Rate", "HEAT": "Heat Ledger", "HEAVEN": "Heaven Token", @@ -6565,6 +6818,7 @@ "HEGG": "Hummingbird Egg", "HEGIC": "Hegic", "HEHE": "hehe", + "HEI": "Heima", "HEL": "Hello Puppy", "HELA": "Science Cult Mascot", "HELI": "Helion", @@ -6578,11 +6832,13 @@ "HEMAN": "HE-MAN", "HEMULE": "Hemule", "HENG": "HengCoin", + "HENL": "henlo", "HENLO": "Henlo", "HENLOV1": "Henlo v1", "HEP": "Health Potion", "HER": "Hero Node", "HERA": "Hero Arena", + "HERAF": "Hera Finance", "HERB": "HerbCoin", "HERBE": "Herbee", "HERME": "Hermes DAO", @@ -6592,11 +6848,13 @@ "HERO": "Metahero", "HEROC": "HEROcoin", "HEROES": "Dehero Community Token", + "HEROESAI": "HEROES AI", "HEROESC": "HeroesChained", "HEROI": "Heroic Saga Shiba", "HET": "HavEther", "HETA": "HetaChain", "HETH": "Huobi Ethereum", + "HEU": "Heurist AI", "HEWE": "Health & Wealth", "HEX": "HEX", "HEXC": "HexCoin", @@ -6650,7 +6908,9 @@ "HIMO": "Himo World", "HIMOONBIRDS": "hiMOONBIRDS", "HINA": "Hina Inu", - "HINT": "Hintchain", + "HINAGI": "Hinagi", + "HINT": "Hive Intelligence", + "HINTCH": "Hintchain", "HINU": "HajiIni", "HIOD": "hiOD", "HIODBS": "hiODBS", @@ -6679,6 +6939,7 @@ "HKFLOKI": "hong kong floki", "HKG": "Hacker Gold", "HKN": "Hacken", + "HKU5": "New Coronavirus", "HLC": "HalalChain", "HLD": "HyperLending", "HLDY": "HOLIDAY", @@ -6733,6 +6994,7 @@ "HODL": "HOdlcoin", "HOG": "Hog", "HOGE": "Hoge Finance", + "HOGONSOLANA": "HOG", "HOHOHO": "Santa Floki v2.0", "HOICHI": "Hoichi", "HOKA": "Hokkaido Inu", @@ -6741,9 +7003,11 @@ "HOLA": "Hola Token", "HOLD": "HOLD", "HOLDEX": "Holdex Finance", + "HOLDON4": "HoldOn4DearLife", "HOLY": "Holy Trinity", "HOM": "Homeety", "HOME": "OtterHome", + "HOMEBREW": "Homebrew Robotics Club", "HOMER": "Homer Simpson", "HOMERB": "Homer BSC", "HOMERO": "Homer Of Meme", @@ -6758,6 +7022,7 @@ "HONK": "Honk", "HONKLER": "Honkler", "HONOR": "HonorLand", + "HOODRAT": "Hoodrat Coin", "HOOF": "Metaderby Hoof", "HOOK": "Hooked Protocol", "HOOP": "Chibi Dinos", @@ -6781,6 +7046,7 @@ "HOTMOON": "HotMoon Token", "HOTN": "HotNow", "HOTT": "HOT Token", + "HOUND": "BaseHoundBot by Virtuals", "HOUSE": "Klaymore Stakehouse", "HOW": "HowInu", "HOWL": "Coyote", @@ -6834,7 +7100,7 @@ "HTM": "Hatom", "HTML": "HTML Coin", "HTMOON": "HTMOON", - "HTN": "Heart Number", + "HTN": "Hoosat Network", "HTO": "Heavenland HTO", "HTR": "Hathor", "HTT": "Hello Art", @@ -6851,6 +7117,7 @@ "HUGO": "Hugo Inu", "HUH": "HUH Token", "HUHCAT": "huhcat", + "HULEZHI": "HU LE ZHI", "HUM": "Humanscape", "HUMAI": "Humanoid AI", "HUMP": "Hump", @@ -6873,6 +7140,7 @@ "HVE2": "Uhive", "HVH": "HAVAH", "HVI": "Hungarian Vizsla Inu", + "HVLO": "Hivello", "HVN": "Hiveterminal Token", "HVNT": "HiveNet Token", "HVT": "HyperVerse", @@ -6948,6 +7216,7 @@ "ICE": "Ice Open Network", "ICEC": "IceCream", "ICECR": "Ice Cream Sandwich", + "ICECREAM": "IceCream AI", "ICELAND": "ICE LAND", "ICETH": "Interest Compounding ETH Index", "ICG": "Invest Club Global", @@ -7048,6 +7317,7 @@ "IMGZ": "Imigize", "IMI": "Influencer", "IML": "IMMLA", + "IMMIGRATION": "Immigration Customs Enforcement", "IMMO": "ImmortalDAO Finance", "IMMORTAL": "IMMORTAL.COM", "IMO": "IMO", @@ -7087,6 +7357,8 @@ "INDIAN": "Indian Call Center", "INDICOIN": "IndiCoin", "INDU": "INDU4.0", + "INDUSTRIAL": "Industrial", + "INDX": "CryptoIndex", "INDY": "Indigo Protocol", "INE": "IntelliShare", "INEDIBLE": "INEDIBLE", @@ -7101,6 +7373,7 @@ "INFINI": "Infinity Economics", "INFLR": "Inflr", "INFO": "Infomatix", + "INFR": "infraX", "INFRA": "Bware", "INFT": "Infinito", "INFTT": "iNFT Token", @@ -7126,7 +7399,6 @@ "INSP": "Inspect", "INSPI": "InspireAI", "INSR": "Insurabler", - "INST": "Instadapp", "INSTAMINE": "Instamine Nuggets", "INSTAR": "Insights Network", "INSUR": "InsurAce", @@ -7183,6 +7455,7 @@ "IOV": "Starname", "IOVT": "IOV", "IOWN": "iOWN Token", + "IP": "Story", "IP3": "Cripco", "IPAD": "Infinity Pad", "IPC": "IPChain", @@ -7227,11 +7500,13 @@ "ISKY": "Infinity Skies", "ISL": "IslaCoin", "ISLAMI": "ISLAMICOIN", + "ISLAND": "ISLAND Token", "ISLM": "Islamic Coin", "ISME": "Root Protocol", "ISP": "Ispolink", "ISR": "Insureum", "ISRG.CUR": "Intuitive Surgical, Inc.", + "ISSOU": "Risitas", "ISSP": "ISSP", "IST": "Inter Stable Token", "ISTEP": "iSTEP", @@ -7288,7 +7563,7 @@ "IZX": "IZX", "IZZY": "Izzy", "InBit": "PrepayWay", - "J": "JoinCoin", + "J": "Jambo", "J8T": "JET8", "J9BC": "J9CASINO", "JACK": "Jack Token", @@ -7296,8 +7571,12 @@ "JACY": "JACY", "JADE": "Jade Protocol", "JADEC": "Jade Currency", + "JAE": "JaeCoin", "JAGO": "Jagotrack", + "JAI": "Japanese Akita Inu", "JAIHO": "Jaiho Crypto", + "JAIHOZ": "Jaihoz by Virtuals", + "JAILSTOOL": "Stool Prisondente", "JAKE": "Jake The Dog", "JAM": "Tune.Fm", "JAN": "Storm Warfare", @@ -7305,6 +7584,7 @@ "JANET": "Janet", "JANI": "JANI", "JANRO": "Janro The Rat", + "JAPAN": "Japan Open Chain", "JAR": "Jarvis+", "JARED": "Jared From Subway", "JARY": "JeromeAndGary", @@ -7327,6 +7607,7 @@ "JDAI": "Dai (TON Bridge)", "JDC": "JustDatingSite", "JDO": "JINDO", + "JDV": "JD Vance", "JED": "JEDSTAR", "JEDALS": "Yoda Coin Swap", "JEET": "Jeet", @@ -7337,6 +7618,8 @@ "JEJUDOGE": "Jejudoge", "JELLI": "JELLI", "JELLY": "Jelly eSports", + "JELLYAI": "jelly ai agent", + "JELLYJELLY": "Jelly-My-Jelly", "JEM": "Jem", "JEN": "JEN COIN", "JENNER": "Caitlyn Jenner", @@ -7360,6 +7643,7 @@ "JFI": "JackPool.finance", "JFIN": "JFIN Coin", "JFIVE": "Jonny Five", + "JFOX": "JuniperFox AI", "JFP": "JUSTICE FOR PEANUT", "JGLP": "Jones GLP", "JGN": "Juggernaut", @@ -7397,6 +7681,7 @@ "JNY": "JNY", "JOB": "Jobchain", "JOBS": "JobsCoin", + "JOBSEEK": "JobSeek AI", "JOC": "Speed Star JOC", "JOE": "JOE", "JOEB": "Joe Biden", @@ -7406,6 +7691,7 @@ "JOGECO": "Jogecodog", "JOHM": "Johm lemmon", "JOHNNY": "Johnny The Bull", + "JOINCOIN": "JoinCoin", "JOINT": "Joint Ventures", "JOJO": "JOJO", "JOK": "JokInTheBox", @@ -7485,6 +7771,7 @@ "JWBTC": "Wrapped Bitcoin (TON Bridge)", "JWIF": "Jerrywifhat", "JWL": "Jewels", + "JYAI": "Jerry The Turtle By Matt Furie", "JYC": "Joe-Yo Coin", "K21": "K21", "K2G": "Kasko2go", @@ -7506,7 +7793,9 @@ "KAIK": "KAI KEN", "KAIKEN": "Kaiken Shiba", "KAILY": "Kailith", + "KAIM": "Kai Meme", "KAINET": "KAINET", + "KAITO": "KAITO", "KAKA": "KAKA NFT World", "KAKAXA": "KAKAXA", "KAKI": "Doge KaKi", @@ -7532,6 +7821,7 @@ "KANGAL": "Kangal", "KANGO": "KANGO", "KAP": "KAP Games", + "KAPPA": "Kappa", "KAPPY": "Kappy", "KAPU": "Kapu", "KAR": "Karura", @@ -7543,6 +7833,7 @@ "KARMAD": "Karma DAO", "KARRAT": "KARRAT", "KART": "Dragon Kart", + "KARUM": "Karum Coin", "KAS": "Kaspa", "KASBOT": "KASBOT THE GUARDIAN OF 𐤊ASPA", "KASHIN": "KASHIN", @@ -7561,7 +7852,6 @@ "KAVA": "Kava", "KAWA": "Kawakami Inu", "KAYI": "Kayı", - "KB3": "B3Coin", "KBC": "Karatgold coin", "KBD": "Kyberdyne", "KBOND": "Klondike Bond", @@ -7597,7 +7887,9 @@ "KEEP": "Keep Network", "KEES": "Korea Entertainment Education & Shopping", "KEI": "Keisuke Inu", + "KEIRA": "Keira", "KEK": "KekCoin", + "KEKARMY": "Kek", "KEKE": "KEK", "KEKEC": "THE BALKAN DWARF", "KEKIUS": "Kekius Maximus", @@ -7653,7 +7945,8 @@ "KICKS": "GetKicks", "KIDEN": "RoboKiden", "KIF": "KittenFinance", - "KIKI": "Kiki Flaminki", + "KIKI": "KIKICat", + "KIKIF": "Kiki Flaminki", "KIKO": "KIKO", "KILLA": "The Bitcoin Killa", "KILLER": "Fat Cat Killer", @@ -7662,6 +7955,7 @@ "KIM": "King Money", "KIMBO": "Kimbo", "KIMCHI": "KIMCHI.finance", + "KIMIAI": "Kimi AI Agent", "KIN": "Kin", "KIND": "Kind Ads", "KINE": "Kine Protocol", @@ -7692,6 +7986,7 @@ "KINK": "Kinka", "KINT": "Kintsugi", "KINU": "Kragger Inu", + "KIP": "KIP", "KIRA": "Kira the Injective Cat", "KIRBY": "Kirby Inu", "KIRBYCEO": "Kirby CEO", @@ -7772,6 +8067,7 @@ "KODACHI": "Kodachi Token", "KOGE": "BNB48 Club Token", "KOGECOIN": "KogeCoin.io", + "KOGIN": "Kogin by Virtuals", "KOI": "Koi", "KOII": "Koii", "KOIN": "Koinos", @@ -7919,6 +8215,7 @@ "KZEN": "Kaizen", "L": "L inu", "L1": "Lamina1", + "L1X": "Layer One X", "L2": "Leverj Gluon", "L2DAO": "Layer2DAO", "L3": "Layer3", @@ -7959,6 +8256,7 @@ "LANDV1": "Landshare v1", "LANDW": "LandWolf", "LANDWOLF": "LANDWOLF", + "LANDWOLFAVAX": "LANDWOLF (AVAX)", "LANDWOLFETH": "Landwolf", "LANDWU": "LandWu", "LANE": "LaneAxis", @@ -7989,7 +8287,7 @@ "LAWO": "Law Of Attraction", "LAX": "LAPO", "LAY3R": "AutoLayer", - "LAYER": "UniLayer", + "LAYER": "Solayer", "LAZ": "Lazarus", "LAZIO": "Lazio Fan Token", "LAZYCAT": "LAZYCAT", @@ -8020,6 +8318,7 @@ "LCR": "Lucro", "LCRO": "Liquid CRO", "LCS": "LocalCoinSwap", + "LCSH": "LC SHIB", "LCSN": "Lacostoken", "LCT": "LendConnect", "LCWP": "LiteCoinW Plus", @@ -8047,7 +8346,9 @@ "LEG": "Legia Warsaw Fan Token", "LEGEND": "Legend", "LEGION": "LEGION", + "LEGIT": "LEGIT", "LEGO": "Lego Coin", + "LEI": "Leia Games", "LEIA": "Leia", "LELE": "Lelecoin", "LEMC": "LemonChain", @@ -8076,6 +8377,7 @@ "LESLIE": "Leslie", "LESS": "Less Network", "LESSF": "LessFnGas", + "LESTE": "LESTER by Virtuals", "LESTER": "Litecoin Mascot", "LET": "LinkEye", "LETIT": "Letit", @@ -8093,7 +8395,7 @@ "LEXI": "LEXIT", "LEZ": "Peoplez", "LEZGI": "LEZGI Token", - "LF": "Linkflow", + "LF": "LF", "LFC": "BigLifeCoin", "LFDOG": "lifedog", "LFG": "Gamerse", @@ -8108,7 +8410,9 @@ "LGC": "LiveGreen Coin", "LGCY": "LGCY Network", "LGD": "Legends Cryptocurrency", + "LGG": "Let's Go Gambling", "LGNDX": "LegendX", + "LGNS": "Longinus", "LGO": "Legolas Exchange", "LGOLD": "LYFE GOLD", "LGOT": "LGO Token", @@ -8124,7 +8428,7 @@ "LIBERO": "Libero Financial", "LIBERTA": "The Libertarian Dog", "LIBFX": "Libfx", - "LIBRA": "0L Network", + "LIBRA": "Libra", "LIBRAP": "Libra Protocol", "LIBRE": "Libre", "LIC": "Ligercoin", @@ -8153,6 +8457,7 @@ "LILA": "LiquidLayer", "LILB": "Lil Brett", "LILFLOKI": "Lil Floki", + "LILO": "Lilo", "LILPUMP": "lilpump", "LILY": "LILY-The Gold Digger", "LIMBO": "Limbo", @@ -8221,6 +8526,7 @@ "LKY": "LuckyCoin", "LL": "LightLink", "LLAND": "Lyfe Land", + "LLD": "Liberland dollar", "LLG": "Loligo", "LLION": "Lydian Lion", "LLM": "Large Language Model Based", @@ -8272,6 +8578,7 @@ "LOE": "Legends of Elysium", "LOF": "Land of Fantasy", "LOFI": "LOFI", + "LOFIBUZZ": "LOFI", "LOG": "Wood Coin", "LOGO": "LOGOS", "LOGX": "LogX Network", @@ -8395,6 +8702,7 @@ "LTO": "LTO Network", "LTOV1": "LTO Network v1", "LTOV2": "LTO Network v2", + "LTP": "Listapie", "LTPC": "Lightpaycoin", "LTR": "LogiTron", "LTRBT": "Little Rabbit", @@ -8518,11 +8826,14 @@ "MAG": "Magnify Cash", "MAGA": "MAGA", "MAGA2024": "MAGA2024", + "MAGA47": "MAGA 47", "MAGAA": "MAGA AGAIN", + "MAGABRO": "M.A.G.A. Bro", "MAGAC": "MAGA CAT", "MAGACA": "MAGA CAT", "MAGACAT": "MAGACAT", "MAGADOGE": "MAGA DOGE", + "MAGAF": "MAGA FRENS", "MAGAHAT": "MAGA Hat", "MAGAIBA": "Magaiba", "MAGAN": "Maganomics On Solana", @@ -8539,6 +8850,7 @@ "MAGICV": "Magicverse", "MAGIK": "Magik Finance", "MAGN": "Magnate Finance", + "MAGNE": "Magnetix", "MAGNET": "Yield Magnet", "MAGNET6900": "MAGNET6900", "MAGNETWORK": "Magnet", @@ -8569,6 +8881,7 @@ "MAND": "Mandala Exchange Token", "MANDALA": "Mandala Exchange Token", "MANDOX": "MandoX", + "MANDY": "MANDY COIN", "MANE": "MANE", "MANEKI": "MANEKI", "MANGA": "Manga Token", @@ -8579,7 +8892,9 @@ "MANT": "Mantle USD", "MANTA": "Manta Network", "MANTLE": "Mantle", + "MANUSAI": "Manus AI Agent", "MANYU": "Little Manyu", + "MANYUDOG": "MANYU", "MAO": "Mao", "MAOW": "MAOW", "MAP": "MAP Protocol", @@ -8655,6 +8970,7 @@ "MAWA": "Kumala Herris", "MAWC": "Magawincat", "MAX": "Matr1x", + "MAXAIAGENT": "MAX", "MAXCOIN": "MaxCoin", "MAXETH": "Max on ETH", "MAXI": "Maximus", @@ -8663,6 +8979,7 @@ "MAXX": "MAXX Finance", "MAY": "Theresa May Coin", "MAYACOIN": "MayaCoin", + "MAYILONG": "Yi long ma", "MAYO": "Mr Mayonnaise the Cat", "MAYP": "Maya Preferred", "MAZC": "MyMazzu", @@ -8762,6 +9079,7 @@ "MDM": "Medium", "MDN": "Modicoin", "MDOGE": "First Dog In Mars", + "MDOGS": "Money Dogs", "MDR": "Mudra MDR", "MDS": "MediShares", "MDT": "Measurable Data Token", @@ -8820,6 +9138,7 @@ "MEM": "Memecoin", "MEMAGX": "Meta Masters Guild Games", "MEMD": "MemeDAO", + "MEMDEX": "Memdex100", "MEME": "Memecoin", "MEMEAI": "Meme Ai", "MEMECUP": "Meme Cup", @@ -8836,6 +9155,7 @@ "MEMESQUAD": "Meme Squad", "MEMET": "MEMETOON", "MEMETIC": "Memetic", + "MEMHASH": "Memhash", "MEMORYCOIN": "MemoryCoin", "MEN": "METAHUB FINANCE", "MENDI": "Mendi Finance", @@ -8854,6 +9174,7 @@ "MERCU": "Merculet", "MERCURY": "Mercury", "MEREDITH": "Taylor Swift's Cat MEREDITH", + "MERG": "Merge Token", "MERGE": "Merge", "MERI": "Merebel", "MERIDIAN": "Meridian Network LOCK", @@ -8870,6 +9191,7 @@ "META": "MetaDAO", "METAA": "META ARENA", "METABOT": "Robot Warriors", + "METABRAW": "Metabrawl", "METAC": "Metacoin", "METACA": "MetaCash", "METACAT": "MetaCat", @@ -8968,6 +9290,7 @@ "MHUNT": "MetaShooter", "MI": "XiaoMiCoin", "MIA": "MiamiCoin", + "MIAO": "MIAOCoin", "MIB": "Mobile Integrated Blockchain", "MIBO": "miBoodle", "MIBR": "MIBR Fan Token", @@ -8981,6 +9304,7 @@ "MIDAI": "Midway AI", "MIDAS": "Midas", "MIDASDOLLAR": "Midas Dollar Share", + "MIDLE": "Midle", "MIDN": "Midnight", "MIDNIGHT": "Midnight", "MIE": "MIE Network", @@ -9034,6 +9358,7 @@ "MINI": "mini", "MINIBNBTIGER": "MiniBNBTiger", "MINID": "Mini Donald", + "MINIDO": "MiniDoge", "MINIDOGE": "MiniDOGE", "MINIFOOTBALL": "Minifootball", "MINIMYRO": "Mini Myro", @@ -9051,6 +9376,7 @@ "MINTCOIN": "MintCoin", "MINTE": "Minter HUB", "MINTME": "MintMe.com Coin", + "MINTO": "The AI Mascot", "MINTYS": "MintySwap", "MINU": "Minu", "MINUTE": "MINUTE Vault (NFTX)", @@ -9070,7 +9396,9 @@ "MISHA": "Vitalik's Dog", "MISHKA": "Mishka Token", "MISS": "MISS", + "MISSK": "Miss Kaka", "MIST": "Mist", + "MISTCOIN": "MistCoin", "MISTE": "Mister Miggles", "MISTRAL": "Mistral AI", "MIT": "Galaxy Blitz", @@ -9147,7 +9475,7 @@ "MNB": "MoneyBag", "MNBR": "MN Bridge", "MNC": "MainCoin", - "MND": "Mound Token", + "MND": "Mind", "MNDCC": "Mondo Community Coin", "MNDE": "Marinade", "MNE": "Minereum", @@ -9224,6 +9552,7 @@ "MOGT": "MOG TRUMP", "MOGU": "Mogu", "MOGUL": "Mogul Productions", + "MOGULV1": "Mogul Productions v1", "MOGUT": "Mogutou", "MOGX": "Mogu", "MOH": "Medal of Honour", @@ -9231,6 +9560,7 @@ "MOIN": "MoinCoin", "MOJI": "Moji", "MOJO": "Mojocoin", + "MOJOB": "Mojo on Base", "MOK": "MocktailSwap", "MOL": "Molecule", "MOLA": "MoonLana", @@ -9242,6 +9572,7 @@ "MOMA": "Mochi Market", "MOMIJI": "MAGA Momiji", "MOMO": "MOMO 2.0", + "MOMO2025": "momo", "MON": "MON Protocol", "MONA": "MonaCoin", "MONAIZE": "Monaize", @@ -9337,6 +9668,7 @@ "MOTHER": "Mother Iggy", "MOTI": "Motion", "MOTO": "Motocoin", + "MOUND": "Mound Token", "MOUTAI": "Moutai", "MOV": "MovieCoin", "MOVD": "MOVE Network", @@ -9352,6 +9684,7 @@ "MOXIE": "Moxie", "MOYA": "MOYA", "MOZ": "Mozik", + "MOZA": "Mozaic", "MP": "Membership Placeholders", "MP3": "MP3", "MPAA": "MPAA", @@ -9376,6 +9709,7 @@ "MQL": "MiraQle", "MQST": "MonsterQuest", "MR": "Meta Ruffy", + "MRB": "MoonRabbits", "MRBASED": "MrBased", "MRBOB": "MR BOB COIN", "MRCH": "MerchDAO", @@ -9393,6 +9727,7 @@ "MRS": "Metars Genesis", "MRSA": "MrsaCoin", "MRSMIGGLES": "Mrs Miggles", + "MRST": "Mars Token", "MRT": "MinersReward", "MRUN": "Metarun", "MRV": "Macroverse", @@ -9440,6 +9775,7 @@ "MTGT": "MTG Token", "MTGX": "Montage Token", "MTH": "Monetha", + "MTHB": "MTHAIBAHT", "MTHD": "Method Finance", "MTHN": "MTH Network", "MTIK": "MatikaToken", @@ -9505,6 +9841,7 @@ "MUSICAI": "MusicAI", "MUSICOIN": "Musicoin", "MUSK": "Musk", + "MUSKAI": "Musk AI Agent", "MUSKMEME": "MUSK MEME", "MUSKVSZUCK": "Cage Match", "MUST": "MUST Protocol", @@ -9536,12 +9873,16 @@ "MWC": "MimbleWimbleCoin", "MWCC": "Metaworld", "MWD": "MEW WOOF DAO", + "MWETH": "Moonwell Flagship ETH (Morpho Vault)", + "MWH": "Melania Wif Hat", "MX": "MX Token", "MXC": "Machine Xchange Coin", "MXD": "Denarius", "MXGP": "MXGP Fan Token", "MXM": "Maximine", + "MXNA": "Machina", "MXNB": "MXNB", + "MXNBC": "Rekt Burgundy by Virtuals", "MXNT": "Tether MXNt", "MXRP": "Monsta XRP", "MXT": "MixTrust", @@ -9582,6 +9923,7 @@ "Medu": "Medusa", "N0031": "nYFI", "N1": "NFTify", + "N3": "Network3", "N3DR": "NeorderDAO ", "N64": "N64", "N7": "Number7", @@ -9639,9 +9981,11 @@ "NAWS": "NAWS.AI", "NAX": "NextDAO", "NAYM": "NAYM", + "NAYUTA": "Nayuta Coin", "NAZ": "NAZDAQ", "NAZA": "NAZA", "NAZAR": "NAZAR PROTOCOL", + "NAZIELON": "NAZI ELON", "NBABSC": "NBA BSC", "NBAI": "Nebula AI", "NBAR": "NOBAR", @@ -9658,7 +10002,7 @@ "NBS": "New BitShares", "NBT": "NanoByte", "NBXC": "Nibble", - "NC": "Nayuta Coin", + "NC": "Nodecoin", "NCA": "NeuroCrypto Ads", "NCASH": "Nucleus Vision", "NCAT": "Neuracat", @@ -9735,6 +10079,7 @@ "NERF": "Neural Radiance Field", "NERO": "Nero Token", "NERVE": "NERVE", + "NES": "Nest AI", "NESS": "Ness LAB", "NEST": "Nest Protocol", "NESTREE": "Nestree", @@ -9752,6 +10097,7 @@ "NETZ": "MainnetZ", "NETZ1": "NETZERO", "NEU": "Neumark", + "NEUR": "neur.sh", "NEURA": "Neurahub", "NEURAL": "NeuralAI", "NEURALINK": "Neuralink", @@ -9770,6 +10116,7 @@ "NEWB": "Newbium", "NEWBV1": "Newbium v1", "NEWC": "New Cat", + "NEWERASOL": "New Era AI", "NEWG": "NewGold", "NEWM": "NEWM", "NEWO": "New Order", @@ -9784,6 +10131,7 @@ "NEXAI": "NexAI", "NEXBOX": "NexBox", "NEXBT": "Native XBTPro Exchange Token", + "NEXEA": "NEXEA", "NEXG": "NexGami", "NEXM": "Nexum", "NEXMI": "NexMillionaires", @@ -9795,7 +10143,8 @@ "NEXTV1": "Connext Network", "NEXUSAI": "NexusAI", "NEXXO": "Nexxo", - "NEZHA": "NezhaToken", + "NEZHA": "NEZHA", + "NEZHATOKEN": "NezhaToken", "NFAI": "Not Financial Advice", "NFAIV1": "Not Financial Advice v1", "NFCR": "NFCore", @@ -9840,6 +10189,7 @@ "NHI": "Non Human Intelligence", "NHT": "Neighbourhoods", "NIAO": "NIAO", + "NIBBLES": "Nibbles", "NIBI": "Nibiru Chain", "NIC": "NewInvestCoin", "NICE": "Nice", @@ -9860,8 +10210,10 @@ "NIKO": "NikolAI", "NILE": "Nile", "NIM": "Nimiq", + "NIMBUS": "Nimbus AI", "NIMFA": "Nimfamoney", "NIN": "Next Innovation", + "NINA": "NINA", "NINJ": "Ninja Protocol", "NINJA": "Dog Wif Nunchucks", "NINJACAT": "NinjaCat", @@ -9883,6 +10235,7 @@ "NITO": "Nitroken", "NITRO": "Nitro League", "NITROE": "NitroEX", + "NITROFROG": "Nitro", "NITROG": "Nitro", "NIX": "NIX", "NIZA": "Niza Global", @@ -9922,7 +10275,7 @@ "NOBL": "NobleCoin", "NOBS": "No BS Crypto", "NOCHILL": "AVAX HAS NO CHILL", - "NODE": "Whole Network", + "NODE": "NodelyAI", "NODESYNAPSE": "NodeSynapse", "NODIDDY": "NODIDDY", "NODIS": "Nodis", @@ -9945,9 +10298,11 @@ "NOODS": "Noods", "NOOOO": "NOOOO", "NOOT": "NOOT (Ordinals)", + "NOPAIN": "No Pain No Gain", "NOR": "Noir", "NORA": "SnowCrash Token", "NORD": "Nord Finance", + "NORDO": "Greenland Rare Bear", "NORMIE": "Normie", "NORMUS": "NORMUS", "NOS": "Nosana", @@ -10060,6 +10415,7 @@ "NVC": "NovaCoin", "NVDX": "Nodvix", "NVG": "NightVerse Game", + "NVG8": "Navigate", "NVIR": "NvirWorld", "NVL": "Nevula", "NVOY": "Envoy", @@ -10114,11 +10470,13 @@ "OAK": "Acorn Collective", "OAS": "Oasis City", "OASC": "Oasis City", + "OASI": "Oasis Metaverse", "OASIS": "Oasis", "OAT": "OAT Network", "OATH": "OATH Protocol", "OAX": "Oax", "OB1INCH": "1inch (OmniBridge)", + "OBABYTRUMP": "Official Baby Trump", "OBEMA": "burek obema", "OBI": "Orbofi AI", "OBICOIN": "OBI Real Estate", @@ -10147,6 +10505,7 @@ "OCICAT": "OciCat", "OCL": "Oceanlab", "OCN": "Odyssey", + "OCNEST": "OcNest AI", "OCO": "Owners Casino Online", "OCP": "Omni Consumer Protocols", "OCPR": "OC Protocol", @@ -10157,8 +10516,9 @@ "OCTAVUS": "Octavus Prime", "OCTAX": "OctaX", "OCTI": "Oction", - "OCTO": "OctoFi", + "OCTO": "OctonetAI", "OCTOCOIN": "Octocoin", + "OCTOF": "OctoFi", "OCTOIN": "Octoin Coin", "OCW": "Online Cold Wallet", "OCX": "Original Crypto Coin", @@ -10180,8 +10540,14 @@ "OFCR": "CryptoPolice", "OFE": "Ofero", "OFF": "BlastOff", + "OFFI": "Official Elon Coin", + "OFFIC": "OFFICIAL SIMPSON", + "OFFICI": "OFFICIAL BARRON", + "OFFICIA": "Official Elon Coin", "OFN": "Openfabric AI", + "OFT": "ONFA", "OG": "OG Fan Token", + "OGC": "OGCommunity", "OGCINU": "The OG Cheems Inu", "OGD": "OLYMPIC GAMES DOGE", "OGGIE": "Oggie", @@ -10206,6 +10572,8 @@ "OHNOGG": "OHNHO (ohno.gg)", "OHO": "OHO", "OICOIN": "Osmium Investment Coin", + "OIIAOIIA": "spinning cat", + "OIK": "Space Nation", "OIL": "Oiler", "OILD": "OilWellCoin", "OILX": "OilX Token", @@ -10249,6 +10617,7 @@ "OMD": "OneMillionDollars", "OME": "o-mee", "OMEGA": "OMEGA", + "OMEGAX": "Ome‎gaX He‎alth", "OMG": "OMG Network", "OMGC": "OmiseGO Classic", "OMI": "ECOMI", @@ -10276,6 +10645,7 @@ "ONC": "One Cash", "ONCH": "OnchainPoints.xyz", "ONDO": "Ondo", + "ONDOAI": "Ondo DeFAI", "ONE": "Harmony", "ONES": "OneSwap DAO", "ONET": "ONE Token", @@ -10296,6 +10666,7 @@ "ONS": "One Share", "ONSTON": "Onston", "ONT": "Ontology", + "ONTACT": "OnTact", "ONUS": "ONUS", "ONX": "Onix", "OOE": "OpenOcean", @@ -10350,15 +10721,18 @@ "OPTIG": "Catgirl Optimus", "OPTIM": "Optimus X", "OPTIMOUSE": "Optimouse", + "OPTIO": "Optio", "OPTION": "OptionCoin", "OPU": "Opu Coin", "OPUL": "Opulous", "OPUS": "Opus", "OPV": "OpenLive NFT", "OPXVEVELO": "OpenX Locked Velo", - "ORA": "Oracolxor", + "ORA": "ORA Coin", "ORACLE": "Oracle AI", "ORACLECHAIN": "OracleChain", + "ORACLER": "Oracler", + "ORACOLXOR": "Oracolxor", "ORACUL": "Oracul Ai", "ORAI": "Oraichain Token", "ORAIX": "OraiDEX", @@ -10390,6 +10764,7 @@ "ORGT": "Organic Token", "ORI": "Origami", "ORIGIN": "Origin Foundation", + "ORIGINA": "Original Gangsters", "ORION": "Orion Money", "ORKL": "Orakler", "ORLY": "OrlyCoin", @@ -10425,6 +10800,7 @@ "OSL": "OSL AI", "OSMI": "OSMI", "OSMO": "Osmosis", + "OSOL": "OSOL", "OSQTH": "Opyn Squeeth", "OSS": "OSSChain", "OST": "OST", @@ -10543,6 +10919,7 @@ "PAPI": "Papi", "PAPO": "PAPO NINJA", "PAPPAY": "PAPPAY", + "PAPPLE": "Pineapple", "PAPU": "Papu Token", "PAPUSHA": "Papusha", "PAR": "Parachute", @@ -10571,6 +10948,7 @@ "PASG": "Passage", "PASL": "Pascal Lite", "PASS": "Blockpass", + "PASTERNAK": "Ben Pasternak", "PAT": "PATRON", "PATEK": "Silly Patek", "PATEX": "Patex", @@ -10672,6 +11050,7 @@ "PECL": "PECland", "PED": "PEDRO", "PEDRO": "Pedro The Raccoon", + "PEE": "peecoin", "PEEL": "Meta Apes", "PEENO": "Peeno", "PEEP": "Peepo", @@ -10704,6 +11083,7 @@ "PENGCOIN": "PENG", "PENGU": "Pudgy Penguins", "PENGUI": "Penguiana", + "PENGUIN": "Penguin", "PENGYX": "PengyX", "PENIS": "PenisGrow", "PENJ": "Penjamin Blinkerton", @@ -10755,6 +11135,7 @@ "PEPEMAGA": "Trump Pepe", "PEPEMO": "PepeMo", "PEPEMOON": "PEPEMOON", + "PEPEMUSK": "pepemusk", "PEPEOFSOL": "Pepe of Solana", "PEPEPI": "PEPEPi", "PEPER": "Baby Pepe", @@ -10836,6 +11217,7 @@ "PHAE": "Phaeton", "PHALA": "Phalanx", "PHAME": "PHAME", + "PHAR": "Pharaoh", "PHAUNTEM": "Phauntem", "PHB": "Phoenix Global [v2]", "PHBD": "Polygon HBD", @@ -10860,21 +11242,25 @@ "PHRYG": "PHRYGES", "PHRYGE": "PHRYGES", "PHRYGES": "The Phryges", + "PHRZ": "Pharaohs", "PHS": "PhilosophersStone", "PHT": "Photon Token", "PHTC": "Photochain", "PHTR": "Phuture", "PHUN": "PHUNWARE", "PHV": "PATHHIVE", - "PI": "Plian", + "PI": "Pi Network", "PIA": "Olympia AI", + "PIAI": "Pi Network AI", "PIAS": "PIAS", "PIB": "Pibble", - "PICA": "PicaArtMoney", + "PICA": "Picasso", + "PICAARTMONEY": "PicaArtMoney", "PICKL": "PICKLE", "PICKLE": "Pickle Finance", "PICO": "PicoGo", "PICOLO": "PICOLO", + "PIDOGE": "Pi Network Doge", "PIE": "Persistent Information Exchange", "PIERRE": "sacré bleu", "PIF": "Pepe Wif Hat", @@ -10893,12 +11279,15 @@ "PIKAM": "Pikamoon", "PIKE": "Pike Token", "PIKO": "Pinnako", + "PILLAR": "PillarFi", "PILOT": "Unipilot", "PIM": "PIM", - "PIN": "Pin", + "PIN": "PinLink", + "PINCHAIN": "Pin", "PINCHI": "Da Pinchi", "PINE": "Pine", "PINETWORKDEFI": "Pi Network DeFi", + "PINEYE": "PinEye", "PING": "CryptoPing", "PINK": "PINK - The Panther", "PINKCOIN": "PinkCoin", @@ -10929,6 +11318,7 @@ "PIST": "Pist Trust", "PIT": "Pitbull", "PITCH": "PITCH", + "PIUU": "PIXIU", "PIVN": "PIVN", "PIVX": "Private Instant Verified Transaction", "PIX": "Lampix", @@ -10987,6 +11377,7 @@ "PLG": "Pledgecamp", "PLGR": "Pledge Finance", "PLI": "Plugin", + "PLIAN": "Plian", "PLINK": "Chainlink (Polygon Portal)", "PLM": "Plasmonics", "PLMC": "Polimec", @@ -11076,6 +11467,7 @@ "POK": "Pokmonsters", "POKEGROK": "PokeGROK", "POKEM": "Pokemonio", + "POKEMO": "Pokemon", "POKEMON": "Pokemon", "POKER": "PokerCoin", "POKERFI": "PokerFi", @@ -11095,6 +11487,7 @@ "POLL": "Pollchain", "POLLUK": "Jasse Polluk", "POLLUX": "Pollux Coin", + "POLLY": "Polynetica", "POLNX": "eToro Polish Zloty", "POLO": "NftyPlay", "POLS": "Polkastarter", @@ -11141,6 +11534,7 @@ "POPE": "PopPepe", "POPECOIN": "Popecoin", "POPEPE": "POPEPE", + "POPG": "POPG", "POPGOAT": "Goatseus Poppimus", "POPK": "POPKON", "POPO": "popo", @@ -11172,6 +11566,8 @@ "POTATO": "Potato", "POTS": "Moonpot", "POTTER": "POTTER", + "POTUS": "President Trump", + "POTUS47": "Trump Coin", "POU": "Pou", "POUPE": "Poupe", "POUW": "Pouwifhat", @@ -11320,6 +11716,7 @@ "PTD": "Pilot", "PTERIA": "Pteria", "PTF": "PowerTrade Fuel", + "PTGC": "The Grays Currency", "PTH": "PlasticHero", "PTI": "Paytomat", "PTM": "Potentiam", @@ -11356,7 +11753,9 @@ "PUMP": "PUMP", "PUMPBTC": "pumpBTC", "PUMPFUNBAN": "Pump Fun Ban", + "PUMPIT": "BOGDANOFF", "PUMPTRUMP": "PUMP TRUMP", + "PUMPY": "WOW MOON LAMBO PUMPPPPPPY", "PUN": "Punkko", "PUNCH": "PUNCHWORD", "PUNDIX": "Pundi X", @@ -11378,7 +11777,9 @@ "PURA": "Pura", "PURE": "Puriever", "PUREALT": "Pure", + "PURP": "Purple Platform io", "PURPE": "Purple Pepe", + "PURPLEBTC": "Purple Bitcoin", "PURR": "Purr", "PURRC": "Purrcoin", "PURSE": "Pundi X PURSE", @@ -11391,6 +11792,7 @@ "PUSSY": "Pussy Financial", "PUSSYINBIO": "Pussy In Bio", "PUT": "PutinCoin", + "PUTIN": "Putin Meme", "PUUSH": "puush da button", "PUX": "pukkamex", "PVC": "PVC Meta", @@ -11400,8 +11802,10 @@ "PVU": "Plant vs Undead Token", "PWAR": "PolkaWar", "PWC": "PixelWorldCoin", + "PWEASE": "Pwease", "PWH": "pepewifhat", "PWINGS": "JetSwap pWings", + "PWOG": "Purple Fwog", "PWON": "Personal Wager", "PWR": "MaxxChain", "PWRC": "PWR Coin", @@ -11548,6 +11952,7 @@ "QWAN": "The QWAN", "QWARK": "Qwark", "QWC": "Qwertycoin", + "QWEN": "Qwen AI", "QWLA": "Qawalla", "QWT": "QoWatt", "QXC": "QuantumXC", @@ -11578,7 +11983,7 @@ "RAFT": "Raft", "RAGDOLL": "Ragdoll", "RAGE": "Rage Fan", - "RAI": "Rai Reflex Index", + "RAI": "Reploy", "RAID": "Raid Token", "RAIDER": "Crypto Raiders", "RAIF": "RAI Finance", @@ -11588,6 +11993,7 @@ "RAINC": "RainCheck", "RAINCO": "Rain Coin", "RAINI": "Rainicorn", + "RAIREFLEX": "Rai Reflex Index", "RAISE": "Raise Token", "RAIT": "Rabbitgame", "RAIZER": "RAIZER", @@ -11597,7 +12003,9 @@ "RALLY": "Trump Rally", "RAM": "Ramifi Protocol", "RAMA": "Ramestta", + "RAME": "Ramen", "RAMEN": "RamenSwap", + "RAMON": "Ramon", "RAMP": "RAMP", "RANKER": "RankerDao", "RAP": "Philosoraptor", @@ -11617,6 +12025,7 @@ "RAVELOUS": "Ravelous", "RAVEN": "Raven Protocol", "RAVENCOINC": "Ravencoin Classic", + "RAWDOG": "RawDog", "RAWG": "RAWG", "RAY": "Raydium", "RAYS": "Rays Network", @@ -11680,12 +12089,17 @@ "RDX": "Redux Protocol", "REA": "Realisto", "REACH": "/Reach", + "REACT": "Reactive Network", "REAL": "RealLink", + "REALESTATE": "RealEstate", "REALM": "Realm", "REALMS": "Realms of Ethernity", "REALP": "Real Pepe", "REALPLATFORM": "REAL", "REALTRACT": "RealTract", + "REALUSD": "Real USD", + "REALUSDV1": "Real USD v1", + "REALUSDV2": "Real USD v2", "REALY": "Realy Metaverse", "REAP": "ReapChain", "REAPER": "Grim Finance", @@ -11710,6 +12124,7 @@ "REDLC": "Redlight Chain", "REDLUNA": "Redluna", "REDN": "Reden", + "REDNOTE": "RedNote Xiaohongshu", "REDO": "Resistance Dog", "REDP": "Red Ponzi Gud", "REDPEPE": "Red Pepe", @@ -11725,7 +12140,9 @@ "REFLECTO": "Reflecto", "REFTOKEN": "RefToken", "REFUND": "Refund", + "REG": "RealToken Ecosystem Governance", "REGALCOIN": "Regalcoin", + "REGE": "Regent of the North Winds", "REGEN": "Regen Network", "REGENT": "REGENT COIN", "REGI": "Resistance Girl", @@ -11735,10 +12152,12 @@ "REIGN": "Reign of Terror", "REINDEER": "Reindeer", "REKT": "REKT", - "REKT2": "REKT 2.0", + "REKTV2": "REKT 2.0", + "REKTV3": "REKT v3 (rekt.game)", "REL": "Reliance", "RELAY": "Relay Token", "RELI": "Relite Finance", + "RELIGN": "RELIGN", "RELOADED": "Doge Reloaded", "RELVT": "Relevant", "REM": "REMME", @@ -11746,6 +12165,7 @@ "REME": "REME-Coin", "REMILIA": " Remilia", "REMIT": "BlockRemit", + "REMMETA": "Real Estate Metaverse", "REN": "REN", "RENA": "Warena", "RENBTC": "renBTC", @@ -11794,7 +12214,9 @@ "REVV": "REVV", "REW": "Review.Network", "REWARD": "Rewardable", + "REWARDS": "Solana Rewards", "REX": "Imbrex", + "REXBT": "rexbt by VIRTUALS", "REXHAT": "rexwifhat", "REZ": "Renzo", "RF": "Raido Financial", @@ -11831,17 +12253,20 @@ "RIC": "Riecoin", "RICE": "RiceFarm", "RICECOIN": "RiceCoin", - "RICH": "Richie", + "RICHIE": "Richie2.0", + "RICHIEV1": "Richie", "RICHOFME": "Rich Of Memes", "RICHR": "RichRabbit", "RICK": "Infinite Ricks", "RICKMORTY": "Rick And Morty", "RIDE": "Holoride", + "RIDECHAIN": "Ride Chain Coin", "RIDEMY": "Ride My Car", "RIF": "RIF Token", "RIF3": "MetaTariffv3", "RIFA": "Rifampicin", "RIFI": "Rikkei Finance", + "RIFT": "RIFT AI", "RIGEL": "Rigel Finance", "RIK": "RIKEZA", "RIL": "Rilcoin", @@ -11875,6 +12300,7 @@ "RITZ": "Ritz.Game", "RIVUS": "RivusDAO", "RIYA": "Etheriya", + "RIZ": "Rivalz Network", "RIZE": "Rizespor Token", "RIZO": "HahaYes", "RIZOLOL": "Rizo", @@ -11918,10 +12344,12 @@ "RNTB": "BitRent", "RNX": "ROONEX", "ROAD": "ROAD", + "ROAM": "Roam Token", "ROAR": "Alpha DEX", "ROARINGCAT": "Roaring Kitty", "ROB": "ROB", "ROBET": "RoBet", + "ROBI": "Robin Rug", "ROBIN": "Robin of Da Hood", "ROBINH": "ROBIN HOOD", "ROBO": "RoboHero", @@ -11964,6 +12392,9 @@ "ROOT": "The Root Network", "ROOTCOIN": "RootCoin", "ROOTS": "RootProject", + "ROP": "Redemption Of Pets", + "ROPE": "Rope Token", + "ROPELOL": "Rope", "ROPIRITO": "Ropirito", "ROS": "ROS Coin", "ROSA": "Rosa Inu", @@ -11975,6 +12406,7 @@ "ROSX": "Roseon", "ROT": "Rotten", "ROTTY": "ROTTYCOIN", + "ROUGE": "Rouge Studio", "ROUND": "RoundCoin", "ROUP": "Roup (Ordinals)", "ROUSH": "Roush Fenway Racing Fan Token", @@ -12101,6 +12533,7 @@ "RXD": "Radiant", "RXO": "RocketXRP Official", "RXT": "RIMAUNANGIS", + "RYAN": "OFFICIAL RYAN", "RYC": "RoyalCoin", "RYCN": "RoyalCoin 2.0", "RYD": "RYderOSHI", @@ -12112,6 +12545,7 @@ "RYU": "The Blue Dragon", "RYZ": "Anryze", "RZR": "RazorCoin", + "RZUSD": "RZUSD", "RedFlokiCEO": "Red Floki CEO", "S": "Sonic Labs", "S2K": "Sports 2K75", @@ -12119,6 +12553,7 @@ "S4F": "S4FE", "S8C": "S88 Coin", "SA": "Superalgos", + "SAAS": "SaaSGo", "SABAI": "Sabai Protocol", "SABLE": "Sable Finance", "SABR": "SABR Coin", @@ -12380,7 +12815,7 @@ "SEN": "Sentaro", "SENATE": "SENATE", "SENC": "Sentinel Chain", - "SEND": "Social Send", + "SEND": "Suilend", "SENDOR": "Sendor", "SENK": "Senk", "SENNO": "SENNO", @@ -12401,6 +12836,7 @@ "SEPA": "Secure Pad", "SEQ": "Sequence", "SER": "Secretum", + "SERAPH": "Seraph", "SERG": "Seiren Games Network", "SERO": "Super Zero", "SERP": "Shibarium Perpetuals", @@ -12477,6 +12913,7 @@ "SHARK": "Sharky", "SHARKC": "Shark Cat", "SHARKI": "Sharki", + "SHARKYSH": "Sharky Sharkx", "SHARP": "Sharp", "SHARPE": "Sharpe Capital", "SHAUN": "SHAUN INU", @@ -12484,6 +12921,7 @@ "SHC": "School Hack Coin", "SHD": "ShardingDAO", "SHDW": "Shadow Token", + "SHDX": "Shido DEX", "SHE": "Shine Chain", "SHEB": "SHEBOSHIS", "SHEEESH": "Secret Gem", @@ -12491,7 +12929,8 @@ "SHEESHA": "Sheesha Finance", "SHEGEN": "Aiwithdaddyissues", "SHEI": "SheikhSolana", - "SHELL": "Shell Token", + "SHELL": "MyShell", + "SHELLTOKEN": "Shell Token", "SHEN": "Shen", "SHEPE": "Shiba V Pepe", "SHERA": "Shera Tokens", @@ -12515,6 +12954,7 @@ "SHIBAMOM": "Shiba Mom", "SHIBAR": "Shibarium Name Service", "SHIBARMY": "Shib Army", + "SHIBAW": "Shiba $Wing", "SHIBAY": "Shiba Inu Pay", "SHIBAZILLA": "ShibaZilla2.0", "SHIBCAT": "SHIBCAT", @@ -12557,6 +12997,7 @@ "SHIP": "ShipChain", "SHIR": "SHIRO", "SHIRO": "Shiro Neko", + "SHIROSOL": "Shiro Neko (shirosol.online)", "SHIRYOINU": "Shiryo-Inu", "SHISHA": "Shisha Coin", "SHIT": "I will poop it NFT", @@ -12570,7 +13011,8 @@ "SHO": "Showcase Token", "SHOE": "ShoeFy", "SHOG": "SHOG", - "SHOGGOTH": "Shoggoth", + "SHOGGOTH": "Shoggoth (shoggoth.monster)", + "SHOGGOTHAI": "Shoggoth", "SHOKI": "Shoki", "SHON": "ShonToken", "SHOOT": "Mars Battle", @@ -12598,6 +13040,7 @@ "SHUFFLE": "SHUFFLE!", "SHVR": "Shivers", "SHX": "Stronghold Token", + "SHY": "Shytoshi Kusama", "SHYTCOIN": "ShytCoin", "SI": "Siren", "SIACLASSIC": "SiaClassic", @@ -12606,6 +13049,7 @@ "SIC": "Swisscoin", "SID": "Sid", "SIDE": "Side.xyz", + "SIDELINED": "Sidelined?", "SIDESHIFT": "SideShift Token", "SIDUS": "Sidus", "SIERRA": "Sierracoin", @@ -12631,6 +13075,7 @@ "SILVA": "Silva Token", "SILVER": "SILVER", "SILVERKRC": "Silver KRC-20", + "SILVERNOV": "Silvernova Token", "SILVERSTAND": "Silver Standard", "SILVERWAY": "Silverway", "SIM": "Simpson", @@ -12660,6 +13105,7 @@ "SIPHER": "Sipher", "SIPHON": "Siphon Life Spell", "SIR": "Sir", + "SIREN": "siren", "SIRIUS": "first reply", "SIS": "Symbiosis Finance", "SISA": "Strategic Investments in Significant Areas", @@ -12670,11 +13116,13 @@ "SIUUU": "Crustieno Renaldo", "SIV": "Sivasspor Token", "SIX": "SIX Network", + "SIXP": "Sixpack Miner", "SIXPACK": "SIXPACK", "SIZ": "Sizlux", "SIZE": "SIZE", "SJCX": "StorjCoin", "SKAI": "Skillful AI", + "SKAIN": "SKAINET", "SKB": "SkullBuzz", "SKBDI": "Skibidi Toilet", "SKC": "Skeincoin", @@ -12692,7 +13140,9 @@ "SKIN": "Skincoin", "SKING": "Solo King", "SKINS": "Coins & Skins", + "SKINUT": "Skimask Pnut", "SKIPUP": "SKI MASK PUP", + "SKITTEN": "Ski Mask Kitten", "SKL": "SKALE Network", "SKLAY": "sKLAY", "SKM": "Skrumble Network", @@ -12721,7 +13171,7 @@ "SLAP": "CatSlap", "SLAVI": "Slavi Coin", "SLB": "Solberg", - "SLC": "Solice", + "SLC": "Silencio", "SLCL": "Solcial", "SLEEP": "Sleep Ecosystem", "SLEEPEE": "SleepFuture", @@ -12755,7 +13205,7 @@ "SLRS": "Solrise Finance", "SLS": "SaluS", "SLST": "SmartLands", - "SLT": "Social Lending Network", + "SLT": "Salute", "SLUGDENG": "SLUG DENG", "SLUMBO": "SLUMBO", "SLVX": "eToro Silver", @@ -12828,7 +13278,9 @@ "SNAI": "SwarmNode.ai", "SNAIL": "SnailBrook", "SNAKE": "snake", + "SNAKEMOON": "Snakemoon", "SNAKES": "Snakes Game", + "SNAKT": "Sna-King Trump", "SNAP": "SnapEx", "SNAPCAT": "Snapcat", "SNB": "SynchroBitcoin", @@ -12855,6 +13307,7 @@ "SNM": "SONM", "SNMT": "Satoshi Nakamoto Token", "SNN": "SeChain", + "SNO": "Snow Leopard", "SNOB": "Snowball", "SNOLEX": "Snolex", "SNOOP": "SnoopDAO", @@ -12892,6 +13345,8 @@ "SOCC": "SocialCoin", "SOCCER": "SoccerInu", "SOCIAL": "Phavercoin", + "SOCIALLT": "Social Lending Network", + "SOCIALSEND": "Social Send", "SOCKS": "Unisocks", "SOCOLA": "SOCOLA INU", "SODA": "SODA Coin", @@ -12917,6 +13372,7 @@ "SOLAN": "Solana Beach", "SOLANAP": "Solana Poker", "SOLANAS": "Solana Swap", + "SOLANATREASURY": "Solana Treasury Machine", "SOLAPE": "SolAPE Token", "SOLAR": "Solar", "SOLARA": "Solara", @@ -12938,8 +13394,10 @@ "SOLETF": "SOL ETF", "SOLEX": "Solex Launchpad", "SOLFI": "SoliDefi", + "SOLFUN": "SolFun", "SOLGOAT": "SOLGOAT", "SOLGUN": "Solgun", + "SOLIC": "Solice", "SOLID": "Solidified", "SOLIDSEX": "SOLIDsex: Tokenized veSOLID", "SOLITO": "SOLITO", @@ -12967,6 +13425,8 @@ "SOLVBTC": "Solv Protocol SolvBTC", "SOLVBTCBBN": "Solv Protocol SolvBTC.BBN", "SOLVBTCCORE": "Solv Protocol SolvBTC.CORE", + "SOLVBTCENA": "SolvBTC Ethena", + "SOLVBTCJUP": "SolvBTC Jupiter", "SOLVE": "SOLVE", "SOLWIF": "Solwif", "SOLX": "SolarX", @@ -12977,14 +13437,13 @@ "SOM": "Souls of Meta", "SOMA": "Soma", "SOMM": "Sommelier", - "SOMNIUM": "Somnium Space CUBEs", "SOMPS": "SompsOnKas", "SON": "Simone", "SONAR": "SonarWatch", "SONG": "Song Coin", "SONGOKU": "SONGOKU", - "SONIC": "Sonic", "SONICO": "Sonic", + "SONICSONIC": "Sonic", "SONICWIF": "SonicWifHat", "SONNE": "Sonne Finance", "SONOF": "Son of Solana", @@ -13002,6 +13461,7 @@ "SORAI": "Sora AI", "SORAPORN": "Sora Porn", "SOSNOVKINO": "Sosnovkino", + "SOSO": "SoSoValue", "SOSWAP": "Solana Swap", "SOT": "Soccer Crypto", "SOTA": "SOTA Finance", @@ -13025,6 +13485,7 @@ "SPACE": "Spacelens", "SPACECOIN": "SpaceCoin", "SPACED": "SPACE DRAGON", + "SPACEM": "Spacem Token", "SPACEPI": "SpacePi", "SPAD": "SolPad", "SPAI": "Starship AI", @@ -13111,6 +13572,7 @@ "SPRING": "Spring", "SPRITZMOON": "SpritzMoon Crypto Token", "SPRKL": "Sparkle Loyalty", + "SPROUT": "Sprout", "SPRT": "Sportium", "SPRTS": "Sprouts", "SPRTZ": "SpritzCoin", @@ -13173,6 +13635,7 @@ "SSD": "Sonic Screw Driver Coin", "SSDX": "SpunkySDX", "SSE": "Soroosh Smart Ecosystem", + "SSEV1": "Soroosh Smart Ecosystem v1", "SSG": "Surviving Soldiers", "SSGT": "Safeswap", "SSH": "StreamSpace", @@ -13181,6 +13644,7 @@ "SSLX": "StarSlax", "SSNC": "SatoshiSync", "SSOL": "Solayer SOL", + "SSR": "SOL Strategic Reserve", "SSS": "StarSharks", "SSSSS": "Snake wif Hat", "SST": "SIMBA Storage Token", @@ -13209,10 +13673,12 @@ "STANDARD": "Stakeborg DAO", "STAPT": "Ditto Staked Aptos", "STAR": "FileStar", + "STAR10": "Ronaldinho Coin", "STARAMBA": "Staramba", "STARBASE": "Starbase", "STARC": "StarChain", "STARDOGE": "StarDOGE", + "STARGATEAI": "Stargate AI Agent", "STARL": "StarLink", "STARLAUNCH": "StarLaunch", "STARLY": "Starly", @@ -13280,6 +13746,7 @@ "STIMA": "STIMA", "STING": "Sting", "STINJ": "Stride Staked INJ", + "STITCH": "Stitch", "STIX": "STIX", "STJUNO": "Stride Staked JUNO", "STK": "STK Token", @@ -13301,6 +13768,7 @@ "STNK": "Stonks", "STO": "Save The Ocean", "STOC": "STO Cash", + "STOCK": "Digital Asset Stockpile", "STOG": "Stooges", "STOGE": "Stoner Doge Finance", "STOIC": "stoicDAO", @@ -13363,6 +13831,7 @@ "STUDENTC": "Student Coin", "STUFF": "STUFF.io", "STUMEE": "Stride Staked UMEE", + "STUPID": "StupidCoin", "STUSDT": "Staked USDT", "STV": "Sativa Coin", "STWEMIX": "Staked WEMIX", @@ -13374,11 +13843,13 @@ "STZETA": "ZetaEarn", "STZU": "Shihtzu Exchange Token", "SU": "Smol Su", + "SUAI": "SuiAI", "SUB": "Subsocial", "SUBAWU": "Subawu Token", "SUBF": "Super Best Friends", "SUBS": "Substratum Network", "SUCR": "Sucre", + "SUD": "Sudo Labs", "SUDO": "sudoswap", "SUGAR": "Sugar Exchange", "SUI": "Sui", @@ -13391,6 +13862,7 @@ "SUIMAN": "Suiman", "SUIMON": "Sui Monster", "SUIP": "SuiPad", + "SUIRWA": "Sui RWA", "SUISHIB": "SuiShiba", "SUITE": "Suite", "SUKI": "SUKI", @@ -13470,7 +13942,8 @@ "SWAGT": "Swag Token", "SWAI": "Safe Water AI", "SWAMP": "Swampy", - "SWAN": "Black Swan", + "SWAN": "Swan Chain", + "SWANSOL": "Black Swan", "SWAP": "Trustswap", "SWAPP": "SWAPP Protocol", "SWAPZ": "SWAPZ.app", @@ -13516,6 +13989,7 @@ "SWPR": "Swapr", "SWPRS": "Maid Sweepers", "SWRV": "Swerve", + "SWRX": "SwissRx Coin", "SWT": "Swarm City Token", "SWTH": "Carbon", "SWTS": "SWEETS", @@ -13540,6 +14014,7 @@ "SYLO": "Sylo", "SYLV": "Sylvester", "SYM": "SymVerse", + "SYMM": "Symmio", "SYMP": "Sympson AI", "SYN": "Synapse", "SYNC": "Syncus", @@ -13601,6 +14076,7 @@ "TANUKI": "Tanuki", "TANUPAD": "Tanuki Launchpad", "TAO": "Bittensor", + "TAOBOT": "tao.bot", "TAONU": "TAO INU", "TAOP": "TaoPad", "TAOTOOLS": "TAOTools", @@ -13608,6 +14084,7 @@ "TAPC": "Tap Coin", "TAPPINGCOIN": "TappingCoin", "TAPROOT": "Taproot Exchange", + "TAPS": "TapSwap", "TAPT": "Tortuga Staked Aptos", "TARA": "Taraxa", "TARAL": "TARALITY", @@ -13631,6 +14108,7 @@ "TAUR": "Marnotaur", "TAVA": "ALTAVA", "TAX": "MetaToll", + "TAXAD": "TAXAD", "TAXI": "Robotaxi", "TAXLESSTRUMP": "MAGA TAXLESS", "TBAC": "BlockAura", @@ -13647,6 +14125,7 @@ "TBFT": "Türkiye Basketbol Federasyon Token", "TBIS": "TBIS token", "TBL": "Tombola", + "TBR": "Tuebor", "TBRIDGE": "tBridge Token", "TBT": "T-BOT", "TBTC": "tBTC", @@ -13691,6 +14170,7 @@ "TEC": "TeCoin", "TECAR": "Tesla Cars", "TECH": "TechCoin", + "TECK": "Technet", "TECRA": "TecraCoin", "TED": "TED", "TEDDY": "Teddy Doge v2", @@ -13702,6 +14182,7 @@ "TEL": "Telcoin", "TELE": "Miracle Tele", "TELEBTC": "teleBTC", + "TELEPORT": "Teleport System Token", "TELL": "Tellurion", "TELLER": "Teller", "TELO": "Telo Meme Coin", @@ -13749,6 +14230,7 @@ "TETU": "TETU", "TEVA": "Tevaera", "TEW": "Trump in a memes world", + "TEX": "Terrax", "TF47": "Trump Force 47", "TFBX": "Truefeedback Token", "TFC": "The Freedom Coin", @@ -13772,6 +14254,7 @@ "THAVAGE": "Mike Tython", "THC": "The Hempcoin", "THD": "Trump Harris Debate", + "THE369": "The 369 code", "THE9": "THE9", "THEAICOIN": "AI", "THEB": "The Boys Club", @@ -13781,7 +14264,9 @@ "THECAT": "THECAT", "THECITADEL": "The Citadel", "THEDAO": "The DAO", + "THEDOGE": "The Dogefather", "THEF": "The Flash Currency", + "THEFACE": "FACE", "THEG": "The GameHub", "THEHARAMBE": "Harambe", "THEM": "The Meta DAO", @@ -13825,6 +14310,7 @@ "TIA": "Celestia", "TIANHE": "Tianhe", "TIC": "TrueInvestmentCoin", + "TICO": "Tico", "TIDAL": "Tidal Finance", "TIDDIES": "TIDDIES", "TIDE": "Tidalflats", @@ -13841,14 +14327,17 @@ "TIIM": "TriipMiles", "TIK": "ChronoBase", "TIKI": "Tiki Token", + "TIKTOK": "Tiktok", "TIKTOKEN": "TikToken", "TIM": "TIMTIM GAMES", "TIME": "Chrono.tech", + "TIMEFUN": "timefun", "TIMES": "DARKTIMES", "TIMI": "This Is My Iguana", "TIMICOIN": "Timicoin", "TIN": "Token IN", "TINC": "Tiny Coin", + "TIND": "Tinder Swindler", "TINKU": "TinkuCoin", "TINU": "Telegram Inu", "TINY": "TinyBits", @@ -13985,6 +14474,7 @@ "TORII": "Torii Finance", "TORN": "Tornado Cash", "TORO": "Toro Inoue", + "TOROSOL": "Toro", "TORSY": "TORSY", "TOS": "ThingsOperatingSystem", "TOSA": "TosaInu BSC", @@ -14032,6 +14522,7 @@ "TRADEBOT": "TradeBot", "TRADECHAIN": "Trade Chain", "TRADEX": "TradeX AI", + "TRAI": "Trackgood AI", "TRAID": "Traid", "TRAIMP": "TRUMP AI", "TRAIN": "Trump Train", @@ -14056,6 +14547,7 @@ "TRDS": "Traders Token", "TRDT": "Trident", "TREAT": "Treat", + "TREB": "Treble", "TRECENTO": "Trecento Blockchain Capital", "TREE": "Tree", "TREEB": "Retreeb", @@ -14124,6 +14616,7 @@ "TRUMP3": "Trump MP3", "TRUMP47": "47th President of the United States", "TRUMPA": "TRUMP AI", + "TRUMPAI": "Trump Maga AI", "TRUMPAMANIA": "TRUMPAMANIA", "TRUMPARMY": "Trump Army", "TRUMPBASE": "MAGA (magatrumponbase.tech)", @@ -14131,11 +14624,13 @@ "TRUMPC": "TrumpCat", "TRUMPCA": "Trump Card", "TRUMPCAT": "TRUMPCAT", + "TRUMPCATF": "Trump Cat Family", "TRUMPCATS": "Trump Golden Cat", "TRUMPCOIN": "TrumpCoin", "TRUMPDAO": "TRUMP DAO", "TRUMPDO": "TRUMP", "TRUMPDOGE": "Trump Doge", + "TRUMPDOGECOIN": "DOGE", "TRUMPE": "Trump Pepe", "TRUMPEPE": "Trump Pepe", "TRUMPER": "Trump Era", @@ -14149,11 +14644,13 @@ "TRUMPMA": "TRUMP MAGA SUPER", "TRUMPMAGA": "President Trump MAGA", "TRUMPONBASE": "TRUMP ON BASE", + "TRUMPPROJECT": "Trump Project 2025", "TRUMPS": "Trump SOL", "TRUMPSB": "TrumpsBags", "TRUMPSFIGHT": "TrumpsFight", "TRUMPSHIBA": "Trump Shiba", "TRUMPTECH": "Trump Tech", + "TRUMPTESLA": "Trump Tesla", "TRUMPTITANS": "TrumpTitans", "TRUMPVANCE": "Trump Vance 2024", "TRUMPX": "Trump X-Maga", @@ -14161,6 +14658,7 @@ "TRUNK": "Elephant Money", "TRUST": "TrustDAO", "TRUSTNFT": "TrustNFT", + "TRUT": "Truth", "TRUTH": "TruthGPT", "TRUTHFI": "Truthfi", "TRV": "TrustVerse", @@ -14190,7 +14688,9 @@ "TSLT": "Tamkin", "TSN": "Tsunami Exchange Token", "TSR": "Tesra", - "TST": "Teleport System Token", + "TST": "Test", + "TSTAI": "Test AI", + "TSTS": "Test", "TSUBASAUT": "TSUBASA Utility Token", "TSUGT": "Captain Tsubasa", "TSUJI": "Tsutsuji", @@ -14258,6 +14758,7 @@ "TX20": "Trex20", "TXA": "TXA", "TXAG": "tSILVER", + "TXAI": "TrumpX Ai", "TXAU": "tGOLD", "TXBIT": "Txbit Token", "TXC": "TEXITcoin", @@ -14289,7 +14790,8 @@ "UAT": "UltrAlpha", "UB": "UBit Token", "UBA": "Unbox.Art", - "UBC": "Ubcoin", + "UBC": "Universal Basic Compute", + "UBCOIN": "Ubcoin", "UBDN": "UBD Network", "UBEX": "Ubex", "UBI": "Universal Basic Income", @@ -14407,17 +14909,23 @@ "UNIDXV1": "UniDex v1", "UNIE": "Uniswap Protocol Token (Avalanche Bridge)", "UNIETH": "Universal ETH", + "UNIFI": "Unifi", "UNIFY": "Unify", + "UNIL": "UniLayer", "UNIM": "Unicorn Milk", "UNIO": "Unio Coin", "UNIQ": "Uniqredit", "UNIQUE": "Unique One", + "UNISD": "unified Stable Dollar", + "UNISDV1": "uniswap State Dollar", "UNISTAKE": "Unistake", "UNIT": "Universal Currency", "UNIT0": "UNIT0", "UNITARYSTATUS": "UnitaryStatus Dollar", "UNITED": "UnitedCoins", "UNITRADE": "UniTrade", + "UNITREEAI": "Unitree G1 AI", + "UNITREEDOG": "Unitree AI Robot Dog", "UNITS": "GameUnits", "UNITY": "SuperNET", "UNIVRS": "Universe", @@ -14493,6 +15001,7 @@ "USDCPO": "USD Coin (PoS) (Portal from Polygon)", "USDCSO": "USD Coin (Portal from Solana)", "USDD": "USDD", + "USDDV1": "USDD v1", "USDE": "Ethena USDe", "USDEBT": "USDEBT", "USDEX": "eToro US Dollar", @@ -14505,21 +15014,24 @@ "USDL": "Lift Dollar", "USDM": "Mountain Protocol", "USDMA": "USD mars", - "USDN": "Neutrino USD", + "USDN": "Neutral AI", "USDO": "USD Open Dollar", "USDP": "Pax Dollar", "USDPLUS": "Overnight.fi USD+", - "USDQ": "USDQ", - "USDR": "Real USD", + "USDQ": "Quantoz USDQ", + "USDQSTABLE": "USDQ", + "USDR": "StablR USD", "USDS": "Sky Dollar", "USDSB": "USDSB", "USDSTABLY": "StableUSD", "USDT": "Tether", + "USDT0": "USDT0", "USDTBASE": "USDT (Base)", "USDTV": "TetherTV", "USDTZ": "USDtez", "USDU": "Upper Dollar", "USDV": "Verified USD", + "USDW": "USD DWIN", "USDX": "USDX Stablecoin", "USDY": "Ondo US Dollar Yield", "USDZ": "Zedxion USDZ", @@ -14545,6 +15057,7 @@ "USTBL": "Spiko US T-Bills Money Market Fund", "USTC": "TerraClassicUSD", "USTCW": "TerraClassicUSD Wormhole", + "USTREAM": "Ustream Coin", "USTX": "UpStableToken", "USUAL": "Usual", "USUALX": "USUALx", @@ -14556,6 +15069,7 @@ "UTC": "UltraCoin", "UTG": "UltronGlow", "UTH": "Uther", + "UTHR": "Utherverse Xaeon", "UTHX": "Utherverse", "UTI": "Unicorn Technology International", "UTIL": "Utility Coin", @@ -14567,7 +15081,9 @@ "UTT": "United Traders Token", "UTU": "UTU Protocol", "UTX": "UTIX", + "UTYA": "Utya", "UTYAB": "Utya Black", + "UUC": "USA Unity Coin", "UUSD": "Utopia USD", "UUU": "U Network", "UVT": "UvToken", @@ -14600,6 +15116,7 @@ "VANA": "Vana", "VANCAT": "Vancat", "VANCE": "JD Vance", + "VANCEMEME": "Vance Meme", "VANF": "Van Fwogh", "VANRY": "Vanar Chain", "VANT": "Vanta Network", @@ -14609,6 +15126,7 @@ "VARA": "Vara Network", "VARIUS": "Varius", "VARK": "Aardvark", + "VATAN": "Vatan Token", "VATO": "vanitis", "VATR": "Vatra INU", "VATRENI": "Croatian FF Fan Token", @@ -14649,6 +15167,7 @@ "VEC": "VECTOR", "VEC2": "VectorCoin 2.0", "VECT": "Vectorium", + "VECTOR": "VectorChat.ai", "VEE": "BLOCKv", "VEED": "VEED", "VEEN": "LIVEEN", @@ -14707,13 +15226,15 @@ "VGX": "Voyager Token", "VHC": "Vault Hill City", "VI": "Vid", - "VIA": "ViaCoin", + "VIA": "Octavia AI", + "VIAC": "ViaCoin", "VIB": "Viberate", "VIBE": "VIBEHub", "VIBEA": "Vibe AI", "VIBLO": "VIBLO", "VIC": "Viction", "VICA": "ViCA Token", + "VICE": "VICE Token", "VICEX": "ViceToken", "VICS": "RoboF", "VICT": "Victory Impact Coin", @@ -14722,6 +15243,7 @@ "VIDA": "Vidiachange", "VIDEO": "Videocoin by Drakula", "VIDT": "VIDT Datalink", + "VIDTV1": "VIDT Datalink", "VIDY": "Vidy", "VIDYA": "Vidya", "VIDYX": "VidyX", @@ -14731,9 +15253,11 @@ "VIK": "VIKTAMA", "VIKITA": "VIKITA", "VIKKY": "VikkyToken", + "VILADY": "Vitalik Milady", "VIM": "VicMove", "VIN": "VinChain", "VINCI": "VINCI", + "VINE": "Vine Coin", "VINU": "Vita Inu", "VIOR": "ViorCoin", "VIP": "VIP Tokens", @@ -14757,6 +15281,7 @@ "VITAFAST": "Molecules of Korolchuk IP-NFT", "VITAL": "Vital Network", "VITALI": "Vitalik's Casper", + "VITALIK": "OFFICIAL VITALIK", "VITAMINS": "Vitamins", "VITARNA": "VitaRNA", "VITE": "VITE", @@ -14809,6 +15334,7 @@ "VOCO": "Provoco", "VODCAT": "VODKA CAT", "VODKA": "Vodka Token", + "VOID": "Nothing", "VOIP": "Voip Finance", "VOISE": "Voise", "VOL": "Volume Network", @@ -14820,6 +15346,7 @@ "VOLTOLD": "Volt Inu (Old)", "VOLTV1": "Volt Inu v1", "VOLTV2": "Volt Inu v2", + "VOLTX": "VolatilityX", "VOLTZ": "Voltz", "VOLX": "VolumeX", "VONE": "Vone", @@ -14900,6 +15427,7 @@ "VVAIFU": "Dasha", "VVI": "VV Coin", "VVS": "VVS Finance", + "VVV": "Venice Token", "VX": "ViteX Coin", "VXL": "Voxel X Network", "VXR": "Vox Royale", @@ -14911,6 +15439,8 @@ "VYFI": "VyFinance", "VYNC": "VYNK Chain", "VYPER": "VYPER.WIN", + "VYVO": "Vyvo AI", + "VZ": "Vault Zero", "VZT": "Vezt", "W": "Wormhole", "W1": "W1", @@ -14936,6 +15466,7 @@ "WAGG": "Waggle Network", "WAGIE": "Wagie", "WAGIEBOT": "Wagie Bot", + "WAGM": "WAGMI", "WAGMI": "Wagmi Coin", "WAGMIGAMES": "WAGMI Game", "WAGMIT": "Wagmi", @@ -14990,11 +15521,13 @@ "WAXS": "Axie Infinity Shards (Wormhole)", "WAY": "WayCoin", "WAZ": "MikeAI", + "WBAI": "Wrapped Balance AI", "WBAN": "Wrapped Banano", "WBB": "Wild Beast Coin", "WBBC": "Wibcoin", "WBC": "WorldBrain Coin", "WBCH": "Wrapped Bitcoin Cash", + "WBERA": "Wrapped Bera", "WBESC": "Wrapped BESC", "WBET": "Wavesbet", "WBETH": "Wrapped Beacon ETH", @@ -15081,6 +15614,7 @@ "WENLAMBO": "Wenlambo", "WEOS": "Wrapped EOS", "WEPC": "World Earn & Play Community", + "WEPE": "Wall Street Pepe", "WERK": "Werk Family", "WEST": "Waves Enterprise", "WET": "WeShow Token", @@ -15136,6 +15670,7 @@ "WHITE": "Whiteheart", "WHL": "WhaleCoin", "WHO": "Truwho", + "WHOLE": "Whole Network", "WHOREN": "elizabath whoren", "WHT": "Wrapped Huobi Token", "WHTETGRMOON": "WHITE TIGER MOON", @@ -15183,7 +15718,9 @@ "WINT": "WinToken", "WINTER": "Winter", "WINU": "Walter Inu", + "WINX": "WinX.io", "WIOTX": "Wrapped IoTeX", + "WIRE": "717ai by Virtuals", "WIRTUAL": "Wirtual", "WIS": "Experty Wisdom Token", "WISC": "WisdomCoin", @@ -15205,6 +15742,7 @@ "WKAVA": "Wrapped Kava", "WKC": "Wiki Cat", "WKD": "Wakanda Inu", + "WKEYDAO": "WebKey DAO", "WLD": "Worldcoin", "WLF": "Wolfs Group", "WLFI": "World Liberty Financial", @@ -15212,13 +15750,15 @@ "WLK": "Wolk", "WLKN": "Walken", "WLO": "WOLLO", + "WLSC": "WESTLAND SMART CITY", "WLTH": "Common Wealth", "WLUNA": "Wrapped LUNA Token", "WLUNC": "Wrapped LUNA Classic", "WLXT": "Wallex Token", "WMATIC": "Wrapped Matic", "WMB": "WatermelonBlock", - "WMC": "WMCoin", + "WMC": "Wrapped MistCoin", + "WMCOIN": "WMCoin", "WMEMO": "Wonderful Memories", "WMETIS": "Wrapped Metis", "WMF": "Whale Maker Fund", @@ -15257,9 +15797,10 @@ "WOJAK2": "Wojak 2.0 Coin", "WOJAKC": "Wojak Coin", "WOKB": "Wrapped OKB", + "WOKIE": "Wokie Plumpkin by Virtuals", "WOKT": "Wrapped OKT", "WOL": "World of Legends", - "WOLF": "LANDWOLF (AVAX)", + "WOLF": "Landwolf 0x67", "WOLFILAND": "Wolfiland", "WOLFOF": "Wolf of Wall Street", "WOLFP": "Wolfpack Coin", @@ -15312,6 +15853,7 @@ "WPR": "WePower", "WQT": "Work Quest", "WRC": "Worldcore", + "WREACT": "Wrapped REACT", "WRK": "BlockWRK", "WRKX": "NFT Workx", "WRLD": "NFT Worlds", @@ -15413,6 +15955,7 @@ "XAGX": "Silver Token", "XAH": "Xahau", "XAI": "Xai", + "XAIGAME": "xAI Game Studio", "XALGO": "Wrapped ALGO", "XALPHA": "XAlpha AI", "XAMP": "Antiample", @@ -15543,6 +16086,7 @@ "XHP": "XHYPE", "XHPV1": "XHYPE v1", "XHT": "HollaEx", + "XHUNT": "CryptoHunter World", "XHV": "Haven Protocol", "XI": "Xi", "XIASI": "Xiasi Inu", @@ -15617,6 +16161,7 @@ "XOV": "XOVBank", "XOX": "XOX Labs", "XOXNO": "XOXNO", + "XOXO": "XO Protocol", "XP": "Experience Points", "XPA": "XPA", "XPAT": "Bitnation Pangea", @@ -15628,6 +16173,7 @@ "XPET": "XPET token", "XPH": "PharmaCoin", "XPHX": "PhoenixCo Token", + "XPI": "XPi", "XPL": "Exclusive Platform", "XPLA": "XPLA", "XPLL": "ParallelChain", @@ -15708,6 +16254,7 @@ "XTECH": "X-TECH", "XTK": "xToken", "XTM": "TORUM", + "XTN": "Neutrino Index Token", "XTO": "Tao", "XTP": "Tap", "XTR": "Xtreme", @@ -15784,14 +16331,18 @@ "YDF": "Yieldification", "YDOGE": "Yorkie Doge", "YDR": "YDragon", + "YE": "Kanye West", + "YEAI": "YE AI Agent", "YEARN": "YearnTogether", "YEC": "Ycash", "YEE": "Yeeco", "YEED": "Yggdrash", "YEEHAW": "YEEHAW", + "YEET": "Yeet", "YEETI": "YEETI 液体", "YEFI": "YeFi", "YEL": "Yel.Finance", + "YELP": "Yelpro", "YEON": "Yeon", "YEPE": "Yellow Pepe", "YES": "YES Money", @@ -15799,6 +16350,7 @@ "YESP": "Yesports", "YESW": "Yes World", "YETI": "Yeti Finance", + "YETIUSD": "YUSD Stablecoin", "YETU": "Yetucoin", "YFARM": "YFARM Token", "YFBETA": "yfBeta", @@ -15842,6 +16394,7 @@ "YOC": "YoCoin", "YOCO": "YocoinYOCO", "YOD": "Year of the Dragon", + "YODA": "YODA", "YODE": "YodeSwap", "YOLO": "YoloNolo", "YOM": "YOM", @@ -15868,6 +16421,7 @@ "YSEC": "Yearn Secure", "YSR": "Ystar", "YTA": "YottaChain", + "YTC": "Yachtscoin", "YTJIA": "Jia Yueting", "YTN": "YENTEN", "YTS": "YetiSwap", @@ -15882,12 +16436,13 @@ "YUKIE": "Yukie", "YUKKY": "YUKKY", "YUKO": "YUKO", + "YULI": "Yuliverse", "YUM": "Yumerium", "YUMMI": "Yummi Universe", "YUMMY": "Yummy", "YUP": "Crowdholding", "YURI": "YURI", - "YUSD": "YUSD Stablecoin", + "YUSD": "YieldFi yToken", "YUSE": "Yuse Token", "YUSRA": "YUSRA", "YUSUF": "Yusuf Dikec Meme", @@ -15899,6 +16454,7 @@ "YYE": "YYE Energy", "YYFI": "YYFI.Protocol", "YYOLO": "yYOLO", + "YZY": "Yeezy", "Z3": "Z-Cubed", "ZABAKU": "Zabaku Inu", "ZACK": "Zack Morris", @@ -15924,6 +16480,7 @@ "ZBCN": "Zebec Network", "ZBIT": "zbit", "ZBU": "Zeebu", + "ZBUV1": "ZEEBU v1", "ZCC": "ZCC Coin", "ZCC1": "ZeroCarbon", "ZCD": "ZChains", @@ -15997,6 +16554,7 @@ "ZGEM": "GemSwap", "ZHC": "ZHC : Zero Hour Cash", "ZHOA": "Chengpang Zhoa", + "ZHOUKING": "ZhouKing", "ZIBU": "Zibu", "ZIG": "Zignaly", "ZIGAP": "ZIGAP", From 6036547cf54fd3e954ddc8e79256a189a8f8e9e7 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 17 Mar 2025 21:21:09 +0100 Subject: [PATCH 152/164] Feature/refactor portfolio calculator factory (#4454) * Refactor portfolio calculator factory --- .../calculator/mwr/portfolio-calculator.ts | 2 +- .../portfolio-calculator.factory.ts | 21 +++++++++++++--- .../calculator/twr/portfolio-calculator.ts | 24 +++++++++++++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts diff --git a/apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts index e54f63422..fab15e6e7 100644 --- a/apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts @@ -5,7 +5,7 @@ import { } from '@ghostfolio/common/interfaces'; import { PortfolioSnapshot } from '@ghostfolio/common/models'; -export class MWRPortfolioCalculator extends PortfolioCalculator { +export class MwrPortfolioCalculator extends PortfolioCalculator { protected calculateOverallPerformance(): PortfolioSnapshot { throw new Error('Method not implemented.'); } diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts index 70f27fe7b..6cc5edeaf 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts @@ -8,13 +8,15 @@ import { Filter, HistoricalDataItem } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; -import { MWRPortfolioCalculator } from './mwr/portfolio-calculator'; +import { MwrPortfolioCalculator } from './mwr/portfolio-calculator'; import { PortfolioCalculator } from './portfolio-calculator'; import { RoaiPortfolioCalculator } from './roai/portfolio-calculator'; +import { TwrPortfolioCalculator } from './twr/portfolio-calculator'; export enum PerformanceCalculationType { MWR = 'MWR', // Money-Weighted Rate of Return - ROAI = 'ROAI' // Return on Average Investment + ROAI = 'ROAI', // Return on Average Investment + TWR = 'TWR' // Time-Weighted Rate of Return } @Injectable() @@ -44,7 +46,7 @@ export class PortfolioCalculatorFactory { }): PortfolioCalculator { switch (calculationType) { case PerformanceCalculationType.MWR: - return new MWRPortfolioCalculator({ + return new MwrPortfolioCalculator({ accountBalanceItems, activities, currency, @@ -61,10 +63,23 @@ export class PortfolioCalculatorFactory { accountBalanceItems, activities, currency, + filters, + userId, + configurationService: this.configurationService, currentRateService: this.currentRateService, + exchangeRateDataService: this.exchangeRateDataService, + portfolioSnapshotService: this.portfolioSnapshotService, + redisCacheService: this.redisCacheService + }); + case PerformanceCalculationType.TWR: + return new TwrPortfolioCalculator({ + accountBalanceItems, + activities, + currency, filters, userId, configurationService: this.configurationService, + currentRateService: this.currentRateService, exchangeRateDataService: this.exchangeRateDataService, portfolioSnapshotService: this.portfolioSnapshotService, redisCacheService: this.redisCacheService diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts new file mode 100644 index 000000000..6499ca3db --- /dev/null +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts @@ -0,0 +1,24 @@ +import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator'; +import { + AssetProfileIdentifier, + SymbolMetrics +} from '@ghostfolio/common/interfaces'; +import { PortfolioSnapshot } from '@ghostfolio/common/models'; + +export class TwrPortfolioCalculator extends PortfolioCalculator { + protected calculateOverallPerformance(): PortfolioSnapshot { + throw new Error('Method not implemented.'); + } + + protected getSymbolMetrics({}: { + end: Date; + exchangeRates: { [dateString: string]: number }; + marketSymbolMap: { + [date: string]: { [symbol: string]: Big }; + }; + start: Date; + step?: number; + } & AssetProfileIdentifier): SymbolMetrics { + throw new Error('Method not implemented.'); + } +} From 51d55f74e922a8e294f56d202b381fb4c30403cc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 17 Mar 2025 21:21:46 +0100 Subject: [PATCH 153/164] Feature/add missing lifecycle hook in historical market data editor dialog (#4456) * Add OnInit --- .../historical-market-data-editor-dialog.component.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts index 73f382c5e..c75b6f3ae 100644 --- a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts +++ b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts @@ -7,7 +7,8 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA, Inject, - OnDestroy + OnDestroy, + OnInit } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -41,7 +42,9 @@ import { HistoricalMarketDataEditorDialogParams } from './interfaces/interfaces' styleUrls: ['./historical-market-data-editor-dialog.scss'], templateUrl: 'historical-market-data-editor-dialog.html' }) -export class GfHistoricalMarketDataEditorDialogComponent implements OnDestroy { +export class GfHistoricalMarketDataEditorDialogComponent + implements OnDestroy, OnInit +{ private unsubscribeSubject = new Subject(); public constructor( From 4db8c007f00340f425da83e6795b795b3682f67c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 17 Mar 2025 22:27:22 +0100 Subject: [PATCH 154/164] Bugfix/fix activities import with account balances (#4446) * Fix import with account balances * Update changelog --- CHANGELOG.md | 4 ++++ .../src/app/import/create-account-with-balances.dto.ts | 10 ++++++++++ apps/api/src/app/import/import-data.dto.ts | 7 ++++--- .../src/lib/interfaces/account-balance.interface.ts | 4 ++++ libs/common/src/lib/interfaces/export.interface.ts | 4 +++- libs/common/src/lib/interfaces/index.ts | 2 ++ 6 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 apps/api/src/app/import/create-account-with-balances.dto.ts create mode 100644 libs/common/src/lib/interfaces/account-balance.interface.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 080a65cf1..841ad6ac9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the symbol validation in the _Yahoo Finance_ service (get asset profiles) - Refreshed the cryptocurrencies list +### Fixed + +- Fixed an issue in the activities import functionality related to the account balances + ## 2.146.0 - 2025-03-15 ### Changed diff --git a/apps/api/src/app/import/create-account-with-balances.dto.ts b/apps/api/src/app/import/create-account-with-balances.dto.ts new file mode 100644 index 000000000..fd4b8df48 --- /dev/null +++ b/apps/api/src/app/import/create-account-with-balances.dto.ts @@ -0,0 +1,10 @@ +import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; +import { AccountBalance } from '@ghostfolio/common/interfaces'; + +import { IsArray, IsOptional } from 'class-validator'; + +export class CreateAccountWithBalancesDto extends CreateAccountDto { + @IsArray() + @IsOptional() + balances?: AccountBalance; +} diff --git a/apps/api/src/app/import/import-data.dto.ts b/apps/api/src/app/import/import-data.dto.ts index 715766821..207c8152b 100644 --- a/apps/api/src/app/import/import-data.dto.ts +++ b/apps/api/src/app/import/import-data.dto.ts @@ -1,15 +1,16 @@ -import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { Type } from 'class-transformer'; import { IsArray, IsOptional, ValidateNested } from 'class-validator'; +import { CreateAccountWithBalancesDto } from './create-account-with-balances.dto'; + export class ImportDataDto { @IsOptional() @IsArray() - @Type(() => CreateAccountDto) + @Type(() => CreateAccountWithBalancesDto) @ValidateNested({ each: true }) - accounts: CreateAccountDto[]; + accounts: CreateAccountWithBalancesDto[]; @IsArray() @Type(() => CreateOrderDto) diff --git a/libs/common/src/lib/interfaces/account-balance.interface.ts b/libs/common/src/lib/interfaces/account-balance.interface.ts new file mode 100644 index 000000000..00fcf1e53 --- /dev/null +++ b/libs/common/src/lib/interfaces/account-balance.interface.ts @@ -0,0 +1,4 @@ +export interface AccountBalance { + date: string; + value: number; +} diff --git a/libs/common/src/lib/interfaces/export.interface.ts b/libs/common/src/lib/interfaces/export.interface.ts index 0772159e6..24e478779 100644 --- a/libs/common/src/lib/interfaces/export.interface.ts +++ b/libs/common/src/lib/interfaces/export.interface.ts @@ -1,8 +1,10 @@ import { Account, Order, Platform, Tag } from '@prisma/client'; +import { AccountBalance } from './account-balance.interface'; + export interface Export { accounts: (Omit & { - balances: { date: string; value: number }[]; + balances: AccountBalance[]; })[]; activities: (Omit< Order, diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index 3dcbbb32a..5f8b8b5b1 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -1,4 +1,5 @@ import type { Access } from './access.interface'; +import type { AccountBalance } from './account-balance.interface'; import type { Accounts } from './accounts.interface'; import type { AdminData } from './admin-data.interface'; import type { AdminJobs } from './admin-jobs.interface'; @@ -68,6 +69,7 @@ import type { XRayRulesSettings } from './x-ray-rules-settings.interface'; export { Access, + AccountBalance, AccountBalancesResponse, Accounts, AdminData, From 235db72ade673018af0cdef56da7435d0fad291a Mon Sep 17 00:00:00 2001 From: Chang-Yen Tseng <10328757+Summon528@users.noreply.github.com> Date: Tue, 18 Mar 2025 12:06:00 -0700 Subject: [PATCH 155/164] Bugfix/change client-side dates to be sent in UTC format (#4402) * Change client-side dates to be sent in UTC format * Update changelog --- CHANGELOG.md | 3 +++ apps/client/src/app/services/admin.service.ts | 17 ++--------------- apps/client/src/app/services/data.service.ts | 8 +++----- package-lock.json | 6 ++++++ package.json | 1 + 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 841ad6ac9..6651ff32e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed an issue in the activities import functionality related to the account balances +- Changed client-side dates to be sent in UTC format to ensure date consistency + - Benchmark endpoint + - Exchange rate endpoint ## 2.146.0 - 2025-03-15 diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index 5d71a80f9..fea3924e9 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -8,7 +8,6 @@ import { PROPERTY_API_KEY_GHOSTFOLIO } from '@ghostfolio/common/config'; import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config'; -import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { AssetProfileIdentifier, AdminData, @@ -25,7 +24,6 @@ import { Injectable } from '@angular/core'; import { SortDirection } from '@angular/material/sort'; import { DataSource, MarketData, Platform } from '@prisma/client'; import { JobStatus } from 'bull'; -import { format } from 'date-fns'; import { switchMap } from 'rxjs'; import { environment } from '../../environments/environment'; @@ -186,19 +184,8 @@ export class AdminService { ); } - public gatherSymbol({ - dataSource, - date, - symbol - }: AssetProfileIdentifier & { - date?: Date; - }) { - let url = `/api/v1/admin/gather/${dataSource}/${symbol}`; - - if (date) { - url = `${url}/${format(date, DATE_FORMAT)}`; - } - + public gatherSymbol({ dataSource, symbol }: AssetProfileIdentifier) { + const url = `/api/v1/admin/gather/${dataSource}/${symbol}`; return this.http.post(url, {}); } diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index e8d4b7826..76f9c4867 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -57,6 +57,7 @@ import { translate } from '@ghostfolio/ui/i18n'; import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { SortDirection } from '@angular/material/sort'; +import { utc } from '@date-fns/utc'; import { AccountBalance, DataSource, @@ -281,7 +282,7 @@ export class DataService { symbol: string; }) { return this.http.get( - `/api/v1/exchange-rate/${symbol}/${format(date, DATE_FORMAT)}` + `/api/v1/exchange-rate/${symbol}/${format(date, DATE_FORMAT, { in: utc })}` ); } @@ -363,10 +364,7 @@ export class DataService { } return this.http.get( - `/api/v1/benchmarks/${dataSource}/${symbol}/${format( - startDate, - DATE_FORMAT - )}`, + `/api/v1/benchmarks/${dataSource}/${symbol}/${format(startDate, DATE_FORMAT, { in: utc })}`, { params } ); } diff --git a/package-lock.json b/package-lock.json index a6e4d4dd7..407107fbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "@angular/router": "19.2.1", "@angular/service-worker": "19.2.1", "@codewithdan/observable-store": "2.2.15", + "@date-fns/utc": "2.1.0", "@dfinity/agent": "0.15.7", "@dfinity/auth-client": "0.15.7", "@dfinity/candid": "0.15.7", @@ -3113,6 +3114,11 @@ "dev": true, "license": "MIT" }, + "node_modules/@date-fns/utc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@date-fns/utc/-/utc-2.1.0.tgz", + "integrity": "sha512-176grgAgU2U303rD2/vcOmNg0kGPbhzckuH1TEP2al7n0AQipZIy9P15usd2TKQCG1g+E1jX/ZVQSzs4sUDwgA==" + }, "node_modules/@dfinity/agent": { "version": "0.15.7", "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.15.7.tgz", diff --git a/package.json b/package.json index eb3a7083d..89ca173ae 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ "@angular/router": "19.2.1", "@angular/service-worker": "19.2.1", "@codewithdan/observable-store": "2.2.15", + "@date-fns/utc": "2.1.0", "@dfinity/agent": "0.15.7", "@dfinity/auth-client": "0.15.7", "@dfinity/candid": "0.15.7", From efc0b1bf5a498f3d1206769976fd3d6a80964025 Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Tue, 18 Mar 2025 20:13:24 +0100 Subject: [PATCH 156/164] Feature/support filters in AI prompt API (#4431) * Support filters in AI prompt API * Update changelog --- CHANGELOG.md | 4 +++ .../api/src/app/endpoints/ai/ai.controller.ts | 27 +++++++++++++++++-- apps/api/src/app/endpoints/ai/ai.module.ts | 2 ++ apps/api/src/app/endpoints/ai/ai.service.ts | 4 +++ .../analysis/analysis-page.component.ts | 5 +++- apps/client/src/app/services/data.service.ts | 14 ++++++++-- 6 files changed, 51 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6651ff32e..ea12f2ca9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added support for filtering in the _Copy AI prompt to clipboard_ actions on the analysis page (experimental) + ### Changed - Improved the symbol validation in the _Yahoo Finance_ service (get asset profiles) diff --git a/apps/api/src/app/endpoints/ai/ai.controller.ts b/apps/api/src/app/endpoints/ai/ai.controller.ts index 910abbf96..980d5607c 100644 --- a/apps/api/src/app/endpoints/ai/ai.controller.ts +++ b/apps/api/src/app/endpoints/ai/ai.controller.ts @@ -1,5 +1,6 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; +import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { DEFAULT_CURRENCY, DEFAULT_LANGUAGE_CODE @@ -8,7 +9,14 @@ import { AiPromptResponse } from '@ghostfolio/common/interfaces'; import { permissions } from '@ghostfolio/common/permissions'; import type { AiPromptMode, RequestWithUser } from '@ghostfolio/common/types'; -import { Controller, Get, Inject, Param, UseGuards } from '@nestjs/common'; +import { + Controller, + Get, + Inject, + Param, + Query, + UseGuards +} from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; @@ -18,6 +26,7 @@ import { AiService } from './ai.service'; export class AiController { public constructor( private readonly aiService: AiService, + private readonly apiService: ApiService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -25,9 +34,23 @@ export class AiController { @HasPermission(permissions.readAiPrompt) @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async getPrompt( - @Param('mode') mode: AiPromptMode + @Param('mode') mode: AiPromptMode, + @Query('accounts') filterByAccounts?: string, + @Query('assetClasses') filterByAssetClasses?: string, + @Query('dataSource') filterByDataSource?: string, + @Query('symbol') filterBySymbol?: string, + @Query('tags') filterByTags?: string ): Promise { + const filters = this.apiService.buildFiltersFromQueryParams({ + filterByAccounts, + filterByAssetClasses, + filterByDataSource, + filterBySymbol, + filterByTags + }); + const prompt = await this.aiService.getPrompt({ + filters, mode, impersonationId: undefined, languageCode: diff --git a/apps/api/src/app/endpoints/ai/ai.module.ts b/apps/api/src/app/endpoints/ai/ai.module.ts index 5a30f3264..584f29956 100644 --- a/apps/api/src/app/endpoints/ai/ai.module.ts +++ b/apps/api/src/app/endpoints/ai/ai.module.ts @@ -7,6 +7,7 @@ import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.servic import { RulesService } from '@ghostfolio/api/app/portfolio/rules.service'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; +import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; @@ -25,6 +26,7 @@ import { AiService } from './ai.service'; @Module({ controllers: [AiController], imports: [ + ApiModule, ConfigurationModule, DataProviderModule, ExchangeRateDataModule, diff --git a/apps/api/src/app/endpoints/ai/ai.service.ts b/apps/api/src/app/endpoints/ai/ai.service.ts index d9090d77c..8807e67bf 100644 --- a/apps/api/src/app/endpoints/ai/ai.service.ts +++ b/apps/api/src/app/endpoints/ai/ai.service.ts @@ -1,4 +1,5 @@ import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; +import { Filter } from '@ghostfolio/common/interfaces'; import type { AiPromptMode } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; @@ -8,12 +9,14 @@ export class AiService { public constructor(private readonly portfolioService: PortfolioService) {} public async getPrompt({ + filters, impersonationId, languageCode, mode, userCurrency, userId }: { + filters?: Filter[]; impersonationId: string; languageCode: string; mode: AiPromptMode; @@ -21,6 +24,7 @@ export class AiService { userId: string; }) { const { holdings } = await this.portfolioService.getDetails({ + filters, impersonationId, userId }); diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts index 4aee450e6..2bd3096d4 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -161,7 +161,10 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { } this.dataService - .fetchPrompt(mode) + .fetchPrompt({ + mode, + filters: this.userService.getFilters() + }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ prompt }) => { this.clipboard.copy(prompt); diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 76f9c4867..4eba3fffa 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -653,8 +653,18 @@ export class DataService { return this.http.get('/api/v1/portfolio/report'); } - public fetchPrompt(mode: AiPromptMode) { - return this.http.get(`/api/v1/ai/prompt/${mode}`); + public fetchPrompt({ + filters, + mode + }: { + filters?: Filter[]; + mode: AiPromptMode; + }) { + const params = this.buildFiltersAsQueryParams({ filters }); + + return this.http.get(`/api/v1/ai/prompt/${mode}`, { + params + }); } public fetchPublicPortfolio(aAccessId: string) { From 82fe2590bf4118e091b30dfa8ae74fde3529a463 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 19 Mar 2025 17:26:00 +0100 Subject: [PATCH 157/164] Feature/add Storybook link to development guide (#4448) * Add Storybook --- DEVELOPMENT.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index cea43095d..1c45aeca1 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -60,6 +60,10 @@ Remove permission in `UserService` using `without()` Use `@if (user?.settings?.isExperimentalFeatures) {}` in HTML template +## Component Library (_Storybook_) + +https://ghostfol.io/development/storybook + ## Git ### Rebase From ddc798928097d0df193504133cca210525b68d02 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Mar 2025 20:37:30 +0100 Subject: [PATCH 158/164] Feature/update locales (#4460) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 4 ++-- apps/client/src/locales/messages.de.xlf | 4 ++-- apps/client/src/locales/messages.es.xlf | 4 ++-- apps/client/src/locales/messages.fr.xlf | 4 ++-- apps/client/src/locales/messages.it.xlf | 4 ++-- apps/client/src/locales/messages.nl.xlf | 4 ++-- apps/client/src/locales/messages.pl.xlf | 4 ++-- apps/client/src/locales/messages.pt.xlf | 4 ++-- apps/client/src/locales/messages.tr.xlf | 4 ++-- apps/client/src/locales/messages.uk.xlf | 4 ++-- apps/client/src/locales/messages.xlf | 4 ++-- apps/client/src/locales/messages.zh.xlf | 4 ++-- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 0f9de4906..f83df8770 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -7589,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7685,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 223253bae..d8ee071f5 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -7589,7 +7589,7 @@ KI-Anweisung wurde in die Zwischenablage kopiert apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7685,7 +7685,7 @@ Öffne Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index a763a3902..5b9c5dbef 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -7590,7 +7590,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7686,7 +7686,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 0e7b6b9aa..2b61e3ed1 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -7589,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7685,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 4ab6c53a1..3d12719eb 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -7590,7 +7590,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7686,7 +7686,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 13671956d..fa29621a5 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -7589,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7685,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index ac208d13a..e6e89741d 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -7589,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7685,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 789ee6360..5676461ed 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -7589,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7685,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 05e2566f8..f9e2bfd9b 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -7589,7 +7589,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7685,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 94d3893ba..2c13d1ef7 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -7597,7 +7597,7 @@ Запит AI скопійовано в буфер обміну apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7685,7 +7685,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index c1ec934be..778195c24 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -6867,7 +6867,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -6951,7 +6951,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 6d6054df6..5c1b6bc5b 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -7590,7 +7590,7 @@ AI prompt has been copied to the clipboard apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 170 + 173 @@ -7686,7 +7686,7 @@ Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 171 + 174 From 795e4582a8005b15ae0d788a45d6032b64ebe917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20=C5=81=C4=85giewka?= Date: Wed, 19 Mar 2025 21:10:19 +0100 Subject: [PATCH 159/164] Feature/replace lodash.uniq with Array.from + Set (#4387) * Replace lodash.uniq with Array.from + Set * Update chagnelog --- CHANGELOG.md | 1 + .../calculator/portfolio-calculator.ts | 4 ++-- .../src/app/portfolio/portfolio.service.ts | 20 ++++++++++--------- .../exchange-rate-data.service.ts | 4 ++-- .../create-asset-profile-dialog.component.ts | 5 +++-- .../user-account-settings.component.ts | 3 +-- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea12f2ca9..8f58b23f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the symbol validation in the _Yahoo Finance_ service (get asset profiles) +- Refactored `lodash.uniq` with `Array.from(new Set(...))` - Refreshed the cryptocurrencies list ### Fixed diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index 54d80a955..52d57230b 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -49,7 +49,7 @@ import { min, subDays } from 'date-fns'; -import { isNumber, sortBy, sum, uniq, uniqBy } from 'lodash'; +import { isNumber, sortBy, sum, uniqBy } from 'lodash'; export abstract class PortfolioCalculator { protected static readonly ENABLE_LOGGING = false; @@ -222,7 +222,7 @@ export abstract class PortfolioCalculator { const exchangeRatesByCurrency = await this.exchangeRateDataService.getExchangeRatesByCurrency({ - currencies: uniq(Object.values(currencies)), + currencies: Array.from(new Set(Object.values(currencies))), endDate: endOfDay(this.endDate), startDate: this.startDate, targetCurrency: this.currency diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index e90ebd4ae..a3d9e3c4a 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -82,7 +82,7 @@ import { parseISO, set } from 'date-fns'; -import { isEmpty, uniq } from 'lodash'; +import { isEmpty } from 'lodash'; import { PortfolioCalculator } from './calculator/portfolio-calculator'; import { @@ -2032,14 +2032,16 @@ export class PortfolioService { where: { id: filters[0].id } }); } else { - const accountIds = uniq( - activities - .filter(({ accountId }) => { - return accountId; - }) - .map(({ accountId }) => { - return accountId; - }) + const accountIds = Array.from( + new Set( + activities + .filter(({ accountId }) => { + return accountId; + }) + .map(({ accountId }) => { + return accountId; + }) + ) ); currentAccounts = await this.accountService.accounts({ diff --git a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts index db95a3487..0a2d177ce 100644 --- a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts +++ b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts @@ -23,7 +23,7 @@ import { isToday, subDays } from 'date-fns'; -import { isNumber, uniq } from 'lodash'; +import { isNumber } from 'lodash'; import ms from 'ms'; @Injectable() @@ -515,7 +515,7 @@ export class ExchangeRateDataService { } } - return uniq(currencies).filter(Boolean).sort(); + return Array.from(new Set(currencies)).filter(Boolean).sort(); } private prepareCurrencyPairs(aCurrencies: string[]) { diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts index b0f69fa5c..e84554577 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts @@ -20,7 +20,6 @@ import { } from '@angular/forms'; import { MatDialogRef } from '@angular/material/dialog'; import { isISO4217CurrencyCode } from 'class-validator'; -import { uniq } from 'lodash'; import { Subject, takeUntil } from 'rxjs'; import { CreateAssetProfileDialogMode } from './interfaces/interfaces'; @@ -87,7 +86,9 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy { this.createAssetProfileForm.get('addCurrency').value as string ).toUpperCase(); - const currencies = uniq([...this.customCurrencies, currency]).sort(); + const currencies = Array.from( + new Set([...this.customCurrencies, currency]) + ).sort(); this.dataService .putAdminSetting(PROPERTY_CURRENCIES, { diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index ced617117..1ee23ff8a 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -24,7 +24,6 @@ import { FormBuilder, Validators } from '@angular/forms'; import { MatSlideToggleChange } from '@angular/material/slide-toggle'; import { MatSnackBar } from '@angular/material/snack-bar'; import { format, parseISO } from 'date-fns'; -import { uniq } from 'lodash'; import ms from 'ms'; import { EMPTY, Subject, throwError } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @@ -108,7 +107,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { ); this.locales.push(this.user.settings.locale); - this.locales = uniq(this.locales.sort()); + this.locales = Array.from(new Set(this.locales)).sort(); this.changeDetectorRef.markForCheck(); } From 1aa1960d45ec5d731a8351663d70154e6e50c2b7 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 20 Mar 2025 08:03:32 +0100 Subject: [PATCH 160/164] Feature/rename TWR to ROAI (#4464) * Rename TWR to ROAI --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 14477ea9a..ed82ac723 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Ghostfolio is for you if you are... - ✅ Create, update and delete transactions - ✅ Multi account management -- ✅ Portfolio performance: Time-weighted rate of return (TWR) for `Today`, `WTD`, `MTD`, `YTD`, `1Y`, `5Y`, `Max` +- ✅ Portfolio performance: Return on Average Investment (ROAI) for `Today`, `WTD`, `MTD`, `YTD`, `1Y`, `5Y`, `Max` - ✅ Various charts - ✅ Static analysis to identify potential risks in your portfolio - ✅ Import and export transactions From d8b305a343720cd07f618e64722ecf1119ea429e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 20 Mar 2025 08:04:02 +0100 Subject: [PATCH 161/164] Feature/add Storybook to sitemap.xml (#4452) * Add Storybook * Update changelog --- CHANGELOG.md | 1 + apps/api/src/assets/sitemap.xml | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f58b23f8..4d24ce5d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added support for filtering in the _Copy AI prompt to clipboard_ actions on the analysis page (experimental) +- Added the _Storybook_ path to the `sitemap.xml` file ### Changed diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index a422ff31a..fc1e89dba 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -92,6 +92,10 @@ https://ghostfol.io/de/ueber-uns/oss-friends ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/development/storybook + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en ${currentDate}T00:00:00+00:00 From 150d97bd420c1a480b7658df34eed05be8aaa28c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Mar 2025 20:40:59 +0100 Subject: [PATCH 162/164] Feature/update locales (#4463) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 10 +++++----- apps/client/src/locales/messages.de.xlf | 10 +++++----- apps/client/src/locales/messages.es.xlf | 10 +++++----- apps/client/src/locales/messages.fr.xlf | 10 +++++----- apps/client/src/locales/messages.it.xlf | 10 +++++----- apps/client/src/locales/messages.nl.xlf | 10 +++++----- apps/client/src/locales/messages.pl.xlf | 10 +++++----- apps/client/src/locales/messages.pt.xlf | 10 +++++----- apps/client/src/locales/messages.tr.xlf | 10 +++++----- apps/client/src/locales/messages.uk.xlf | 10 +++++----- apps/client/src/locales/messages.xlf | 10 +++++----- apps/client/src/locales/messages.zh.xlf | 10 +++++----- 12 files changed, 60 insertions(+), 60 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index f83df8770..52a1a1dac 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2475,7 +2475,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -3343,7 +3343,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -3351,7 +3351,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -3359,7 +3359,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -3367,7 +3367,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index d8ee071f5..49495d26e 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1022,7 +1022,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -1662,7 +1662,7 @@ Möchtest du diese Anmeldemethode wirklich löschen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -2906,7 +2906,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -6603,7 +6603,7 @@ Möchtest du dieses Ghostfolio Konto wirklich schliessen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6651,7 +6651,7 @@ Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 5b9c5dbef..2997331e2 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1023,7 +1023,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -1663,7 +1663,7 @@ ¿Estás seguro de eliminar este método de acceso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -2907,7 +2907,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -6604,7 +6604,7 @@ ¿Estás seguro de querer borrar tu cuenta de Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6652,7 +6652,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 2b61e3ed1..3819bc98d 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1334,7 +1334,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -1878,7 +1878,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -1918,7 +1918,7 @@ Voulez-vous vraiment supprimer cette méthode de connexion ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -6603,7 +6603,7 @@ Confirmer la suppresion de votre compte Ghostfolio ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6651,7 +6651,7 @@ Oops! Une erreur s'est produite lors de la configuration de l'authentification biométrique. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 3d12719eb..257f8f68a 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1023,7 +1023,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -1663,7 +1663,7 @@ Vuoi davvero rimuovere questo metodo di accesso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -2907,7 +2907,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -6604,7 +6604,7 @@ Confermi di voler chiudere il tuo account Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6652,7 +6652,7 @@ Ops! C'è stato un errore impostando l'autenticazione biometrica. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index fa29621a5..00341b16c 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1022,7 +1022,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -1662,7 +1662,7 @@ Wil je deze aanmeldingsmethode echt verwijderen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -2906,7 +2906,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -6603,7 +6603,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6651,7 +6651,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index e6e89741d..aaed78ea7 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2287,7 +2287,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -3075,7 +3075,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -3083,7 +3083,7 @@ Czy na pewno chcesz usunąć tą metode logowania? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -6603,7 +6603,7 @@ Czy na pewno chcesz zamknąć swoje konto Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6651,7 +6651,7 @@ Ups! Wystąpił błąd podczas konfigurowania uwierzytelniania biometrycznego. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 5676461ed..5fe949db4 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1206,7 +1206,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -1862,7 +1862,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -1902,7 +1902,7 @@ Deseja realmente remover este método de início de sessão? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -6603,7 +6603,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6651,7 +6651,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index f9e2bfd9b..2e385d887 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2135,7 +2135,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -4895,7 +4895,7 @@ Otomatik apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -4935,7 +4935,7 @@ Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -6603,7 +6603,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6651,7 +6651,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 2c13d1ef7..b2dc82d73 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2595,7 +2595,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -3591,7 +3591,7 @@ Автоматичний apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -3599,7 +3599,7 @@ Ви дійсно хочете закрити ваш обліковий запис Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -3607,7 +3607,7 @@ Ви дійсно хочете вилучити цей спосіб входу? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -3615,7 +3615,7 @@ Упс! Виникла помилка під час налаштування біометричної автентифікації. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 778195c24..417df8c83 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2152,7 +2152,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -2864,14 +2864,14 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -6009,7 +6009,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6044,7 +6044,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 5c1b6bc5b..ca4b21fe0 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2296,7 +2296,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 160 + 159 @@ -3084,7 +3084,7 @@ 自动 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 40 + 39 @@ -3092,7 +3092,7 @@ 您确实要删除此登录方法吗? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 249 + 248 @@ -6604,7 +6604,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 175 + 174 @@ -6652,7 +6652,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 303 + 302 From 536b000ff926f57d36a9d1d7b0f938af7854a060 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 21 Mar 2025 20:41:37 +0100 Subject: [PATCH 163/164] Feature/improve Storybook story of fire calculator (#4451) * Add default value for fire wealth --- .../lib/fire-calculator/fire-calculator.component.stories.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.stories.ts b/libs/ui/src/lib/fire-calculator/fire-calculator.component.stories.ts index 0ad868ff9..e4cfa18ea 100644 --- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.stories.ts +++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.stories.ts @@ -45,7 +45,7 @@ type Story = StoryObj; export const Simple: Story = { args: { currency: 'USD', - fireWealth: 0, + fireWealth: 50000, locale: locale } }; From 198f73db004fc45cf1aca77a6d59acb632da0030 Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Fri, 21 Mar 2025 20:58:47 +0100 Subject: [PATCH 164/164] Feature/improve export by applying filters on accounts and tags (#4425) * Improve export by applying filters on accounts and tags * Update changelog --------- Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/api/src/app/export/export.controller.ts | 3 +- apps/api/src/app/export/export.service.ts | 96 +++++++++++--------- 3 files changed, 58 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d24ce5d6..80f831119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the export functionality by applying filters on accounts and tags - Improved the symbol validation in the _Yahoo Finance_ service (get asset profiles) - Refactored `lodash.uniq` with `Array.from(new Set(...))` - Refreshed the cryptocurrencies list diff --git a/apps/api/src/app/export/export.controller.ts b/apps/api/src/app/export/export.controller.ts index 551b3e489..d807132c9 100644 --- a/apps/api/src/app/export/export.controller.ts +++ b/apps/api/src/app/export/export.controller.ts @@ -21,10 +21,11 @@ export class ExportController { @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async export( @Query('accounts') filterByAccounts?: string, - @Query('activityIds') activityIds?: string[], + @Query('activityIds') filterByActivityIds?: string, @Query('assetClasses') filterByAssetClasses?: string, @Query('tags') filterByTags?: string ): Promise { + const activityIds = filterByActivityIds?.split(',') ?? []; const filters = this.apiService.buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 8b9d2c56c..f0449dc14 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -28,6 +28,22 @@ export class ExportService { }): Promise { const platformsMap: { [platformId: string]: Platform } = {}; + let { activities } = await this.orderService.getOrders({ + filters, + userCurrency, + userId, + includeDrafts: true, + sortColumn: 'date', + sortDirection: 'asc', + withExcludedAccounts: true + }); + + if (activityIds?.length > 0) { + activities = activities.filter(({ id }) => { + return activityIds.includes(id); + }); + } + const accounts = ( await this.accountService.accounts({ include: { @@ -39,57 +55,55 @@ export class ExportService { }, where: { userId } }) - ).map( - ({ - balance, - balances, - comment, - currency, - id, - isExcluded, - name, - Platform: platform, - platformId - }) => { - if (platformId) { - platformsMap[platformId] = platform; - } - - return { + ) + .filter(({ id }) => { + return activities.length > 0 + ? activities.some(({ accountId }) => { + return accountId === id; + }) + : true; + }) + .map( + ({ balance, - balances: balances.map(({ date, value }) => { - return { date: date.toISOString(), value }; - }), + balances, comment, currency, id, isExcluded, name, + Platform: platform, platformId - }; - } - ); - - let { activities } = await this.orderService.getOrders({ - filters, - userCurrency, - userId, - includeDrafts: true, - sortColumn: 'date', - sortDirection: 'asc', - withExcludedAccounts: true - }); + }) => { + if (platformId) { + platformsMap[platformId] = platform; + } - if (activityIds) { - activities = activities.filter((activity) => { - return activityIds.includes(activity.id); - }); - } + return { + balance, + balances: balances.map(({ date, value }) => { + return { date: date.toISOString(), value }; + }), + comment, + currency, + id, + isExcluded, + name, + platformId + }; + } + ); const tags = (await this.tagService.getTagsForUser(userId)) - .filter(({ isUsed }) => { - return isUsed; - }) + .filter( + ({ id, isUsed }) => + isUsed && + activities.some((activity) => { + return activity.tags.some(({ id: tagId }) => { + return tagId === id; + }); + }) + ) .map(({ id, name }) => { return { id,