From 03e27dd2339c696cbdd276fd17b7bbf6fcec0246 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 6 May 2025 18:45:02 +0200
Subject: [PATCH 01/40] Feature/update locales (#4670)
Co-authored-by: github-actions[bot]
---
apps/client/src/locales/messages.ca.xlf | 16 ++++++++--------
apps/client/src/locales/messages.de.xlf | 16 ++++++++--------
apps/client/src/locales/messages.es.xlf | 16 ++++++++--------
apps/client/src/locales/messages.fr.xlf | 16 ++++++++--------
apps/client/src/locales/messages.it.xlf | 16 ++++++++--------
apps/client/src/locales/messages.nl.xlf | 16 ++++++++--------
apps/client/src/locales/messages.pl.xlf | 16 ++++++++--------
apps/client/src/locales/messages.pt.xlf | 16 ++++++++--------
apps/client/src/locales/messages.tr.xlf | 16 ++++++++--------
apps/client/src/locales/messages.uk.xlf | 16 ++++++++--------
apps/client/src/locales/messages.xlf | 16 ++++++++--------
apps/client/src/locales/messages.zh.xlf | 16 ++++++++--------
12 files changed, 96 insertions(+), 96 deletions(-)
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index 305fa508a..2d267d24e 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -1079,7 +1079,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -1247,7 +1247,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -4971,7 +4971,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6111,7 +6111,7 @@
50-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6119,7 +6119,7 @@
200-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
@@ -6127,7 +6127,7 @@
Last All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6135,7 +6135,7 @@
Change from All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -6143,7 +6143,7 @@
from ATH
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf
index 47c1a1340..6f8323fe6 100644
--- a/apps/client/src/locales/messages.de.xlf
+++ b/apps/client/src/locales/messages.de.xlf
@@ -166,7 +166,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -302,7 +302,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -2546,7 +2546,7 @@
Änderung vom Allzeithoch
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -2554,7 +2554,7 @@
vom AZH
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
@@ -4690,7 +4690,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6039,7 +6039,7 @@
Letztes Allzeithoch
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6127,7 +6127,7 @@
50 Tage Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6135,7 +6135,7 @@
200 Tage Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf
index 8541df0bc..02ad6ce5a 100644
--- a/apps/client/src/locales/messages.es.xlf
+++ b/apps/client/src/locales/messages.es.xlf
@@ -167,7 +167,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -303,7 +303,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -2531,7 +2531,7 @@
Variación respecto al máximo histórico (ATH)
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -2539,7 +2539,7 @@
desde el máximo histórico (ATH)
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
@@ -4667,7 +4667,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6016,7 +6016,7 @@
Last All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6104,7 +6104,7 @@
50-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6112,7 +6112,7 @@
200-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index 165a03292..2fbd53993 100644
--- a/apps/client/src/locales/messages.fr.xlf
+++ b/apps/client/src/locales/messages.fr.xlf
@@ -174,7 +174,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -358,7 +358,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -3050,7 +3050,7 @@
Différence avec le Record Historique
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -3058,7 +3058,7 @@
par rapport au record historique
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
@@ -4666,7 +4666,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6015,7 +6015,7 @@
Dernier All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6103,7 +6103,7 @@
Tendance 50 jours
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6111,7 +6111,7 @@
Tendance 200 jours
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf
index d1b32c6ce..a942ebd70 100644
--- a/apps/client/src/locales/messages.it.xlf
+++ b/apps/client/src/locales/messages.it.xlf
@@ -167,7 +167,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -303,7 +303,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -2531,7 +2531,7 @@
Variazione rispetto al massimo storico (ATH)
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -2539,7 +2539,7 @@
dal massimo storico (ATH)
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
@@ -4667,7 +4667,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6016,7 +6016,7 @@
Ultimo massimo storico
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6104,7 +6104,7 @@
Trend a 50 giorni
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6112,7 +6112,7 @@
Trend a 200 giorni
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf
index 378f1a42e..fc79a6da1 100644
--- a/apps/client/src/locales/messages.nl.xlf
+++ b/apps/client/src/locales/messages.nl.xlf
@@ -166,7 +166,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -302,7 +302,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -2530,7 +2530,7 @@
Verandering van All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -2538,7 +2538,7 @@
van ATH
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
@@ -4666,7 +4666,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6015,7 +6015,7 @@
Last All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6103,7 +6103,7 @@
50-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6111,7 +6111,7 @@
200-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf
index 714c83bdb..50dada8a9 100644
--- a/apps/client/src/locales/messages.pl.xlf
+++ b/apps/client/src/locales/messages.pl.xlf
@@ -1007,7 +1007,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -1175,7 +1175,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -4583,7 +4583,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5551,7 +5551,7 @@
Ostatni Najwyższy Punkt w Historii
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -5559,7 +5559,7 @@
Zmiana od Najwyższego Punktu w Historii
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -5567,7 +5567,7 @@
od ATH
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
@@ -6103,7 +6103,7 @@
50-Dniowy Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6111,7 +6111,7 @@
200-Dniowy Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf
index 4a9ec251c..c327b1015 100644
--- a/apps/client/src/locales/messages.pt.xlf
+++ b/apps/client/src/locales/messages.pt.xlf
@@ -174,7 +174,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -358,7 +358,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -2922,7 +2922,7 @@
Diferença desde o Máximo Histórico
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -2930,7 +2930,7 @@
a partir do ATH (All Time High)
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
@@ -4666,7 +4666,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6015,7 +6015,7 @@
Last All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6103,7 +6103,7 @@
50-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6111,7 +6111,7 @@
200-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf
index 459db2d02..cf182ffc1 100644
--- a/apps/client/src/locales/messages.tr.xlf
+++ b/apps/client/src/locales/messages.tr.xlf
@@ -967,7 +967,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -1135,7 +1135,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -4071,7 +4071,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5247,7 +5247,7 @@
Tüm Zamanların En Yüksek Seviyesinden (ATH) Değişim
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -5255,7 +5255,7 @@
Tüm Zamanların En Yüksek Seviyesinden
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
@@ -6015,7 +6015,7 @@
Son, ATH
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6103,7 +6103,7 @@
50 Günlük Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6111,7 +6111,7 @@
200 Günlük Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf
index 7945267a0..adba86b10 100644
--- a/apps/client/src/locales/messages.uk.xlf
+++ b/apps/client/src/locales/messages.uk.xlf
@@ -1095,7 +1095,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -1263,7 +1263,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -5223,7 +5223,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6741,7 +6741,7 @@
Тренд на 50 днів
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -6749,7 +6749,7 @@
Тренд на 200 днів
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
@@ -6757,7 +6757,7 @@
Останній рекордний максимум
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -6765,7 +6765,7 @@
Зміна від Історичного Максимуму
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -6773,7 +6773,7 @@
від ІМ
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf
index 33d3e2f0c..c55d4dc94 100644
--- a/apps/client/src/locales/messages.xlf
+++ b/apps/client/src/locales/messages.xlf
@@ -979,7 +979,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -1142,7 +1142,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -4237,7 +4237,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5134,35 +5134,35 @@
50-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
200-Day Trend
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
Last All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
Change from All Time High
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
from ATH
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf
index 2853b6138..6b33fa12e 100644
--- a/apps/client/src/locales/messages.zh.xlf
+++ b/apps/client/src/locales/messages.zh.xlf
@@ -1016,7 +1016,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 3
+ 4
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -1184,7 +1184,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 142
+ 155
@@ -4592,7 +4592,7 @@
libs/ui/src/lib/benchmark/benchmark.component.html
- 174
+ 188
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5592,7 +5592,7 @@
50 天趋势
libs/ui/src/lib/benchmark/benchmark.component.html
- 15
+ 16
@@ -5600,7 +5600,7 @@
200天趋势
libs/ui/src/lib/benchmark/benchmark.component.html
- 40
+ 45
@@ -5608,7 +5608,7 @@
上次历史最高纪录
libs/ui/src/lib/benchmark/benchmark.component.html
- 65
+ 74
@@ -5616,7 +5616,7 @@
从历史最高点开始变化
libs/ui/src/lib/benchmark/benchmark.component.html
- 83
+ 96
@@ -5624,7 +5624,7 @@
来自 ATH
libs/ui/src/lib/benchmark/benchmark.component.html
- 85
+ 98
From 828bd5f172a03130bdb6c55cb937fbc0f3720d0e Mon Sep 17 00:00:00 2001
From: Haruka Kishida <56765603+the13-HK@users.noreply.github.com>
Date: Thu, 8 May 2025 03:34:31 +0900
Subject: [PATCH 02/40] Feature/upgrade to NestJS 11 (#4270)
* Upgrade to NestJS 11
* Update changelog
---
CHANGELOG.md | 6 +
apps/api/src/app/auth/api-key.strategy.ts | 55 +-
.../src/app/redis-cache/redis-cache.module.ts | 16 +-
.../app/redis-cache/redis-cache.service.ts | 50 +-
package-lock.json | 2932 +++++++++++++----
package.json | 30 +-
6 files changed, 2380 insertions(+), 709 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bab6e86d0..374672e54 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 `nestjs` from version `10.4.15` to `11.0.12`
+
## 2.161.0 - 2025-05-06
### Added
diff --git a/apps/api/src/app/auth/api-key.strategy.ts b/apps/api/src/app/auth/api-key.strategy.ts
index ace7fb245..e1e067ab7 100644
--- a/apps/api/src/app/auth/api-key.strategy.ts
+++ b/apps/api/src/app/auth/api-key.strategy.ts
@@ -21,37 +21,38 @@ export class ApiKeyStrategy extends PassportStrategy(
private readonly prismaService: PrismaService,
private readonly userService: UserService
) {
- super(
- { header: HEADER_KEY_TOKEN, prefix: 'Api-Key ' },
- true,
- async (apiKey: string, done: (error: any, user?: any) => void) => {
- try {
- const user = await this.validateApiKey(apiKey);
-
- if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
- if (hasRole(user, 'INACTIVE')) {
- throw new HttpException(
- getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS),
- StatusCodes.TOO_MANY_REQUESTS
- );
- }
+ super({ header: HEADER_KEY_TOKEN, prefix: 'Api-Key ' }, true);
+ }
- await this.prismaService.analytics.upsert({
- create: { User: { connect: { id: user.id } } },
- update: {
- activityCount: { increment: 1 },
- lastRequestAt: new Date()
- },
- where: { userId: user.id }
- });
- }
+ public async validate(
+ apiKey: string,
+ done: (error: any, user?: any) => void
+ ) {
+ try {
+ const user = await this.validateApiKey(apiKey);
- done(null, user);
- } catch (error) {
- done(error, null);
+ if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
+ if (hasRole(user, 'INACTIVE')) {
+ throw new HttpException(
+ getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS),
+ StatusCodes.TOO_MANY_REQUESTS
+ );
}
+
+ await this.prismaService.analytics.upsert({
+ create: { User: { connect: { id: user.id } } },
+ update: {
+ activityCount: { increment: 1 },
+ lastRequestAt: new Date()
+ },
+ where: { userId: user.id }
+ });
}
- );
+
+ done(null, user);
+ } catch (error) {
+ done(error, null);
+ }
}
private async validateApiKey(apiKey: string) {
diff --git a/apps/api/src/app/redis-cache/redis-cache.module.ts b/apps/api/src/app/redis-cache/redis-cache.module.ts
index 5411309bd..d0e3228b7 100644
--- a/apps/api/src/app/redis-cache/redis-cache.module.ts
+++ b/apps/api/src/app/redis-cache/redis-cache.module.ts
@@ -1,17 +1,16 @@
import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
+import { createKeyv } from '@keyv/redis';
import { CacheModule } from '@nestjs/cache-manager';
import { Module } from '@nestjs/common';
-import { redisStore } from 'cache-manager-redis-yet';
-import type { RedisClientOptions } from 'redis';
import { RedisCacheService } from './redis-cache.service';
@Module({
exports: [RedisCacheService],
imports: [
- CacheModule.registerAsync({
+ CacheModule.registerAsync({
imports: [ConfigurationModule],
inject: [ConfigurationService],
useFactory: async (configurationService: ConfigurationService) => {
@@ -20,10 +19,13 @@ import { RedisCacheService } from './redis-cache.service';
);
return {
- store: redisStore,
- ttl: configurationService.get('CACHE_TTL'),
- url: `redis://${redisPassword ? `:${redisPassword}` : ''}@${configurationService.get('REDIS_HOST')}:${configurationService.get('REDIS_PORT')}/${configurationService.get('REDIS_DB')}`
- } as RedisClientOptions;
+ stores: [
+ createKeyv(
+ `redis://${redisPassword ? `:${redisPassword}` : ''}@${configurationService.get('REDIS_HOST')}:${configurationService.get('REDIS_PORT')}/${configurationService.get('REDIS_DB')}`
+ )
+ ],
+ ttl: configurationService.get('CACHE_TTL')
+ };
}
}),
ConfigurationModule
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 51db93ec6..97d71ae61 100644
--- a/apps/api/src/app/redis-cache/redis-cache.service.ts
+++ b/apps/api/src/app/redis-cache/redis-cache.service.ts
@@ -2,20 +2,18 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/con
import { getAssetProfileIdentifier } from '@ghostfolio/common/helper';
import { AssetProfileIdentifier, Filter } from '@ghostfolio/common/interfaces';
-import { CACHE_MANAGER } from '@nestjs/cache-manager';
+import { CACHE_MANAGER, Cache } from '@nestjs/cache-manager';
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 {
public constructor(
- @Inject(CACHE_MANAGER) private readonly cache: RedisCache,
+ @Inject(CACHE_MANAGER) private readonly cache: Cache,
private readonly configurationService: ConfigurationService
) {
- const client = cache.store.client;
+ const client = cache.stores[0];
client.on('error', (error) => {
Logger.error(error, 'RedisCacheService');
@@ -27,13 +25,33 @@ export class RedisCacheService {
}
public async getKeys(aPrefix?: string): Promise {
- let prefix = aPrefix;
-
- if (prefix) {
- prefix = `${prefix}*`;
+ const keys: string[] = [];
+ const prefix = aPrefix;
+
+ this.cache.stores[0].deserialize = (value) => {
+ try {
+ return JSON.parse(value);
+ } catch (error: any) {
+ if (error instanceof SyntaxError) {
+ Logger.debug(
+ `Failed to parse json, returning the value as String: ${value}`,
+ 'RedisCacheService'
+ );
+
+ return value;
+ } else {
+ throw error;
+ }
+ }
+ };
+
+ for await (const [key] of this.cache.stores[0].iterator({})) {
+ if ((prefix && key.startsWith(prefix)) || !prefix) {
+ keys.push(key);
+ }
}
- return this.cache.store.keys(prefix);
+ return keys;
}
public getPortfolioSnapshotKey({
@@ -62,10 +80,8 @@ export class RedisCacheService {
public async isHealthy() {
try {
- const client = this.cache.store.client;
-
const isHealthy = await Promise.race([
- client.ping(),
+ this.getKeys(),
new Promise((_, reject) =>
setTimeout(
() => reject(new Error('Redis health check timeout')),
@@ -93,16 +109,14 @@ export class RedisCacheService {
`${this.getPortfolioSnapshotKey({ userId })}`
);
- for (const key of keys) {
- await this.remove(key);
- }
+ return this.cache.mdel(keys);
}
public async reset() {
- return this.cache.reset();
+ return this.cache.clear();
}
- public async set(key: string, value: string, ttl?: Milliseconds) {
+ public async set(key: string, value: string, ttl?: number) {
return this.cache.set(
key,
value,
diff --git a/package-lock.json b/package-lock.json
index 9f7d5b796..a0a96dfd6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -30,17 +30,18 @@
"@dfinity/principal": "0.15.7",
"@dinero.js/currencies": "2.0.0-alpha.8",
"@internationalized/number": "3.6.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.4.15",
- "@nestjs/schedule": "4.1.2",
- "@nestjs/serve-static": "4.0.2",
+ "@keyv/redis": "4.3.4",
+ "@nestjs/bull": "11.0.2",
+ "@nestjs/cache-manager": "3.0.1",
+ "@nestjs/common": "11.1.0",
+ "@nestjs/config": "4.0.2",
+ "@nestjs/core": "11.1.0",
+ "@nestjs/event-emitter": "3.0.1",
+ "@nestjs/jwt": "11.0.0",
+ "@nestjs/passport": "11.0.5",
+ "@nestjs/platform-express": "11.1.0",
+ "@nestjs/schedule": "6.0.0",
+ "@nestjs/serve-static": "5.0.3",
"@prisma/client": "6.7.0",
"@simplewebauthn/browser": "13.1.0",
"@simplewebauthn/server": "13.1.1",
@@ -49,8 +50,6 @@
"big.js": "6.2.2",
"bootstrap": "4.6.2",
"bull": "4.16.5",
- "cache-manager": "5.7.6",
- "cache-manager-redis-yet": "5.1.4",
"chart.js": "4.4.9",
"chartjs-adapter-date-fns": "3.0.0",
"chartjs-chart-treemap": "3.1.0",
@@ -107,8 +106,8 @@
"@angular/pwa": "19.2.1",
"@eslint/eslintrc": "3.3.1",
"@eslint/js": "9.24.0",
- "@nestjs/schematics": "10.2.3",
- "@nestjs/testing": "10.4.15",
+ "@nestjs/schematics": "11.0.5",
+ "@nestjs/testing": "11.1.0",
"@nx/angular": "20.8.1",
"@nx/cypress": "20.8.1",
"@nx/eslint-plugin": "20.8.1",
@@ -127,7 +126,6 @@
"@storybook/core-server": "8.6.12",
"@trivago/prettier-plugin-sort-imports": "5.2.2",
"@types/big.js": "6.2.2",
- "@types/cache-manager": "4.0.6",
"@types/google-spreadsheet": "3.1.5",
"@types/jest": "29.5.13",
"@types/lodash": "4.17.16",
@@ -4923,6 +4921,57 @@
"tslib": "2"
}
},
+ "node_modules/@keyv/redis": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/@keyv/redis/-/redis-4.3.4.tgz",
+ "integrity": "sha512-PLWmawfq9McxEvtHa2Uj5WjI7g6qWtv2eOvXvXJ9tkwEV5vLkqA+pFeZ/0pz9xvP20NQiAkGm4521YJ0DhuFiw==",
+ "license": "MIT",
+ "dependencies": {
+ "cluster-key-slot": "^1.1.2",
+ "redis": "^4.7.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "keyv": "^5.3.3"
+ }
+ },
+ "node_modules/@keyv/serialize": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz",
+ "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "buffer": "^6.0.3"
+ }
+ },
+ "node_modules/@keyv/serialize/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
"node_modules/@kurkle/color": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz",
@@ -6874,52 +6923,55 @@
}
},
"node_modules/@nestjs/bull": {
- "version": "10.2.3",
- "resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-10.2.3.tgz",
- "integrity": "sha512-Gy90JjFCfYhWFBeoBSidc7rEEf2BNhkJ3RfK8ym589POOldwAra2xcnFBi0ZuhhOV60GcrCJBBkdrUbAMM670w==",
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-11.0.2.tgz",
+ "integrity": "sha512-RjyP9JZUuLmMhmq1TMNIZqolkAd14az1jyXMMVki+C9dYvaMjWzBSwcZAtKs9Pk15Rm7qN1xn3R11aMV2Xv4gg==",
"license": "MIT",
"dependencies": {
- "@nestjs/bull-shared": "^10.2.3",
+ "@nestjs/bull-shared": "^11.0.2",
"tslib": "2.8.1"
},
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
- "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0",
+ "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0",
+ "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0",
"bull": "^3.3 || ^4.0.0"
}
},
"node_modules/@nestjs/bull-shared": {
- "version": "10.2.3",
- "resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-10.2.3.tgz",
- "integrity": "sha512-XcgAjNOgq6b5DVCytxhR5BKiwWo7hsusVeyE7sfFnlXRHeEtIuC2hYWBr/ZAtvL/RH0/O0tqtq0rVl972nbhJw==",
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.2.tgz",
+ "integrity": "sha512-dFlttJvBqIFD6M8JVFbkrR4Feb39OTAJPJpFVILU50NOJCM4qziRw3dSNG84Q3v+7/M6xUGMFdZRRGvBBKxoSA==",
"license": "MIT",
"dependencies": {
"tslib": "2.8.1"
},
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
- "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0"
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
+ "@nestjs/core": "^10.0.0 || ^11.0.0"
}
},
"node_modules/@nestjs/cache-manager": {
- "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==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-3.0.1.tgz",
+ "integrity": "sha512-4UxTnR0fsmKL5YDalU2eLFVnL+OBebWUpX+hEduKGncrVKH4PPNoiRn1kXyOCjmzb0UvWgqubpssNouc8e0MCw==",
"license": "MIT",
"peerDependencies": {
- "@nestjs/common": "^9.0.0 || ^10.0.0",
- "@nestjs/core": "^9.0.0 || ^10.0.0",
- "cache-manager": "<=5",
- "rxjs": "^7.0.0"
+ "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0",
+ "@nestjs/core": "^9.0.0 || ^10.0.0 || ^11.0.0",
+ "cache-manager": ">=6",
+ "keyv": ">=5",
+ "rxjs": "^7.8.1"
}
},
"node_modules/@nestjs/common": {
- "version": "10.4.15",
- "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.4.15.tgz",
- "integrity": "sha512-vaLg1ZgwhG29BuLDxPA9OAcIlgqzp9/N8iG0wGapyUNTf4IY4O6zAHgN6QalwLhFxq7nOI021vdRojR1oF3bqg==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.0.tgz",
+ "integrity": "sha512-8MrajltjtIN6eW9cTpv+1IZogqz2Zsrc8YDt0LwQPUq8cSq0j50DETdQpPsNMeib+p9avkV41+NrzGk1z2o5Wg==",
"license": "MIT",
"dependencies": {
+ "file-type": "20.4.1",
"iterare": "1.2.1",
+ "load-esm": "1.0.2",
"tslib": "2.8.1",
"uid": "2.0.2"
},
@@ -6943,43 +6995,46 @@
}
},
"node_modules/@nestjs/config": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.3.0.tgz",
- "integrity": "sha512-pdGTp8m9d0ZCrjTpjkUbZx6gyf2IKf+7zlkrPNMsJzYZ4bFRRTpXrnj+556/5uiI6AfL5mMrJc2u7dB6bvM+VA==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz",
+ "integrity": "sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==",
"license": "MIT",
"dependencies": {
- "dotenv": "16.4.5",
- "dotenv-expand": "10.0.0",
+ "dotenv": "16.4.7",
+ "dotenv-expand": "12.0.1",
"lodash": "4.17.21"
},
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
"rxjs": "^7.1.0"
}
},
"node_modules/@nestjs/core": {
- "version": "10.4.15",
- "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.15.tgz",
- "integrity": "sha512-UBejmdiYwaH6fTsz2QFBlC1cJHM+3UDeLZN+CiP9I1fRv2KlBZsmozGLbV5eS1JAVWJB4T5N5yQ0gjN8ZvcS2w==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.0.tgz",
+ "integrity": "sha512-IeXbTRPrr6xAVbETlDE+miSkNmYf/cPhCa9GU9gFtPO6pVNuAeG/dNrjLVc23mJtUlT/ibdsoW35TlSyHLkzEA==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "@nuxtjs/opencollective": "0.3.2",
+ "@nuxt/opencollective": "0.4.1",
"fast-safe-stringify": "2.1.1",
"iterare": "1.2.1",
- "path-to-regexp": "3.3.0",
+ "path-to-regexp": "8.2.0",
"tslib": "2.8.1",
"uid": "2.0.2"
},
+ "engines": {
+ "node": ">= 20"
+ },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/nest"
},
"peerDependencies": {
- "@nestjs/common": "^10.0.0",
- "@nestjs/microservices": "^10.0.0",
- "@nestjs/platform-express": "^10.0.0",
- "@nestjs/websockets": "^10.0.0",
+ "@nestjs/common": "^11.0.0",
+ "@nestjs/microservices": "^11.0.0",
+ "@nestjs/platform-express": "^11.0.0",
+ "@nestjs/websockets": "^11.0.0",
"reflect-metadata": "^0.1.12 || ^0.2.0",
"rxjs": "^7.1.0"
},
@@ -6995,52 +7050,61 @@
}
}
},
+ "node_modules/@nestjs/core/node_modules/path-to-regexp": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
+ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/@nestjs/event-emitter": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.1.1.tgz",
- "integrity": "sha512-6L6fBOZTyfFlL7Ih/JDdqlCzZeCW0RjCX28wnzGyg/ncv5F/EOeT1dfopQr1loBRQ3LTgu8OWM7n4zLN4xigsg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-3.0.1.tgz",
+ "integrity": "sha512-0Ln/x+7xkU6AJFOcQI9tIhUMXVF7D5itiaQGOyJbXtlAfAIt8gzDdJm+Im7cFzKoWkiW5nCXCPh6GSvdQd/3Dw==",
"license": "MIT",
"dependencies": {
"eventemitter2": "6.4.9"
},
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
- "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0"
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
+ "@nestjs/core": "^10.0.0 || ^11.0.0"
}
},
"node_modules/@nestjs/jwt": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz",
- "integrity": "sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.0.tgz",
+ "integrity": "sha512-v7YRsW3Xi8HNTsO+jeHSEEqelX37TVWgwt+BcxtkG/OfXJEOs6GZdbdza200d6KqId1pJQZ6UPj1F0M6E+mxaA==",
"license": "MIT",
"dependencies": {
- "@types/jsonwebtoken": "9.0.5",
+ "@types/jsonwebtoken": "9.0.7",
"jsonwebtoken": "9.0.2"
},
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0"
+ "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0"
}
},
"node_modules/@nestjs/passport": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-10.0.3.tgz",
- "integrity": "sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-11.0.5.tgz",
+ "integrity": "sha512-ulQX6mbjlws92PIM15Naes4F4p2JoxGnIJuUsdXQPT+Oo2sqQmENEZXM7eYuimocfHnKlcfZOuyzbA33LwUlOQ==",
"license": "MIT",
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
- "passport": "^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0"
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
+ "passport": "^0.5.0 || ^0.6.0 || ^0.7.0"
}
},
"node_modules/@nestjs/platform-express": {
- "version": "10.4.15",
- "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.15.tgz",
- "integrity": "sha512-63ZZPkXHjoDyO7ahGOVcybZCRa7/Scp6mObQKjcX/fTEq1YJeU75ELvMsuQgc8U2opMGOBD7GVuc4DV0oeDHoA==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.0.tgz",
+ "integrity": "sha512-lxv73GT9VdQaxndciqKcyzLsT2j3gMRX+tO6J06oa7RIfp4Dp4oMTIu57lM1gkIJ+gLGq29bob+mfPv/K8RIuw==",
"license": "MIT",
"dependencies": {
- "body-parser": "1.20.3",
"cors": "2.8.5",
- "express": "4.21.2",
- "multer": "1.4.4-lts.1",
+ "express": "5.1.0",
+ "multer": "1.4.5-lts.2",
+ "path-to-regexp": "8.2.0",
"tslib": "2.8.1"
},
"funding": {
@@ -7048,46 +7112,41 @@
"url": "https://opencollective.com/nest"
},
"peerDependencies": {
- "@nestjs/common": "^10.0.0",
- "@nestjs/core": "^10.0.0"
+ "@nestjs/common": "^11.0.0",
+ "@nestjs/core": "^11.0.0"
+ }
+ },
+ "node_modules/@nestjs/platform-express/node_modules/path-to-regexp": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
+ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
}
},
"node_modules/@nestjs/schedule": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-4.1.2.tgz",
- "integrity": "sha512-hCTQ1lNjIA5EHxeu8VvQu2Ed2DBLS1GSC6uKPYlBiQe6LL9a7zfE9iVSK+zuK8E2odsApteEBmfAQchc8Hx0Gg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.0.0.tgz",
+ "integrity": "sha512-aQySMw6tw2nhitELXd3EiRacQRgzUKD9mFcUZVOJ7jPLqIBvXOyvRWLsK9SdurGA+jjziAlMef7iB5ZEFFoQpw==",
"license": "MIT",
"dependencies": {
- "cron": "3.2.1",
- "uuid": "11.0.3"
+ "cron": "4.3.0"
},
"peerDependencies": {
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
- "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0"
- }
- },
- "node_modules/@nestjs/schedule/node_modules/uuid": {
- "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/esm/bin/uuid"
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
+ "@nestjs/core": "^10.0.0 || ^11.0.0"
}
},
"node_modules/@nestjs/schematics": {
- "version": "10.2.3",
- "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.2.3.tgz",
- "integrity": "sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg==",
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.5.tgz",
+ "integrity": "sha512-T50SCNyqCZ/fDssaOD7meBKLZ87ebRLaJqZTJPvJKjlib1VYhMOCwXYsr7bjMPmuPgiQHOwvppz77xN/m6GM7A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "17.3.11",
- "@angular-devkit/schematics": "17.3.11",
+ "@angular-devkit/core": "19.2.6",
+ "@angular-devkit/schematics": "19.2.6",
"comment-json": "4.2.5",
"jsonc-parser": "3.3.1",
"pluralize": "8.0.0"
@@ -7097,26 +7156,26 @@
}
},
"node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": {
- "version": "17.3.11",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz",
- "integrity": "sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ==",
+ "version": "19.2.6",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.6.tgz",
+ "integrity": "sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ajv": "8.12.0",
- "ajv-formats": "2.1.1",
- "jsonc-parser": "3.2.1",
- "picomatch": "4.0.1",
+ "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": "^18.13.0 || >=20.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": "^3.5.2"
+ "chokidar": "^4.0.0"
},
"peerDependenciesMeta": {
"chokidar": {
@@ -7124,186 +7183,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": "17.3.11",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.11.tgz",
- "integrity": "sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ==",
+ "version": "19.2.6",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.6.tgz",
+ "integrity": "sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "17.3.11",
- "jsonc-parser": "3.2.1",
- "magic-string": "0.30.8",
+ "@angular-devkit/core": "19.2.6",
+ "jsonc-parser": "3.3.1",
+ "magic-string": "0.30.17",
"ora": "5.4.1",
"rxjs": "7.8.1"
},
"engines": {
- "node": "^18.13.0 || >=20.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"
}
},
- "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",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "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",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "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"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/@nestjs/schematics/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",
- "optional": true,
- "peer": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "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": "4.0.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz",
- "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/@nestjs/schematics/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",
- "optional": true,
- "peer": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "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/serve-static": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-4.0.2.tgz",
- "integrity": "sha512-cT0vdWN5ar7jDI2NKbhf4LcwJzU4vS5sVpMkVrHuyLcltbrz6JdGi1TfIMMatP2pNiq5Ie/uUdPSFDVaZX/URQ==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-5.0.3.tgz",
+ "integrity": "sha512-0jFjTlSVSLrI+mot8lfm+h2laXtKzCvgsVStv9T1ZBZTDwS26gM5czIhIESmWAod0PfrbCDFiu9C1MglObL8VA==",
"license": "MIT",
"dependencies": {
- "path-to-regexp": "0.2.5"
+ "path-to-regexp": "8.2.0"
},
"peerDependencies": {
- "@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",
- "fastify": "^4.7.0"
+ "@fastify/static": "^8.0.4",
+ "@nestjs/common": "^11.0.2",
+ "@nestjs/core": "^11.0.2",
+ "express": "^5.0.1",
+ "fastify": "^5.2.1"
},
"peerDependenciesMeta": {
"@fastify/static": {
@@ -7318,15 +7230,18 @@
}
},
"node_modules/@nestjs/serve-static/node_modules/path-to-regexp": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.2.5.tgz",
- "integrity": "sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q==",
- "license": "MIT"
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
+ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
},
"node_modules/@nestjs/testing": {
- "version": "10.4.15",
- "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.4.15.tgz",
- "integrity": "sha512-eGlWESkACMKti+iZk1hs6FUY/UqObmMaa8HAN9JLnaYkoLf1Jeh+EuHlGnfqo/Rq77oznNLIyaA3PFjrFDlNUg==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.0.tgz",
+ "integrity": "sha512-gQ+NGshkHbNrDNXMVaPiwduqZ8YHpXrnsQqhSsnyNYOcDNPdBbB+0FDq7XiiklluXqjdLAN8i+bS7MbGlZIhKw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7337,10 +7252,10 @@
"url": "https://opencollective.com/nest"
},
"peerDependencies": {
- "@nestjs/common": "^10.0.0",
- "@nestjs/core": "^10.0.0",
- "@nestjs/microservices": "^10.0.0",
- "@nestjs/platform-express": "^10.0.0"
+ "@nestjs/common": "^11.0.0",
+ "@nestjs/core": "^11.0.0",
+ "@nestjs/microservices": "^11.0.0",
+ "@nestjs/platform-express": "^11.0.0"
},
"peerDependenciesMeta": {
"@nestjs/microservices": {
@@ -7639,9 +7554,9 @@
}
},
"node_modules/@npmcli/redact": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.1.1.tgz",
- "integrity": "sha512-3Hc2KGIkrvJWJqTbvueXzBeZlmvoOxc2jyX00yzr3+sNFquJg0N8hH4SAPLPVrkWIRQICVpVgjrss971awXVnA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.0.tgz",
+ "integrity": "sha512-NyJXHoZwJE0iUsCDTclXf1bWHJTsshtnp5xUN6F2vY+OLJv6d2cNc4Do6fKNkmPToB0GzoffxRh405ibTwG+Og==",
"dev": true,
"license": "ISC",
"engines": {
@@ -7692,22 +7607,20 @@
"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",
- "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==",
+ "node_modules/@nuxt/opencollective": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz",
+ "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==",
"license": "MIT",
"dependencies": {
- "chalk": "^4.1.0",
- "consola": "^2.15.0",
- "node-fetch": "^2.6.1"
+ "consola": "^3.2.3"
},
"bin": {
"opencollective": "bin/opencollective.js"
},
"engines": {
- "node": ">=8.0.0",
- "npm": ">=5.0.0"
+ "node": "^14.18.0 || >=16.10.0",
+ "npm": ">=5.10.0"
}
},
"node_modules/@nx/angular": {
@@ -8151,6 +8064,187 @@
"webpack": "^5.88.0"
}
},
+ "node_modules/@nx/module-federation/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@nx/module-federation/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==",
+ "dev": true,
+ "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/@nx/module-federation/node_modules/cookie": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/@nx/module-federation/node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@nx/module-federation/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/@nx/module-federation/node_modules/express": {
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.7.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.3.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.12",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/@nx/module-federation/node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "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/@nx/module-federation/node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@nx/module-federation/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@nx/module-federation/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==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@nx/module-federation/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==",
+ "dev": true,
+ "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/@nx/module-federation/node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/@nx/nest": {
"version": "20.8.1",
"resolved": "https://registry.npmjs.org/@nx/nest/-/nest-20.8.1.tgz",
@@ -8582,6 +8676,13 @@
"@module-federation/node": "^2.6.26"
}
},
+ "node_modules/@nx/rspack/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@nx/rspack/node_modules/big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
@@ -8592,6 +8693,48 @@
"node": "*"
}
},
+ "node_modules/@nx/rspack/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==",
+ "dev": true,
+ "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/@nx/rspack/node_modules/cookie": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/@nx/rspack/node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@nx/rspack/node_modules/css-loader": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
@@ -8628,6 +8771,82 @@
}
}
},
+ "node_modules/@nx/rspack/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/@nx/rspack/node_modules/express": {
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.7.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.3.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.12",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/@nx/rspack/node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "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/@nx/rspack/node_modules/less-loader": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz",
@@ -8664,6 +8883,62 @@
"node": ">=8.9.0"
}
},
+ "node_modules/@nx/rspack/node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@nx/rspack/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@nx/rspack/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==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@nx/rspack/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==",
+ "dev": true,
+ "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/@nx/rspack/node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/@nx/storybook": {
"version": "20.8.1",
"resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-20.8.1.tgz",
@@ -8755,6 +9030,13 @@
"@types/send": "*"
}
},
+ "node_modules/@nx/webpack/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true,
+ "license": "MIT"
+ },
"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",
@@ -8765,6 +9047,31 @@
"node": "*"
}
},
+ "node_modules/@nx/webpack/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==",
+ "dev": true,
+ "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/@nx/webpack/node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -8803,6 +9110,23 @@
"node": ">= 6"
}
},
+ "node_modules/@nx/webpack/node_modules/cookie": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/@nx/webpack/node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"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",
@@ -8864,6 +9188,82 @@
}
}
},
+ "node_modules/@nx/webpack/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/@nx/webpack/node_modules/express": {
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.7.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.3.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.12",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/@nx/webpack/node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "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/@nx/webpack/node_modules/globby": {
"version": "12.2.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz",
@@ -9009,6 +9409,16 @@
"semver": "bin/semver"
}
},
+ "node_modules/@nx/webpack/node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"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",
@@ -9029,6 +9439,13 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/@nx/webpack/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@nx/webpack/node_modules/parse5": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
@@ -9036,6 +9453,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@nx/webpack/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==",
+ "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",
@@ -9083,6 +9507,22 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/@nx/webpack/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==",
+ "dev": true,
+ "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/@nx/webpack/node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -9096,6 +9536,22 @@
"node": ">=8.10.0"
}
},
+ "node_modules/@nx/webpack/node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/@nx/webpack/node_modules/slash": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
@@ -9624,9 +10080,9 @@
}
},
"node_modules/@polka/url": {
- "version": "1.0.0-next.28",
- "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
- "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==",
+ "version": "1.0.0-next.29",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
+ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
"dev": true,
"license": "MIT"
},
@@ -9640,15 +10096,11 @@
"node": ">=18.18"
},
"peerDependencies": {
- "prisma": "*",
- "typescript": ">=5.1.0"
+ "prisma": "*"
},
"peerDependenciesMeta": {
"prisma": {
"optional": true
- },
- "typescript": {
- "optional": true
}
}
},
@@ -9941,6 +10393,20 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz",
+ "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
"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",
@@ -10179,13 +10645,9 @@
"node": ">=16.0.0"
},
"peerDependencies": {
- "@rspack/tracing": "^1.x",
"@swc/helpers": ">=0.5.1"
},
"peerDependenciesMeta": {
- "@rspack/tracing": {
- "optional": true
- },
"@swc/helpers": {
"optional": true
}
@@ -10264,6 +10726,38 @@
"@rspack/core": "*"
}
},
+ "node_modules/@rspack/dev-server/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rspack/dev-server/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==",
+ "dev": true,
+ "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/@rspack/dev-server/node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -10289,6 +10783,99 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/@rspack/dev-server/node_modules/cookie": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/@rspack/dev-server/node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rspack/dev-server/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/@rspack/dev-server/node_modules/express": {
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.7.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.3.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.12",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/@rspack/dev-server/node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "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/@rspack/dev-server/node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -10327,6 +10914,30 @@
}
}
},
+ "node_modules/@rspack/dev-server/node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@rspack/dev-server/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rspack/dev-server/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==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@rspack/dev-server/node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@@ -10340,6 +10951,22 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/@rspack/dev-server/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==",
+ "dev": true,
+ "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/@rspack/dev-server/node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -10353,6 +10980,22 @@
"node": ">=8.10.0"
}
},
+ "node_modules/@rspack/dev-server/node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/@rspack/lite-tapable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz",
@@ -10451,9 +11094,9 @@
}
},
"node_modules/@sigstore/protobuf-specs": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.4.0.tgz",
- "integrity": "sha512-o09cLSIq9EKyRXwryWDOJagkml9XgQCoCSRjHOnHLnvsivaW7Qznzz6yjfV7PHJHhIvyp8OH7OX8w0Dc5bQK7A==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.4.1.tgz",
+ "integrity": "sha512-7MJXQhIm7dWF9zo7rRtMYh8d2gSnc3+JddeQOTIg6gUN7FjcuckZ9EwGq+ReeQtbbl3Tbf5YqRrWxA1DMfIn+w==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -10479,13 +11122,13 @@
}
},
"node_modules/@sigstore/tuf": {
- "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==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-3.1.1.tgz",
+ "integrity": "sha512-eFFvlcBIoGwVkkwmTi/vEQFSva3xs5Ot3WmBcjgjVdiaoelBLQaQ/ZBfhlG0MnG0cmTYScPpk7eDdGDWUcFUmg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@sigstore/protobuf-specs": "^0.4.0",
+ "@sigstore/protobuf-specs": "^0.4.1",
"tuf-js": "^3.0.1"
},
"engines": {
@@ -10493,15 +11136,15 @@
}
},
"node_modules/@sigstore/verify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.1.0.tgz",
- "integrity": "sha512-kAAM06ca4CzhvjIZdONAL9+MLppW3K48wOFy1TbuaWFW/OMfl8JuTgW0Bm02JB1WJGT/ET2eqav0KTEKmxqkIA==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.1.1.tgz",
+ "integrity": "sha512-hVJD77oT67aowHxwT4+M6PGOp+E2LtLdTK3+FC0lBO9T7sYwItDMXZ7Z07IDCvR1M717a4axbIWckrW67KMP/w==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@sigstore/bundle": "^3.1.0",
"@sigstore/core": "^2.0.0",
- "@sigstore/protobuf-specs": "^0.4.0"
+ "@sigstore/protobuf-specs": "^0.4.1"
},
"engines": {
"node": "^18.17.0 || >=20.5.0"
@@ -11426,9 +12069,9 @@
}
},
"node_modules/@swc/helpers": {
- "version": "0.5.15",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
- "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
+ "version": "0.5.17",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
+ "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.8.0"
@@ -11520,6 +12163,30 @@
"@testing-library/dom": ">=7.21.4"
}
},
+ "node_modules/@tokenizer/inflate": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz",
+ "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "fflate": "^0.8.2",
+ "token-types": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
+ "license": "MIT"
+ },
"node_modules/@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -11737,13 +12404,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/cache-manager": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-4.0.6.tgz",
- "integrity": "sha512-8qL93MF05/xrzFm/LSPtzNEOE1eQF3VwGHAcQEylgp5hDSTe41jtFwbSYAPfyYcVa28y1vYSjIt0c1fLLUiC/Q==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@types/connect": {
"version": "3.4.38",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
@@ -12254,9 +12914,9 @@
"license": "MIT"
},
"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==",
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz",
+ "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==",
"license": "MIT",
"dependencies": {
"@types/node": "*"
@@ -12270,9 +12930,9 @@
"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==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.6.2.tgz",
+ "integrity": "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==",
"license": "MIT"
},
"node_modules/@types/mdx": {
@@ -12569,6 +13229,68 @@
"typescript": ">=4.8.4 <5.9.0"
}
},
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": {
+ "version": "8.29.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz",
+ "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.29.0",
+ "@typescript-eslint/utils": "8.29.0",
+ "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/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
+ "version": "8.29.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz",
+ "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==",
+ "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.29.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz",
+ "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "8.29.0",
+ "@typescript-eslint/types": "8.29.0",
+ "@typescript-eslint/typescript-estree": "8.29.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.9.0"
+ }
+ },
"node_modules/@typescript-eslint/parser": {
"version": "8.29.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz",
@@ -12594,6 +13316,20 @@
"typescript": ">=4.8.4 <5.9.0"
}
},
+ "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
+ "version": "8.29.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz",
+ "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==",
+ "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.29.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz",
@@ -12612,15 +13348,29 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@typescript-eslint/type-utils": {
+ "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": {
"version": "8.29.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz",
- "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz",
+ "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==",
+ "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/type-utils": {
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.0.tgz",
+ "integrity": "sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.29.0",
- "@typescript-eslint/utils": "8.29.0",
+ "@typescript-eslint/typescript-estree": "8.31.0",
+ "@typescript-eslint/utils": "8.31.0",
"debug": "^4.3.4",
"ts-api-utils": "^2.0.1"
},
@@ -12636,10 +13386,94 @@
"typescript": ">=4.8.4 <5.9.0"
}
},
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz",
+ "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.31.0",
+ "@typescript-eslint/visitor-keys": "8.31.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.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/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz",
+ "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.31.0",
+ "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/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/@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.29.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz",
- "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==",
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz",
+ "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12677,6 +13511,20 @@
"typescript": ">=4.8.4 <5.9.0"
}
},
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": {
+ "version": "8.29.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz",
+ "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==",
+ "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/typescript-estree/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@@ -12704,16 +13552,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.29.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz",
- "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==",
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz",
+ "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.29.0",
- "@typescript-eslint/types": "8.29.0",
- "@typescript-eslint/typescript-estree": "8.29.0"
+ "@typescript-eslint/scope-manager": "8.31.0",
+ "@typescript-eslint/types": "8.31.0",
+ "@typescript-eslint/typescript-estree": "8.31.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -12727,6 +13575,108 @@
"typescript": ">=4.8.4 <5.9.0"
}
},
+ "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz",
+ "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.31.0",
+ "@typescript-eslint/visitor-keys": "8.31.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/utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz",
+ "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.31.0",
+ "@typescript-eslint/visitor-keys": "8.31.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.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/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.31.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz",
+ "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.31.0",
+ "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/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": {
+ "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": {
+ "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": "8.29.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz",
@@ -12745,6 +13695,20 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": {
+ "version": "8.29.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz",
+ "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==",
+ "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/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",
@@ -13088,9 +14052,9 @@
"license": "BSD-3-Clause"
},
"node_modules/abbrev": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.0.tgz",
- "integrity": "sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
+ "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
"dev": true,
"license": "ISC",
"engines": {
@@ -13472,12 +14436,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
- "license": "MIT"
- },
"node_modules/array-includes": {
"version": "3.1.8",
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
@@ -14266,45 +15224,6 @@
"dev": true,
"license": "MIT"
},
- "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/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/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
- },
"node_modules/bonjour-service": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz",
@@ -14742,46 +15661,15 @@
}
},
"node_modules/cache-manager": {
- "version": "5.7.6",
- "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-5.7.6.tgz",
- "integrity": "sha512-wBxnBHjDxF1RXpHCBD6HGvKER003Ts7IIm0CHpggliHzN1RZditb7rXoduE1rplc2DEFYKxhLKgFuchXMJje9w==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-6.4.0.tgz",
+ "integrity": "sha512-eUmPyVqQYzWCt7hx1QrYzQ7oC3MGKM1etxxe8zuq1o7IB4NzdBeWcUGDSWYahaI8fkd538SEZRGadyZWQfvOzQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
- "eventemitter3": "^5.0.1",
- "lodash.clonedeep": "^4.5.0",
- "lru-cache": "^10.2.2",
- "promise-coalesce": "^1.1.2"
- },
- "engines": {
- "node": ">= 18"
+ "keyv": "^5.2.3"
}
},
- "node_modules/cache-manager-redis-yet": {
- "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",
- "@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",
- "cache-manager": "^5.7.6",
- "redis": "^4.7.0"
- },
- "engines": {
- "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",
@@ -15830,10 +16718,13 @@
}
},
"node_modules/consola": {
- "version": "2.15.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
- "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
- "license": "MIT"
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz",
+ "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
},
"node_modules/constants-browserify": {
"version": "1.0.0",
@@ -15870,19 +16761,22 @@
"license": "MIT"
},
"node_modules/cookie": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
- "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
- "license": "MIT"
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.6.0"
+ }
},
"node_modules/cookies": {
"version": "0.9.1",
@@ -16064,13 +16958,16 @@
"license": "MIT"
},
"node_modules/cron": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/cron/-/cron-3.2.1.tgz",
- "integrity": "sha512-w2n5l49GMmmkBFEsH9FIDhjZ1n1QgTMOCMGuQtOXs5veNiosZmso6bQGuqOJSYAXXrG84WQFVneNk+Yt0Ua9iw==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/cron/-/cron-4.3.0.tgz",
+ "integrity": "sha512-ciiYNLfSlF9MrDqnbMdRWFiA6oizSF7kA1osPP9lRzNu0Uu+AWog1UKy7SkckiDY2irrNjeO6qLyKnXC8oxmrw==",
"license": "MIT",
"dependencies": {
- "@types/luxon": "~3.4.0",
- "luxon": "~3.5.0"
+ "@types/luxon": "~3.6.0",
+ "luxon": "~3.6.0"
+ },
+ "engines": {
+ "node": ">=18.x"
}
},
"node_modules/cron-parser": {
@@ -17439,9 +18336,9 @@
}
},
"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==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
"license": "Apache-2.0",
"optional": true,
"engines": {
@@ -17647,9 +18544,9 @@
}
},
"node_modules/dotenv": {
- "version": "16.4.5",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
- "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
+ "version": "16.4.7",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
+ "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
@@ -17659,12 +18556,18 @@
}
},
"node_modules/dotenv-expand": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
- "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz",
+ "integrity": "sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==",
"license": "BSD-2-Clause",
+ "dependencies": {
+ "dotenv": "^16.4.5"
+ },
"engines": {
"node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
}
},
"node_modules/dunder-proto": {
@@ -18063,9 +18966,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
- "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
"license": "MIT"
},
"node_modules/es-object-atoms": {
@@ -18836,76 +19739,241 @@
"license": "Apache-2.0"
},
"node_modules/express": {
- "version": "4.21.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
- "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
+ "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
"license": "MIT",
"dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.3",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.7.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~2.0.0",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.3.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.3",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.12",
- "proxy-addr": "~2.0.7",
- "qs": "6.13.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.19.0",
- "serve-static": "1.16.2",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
+ "accepts": "^2.0.0",
+ "body-parser": "^2.2.0",
+ "content-disposition": "^1.0.0",
+ "content-type": "^1.0.5",
+ "cookie": "^0.7.1",
+ "cookie-signature": "^1.2.1",
+ "debug": "^4.4.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "finalhandler": "^2.1.0",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "merge-descriptors": "^2.0.0",
+ "mime-types": "^3.0.0",
+ "on-finished": "^2.4.1",
+ "once": "^1.4.0",
+ "parseurl": "^1.3.3",
+ "proxy-addr": "^2.0.7",
+ "qs": "^6.14.0",
+ "range-parser": "^1.2.1",
+ "router": "^2.2.0",
+ "send": "^1.1.0",
+ "serve-static": "^2.2.0",
+ "statuses": "^2.0.1",
+ "type-is": "^2.0.1",
+ "vary": "^1.1.2"
},
"engines": {
- "node": ">= 0.10.0"
+ "node": ">= 18"
+ }
+ },
+ "node_modules/express/node_modules/accepts": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "^3.0.0",
+ "negotiator": "^1.0.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/express/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "node_modules/express/node_modules/body-parser": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
+ "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
"license": "MIT",
"dependencies": {
- "ms": "2.0.0"
+ "bytes": "^3.1.2",
+ "content-type": "^1.0.5",
+ "debug": "^4.4.0",
+ "http-errors": "^2.0.0",
+ "iconv-lite": "^0.6.3",
+ "on-finished": "^2.4.1",
+ "qs": "^6.14.0",
+ "raw-body": "^3.0.0",
+ "type-is": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/express/node_modules/ms": {
+ "node_modules/express/node_modules/content-disposition": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
+ "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/finalhandler": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
+ "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "on-finished": "^2.4.1",
+ "parseurl": "^1.3.3",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/fresh": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
- "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==",
+ "node_modules/express/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/express/node_modules/media-typer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/mime-types": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
+ "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/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/express/node_modules/negotiator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/qs": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/express/node_modules/send": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
+ "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.5",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "mime-types": "^3.0.1",
+ "ms": "^2.1.3",
+ "on-finished": "^2.4.1",
+ "range-parser": "^1.2.1",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/express/node_modules/serve-static": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
+ "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "parseurl": "^1.3.3",
+ "send": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/express/node_modules/type-is": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
+ "license": "MIT",
+ "dependencies": {
+ "content-type": "^1.0.5",
+ "media-typer": "^1.1.0",
+ "mime-types": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/exsolve": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
- "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
+ "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
"license": "MIT",
"optional": true
},
@@ -19120,10 +20188,9 @@
}
},
"node_modules/fdir": {
- "version": "6.4.3",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
- "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
- "dev": true,
+ "version": "6.4.4",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
+ "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
@@ -19134,6 +20201,12 @@
}
}
},
+ "node_modules/fflate": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
+ "license": "MIT"
+ },
"node_modules/figures": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
@@ -19171,6 +20244,24 @@
"node": ">=16.0.0"
}
},
+ "node_modules/file-type": {
+ "version": "20.4.1",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.4.1.tgz",
+ "integrity": "sha512-hw9gNZXUfZ02Jo0uafWLaFVPter5/k2rfcrjFJJHX/77xtSDOfJuEFb6oKlFV86FLP1SuyHMW1PSk0U9M5tKkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@tokenizer/inflate": "^0.2.6",
+ "strtok3": "^10.2.0",
+ "token-types": "^6.0.0",
+ "uint8array-extras": "^1.4.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/file-type?sponsor=1"
+ }
+ },
"node_modules/filelist": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
@@ -19216,39 +20307,6 @@
"node": ">=8"
}
},
- "node_modules/finalhandler": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
- "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~2.0.0",
- "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/finalhandler/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/finalhandler/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/find-cache-dir": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
@@ -19331,6 +20389,16 @@
"node": ">=16"
}
},
+ "node_modules/flat-cache/node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
"node_modules/flatted": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
@@ -20128,9 +21196,9 @@
}
},
"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==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz",
+ "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==",
"license": "MIT",
"engines": {
"node": ">= 4"
@@ -20473,9 +21541,9 @@
}
},
"node_modules/hosted-git-info": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.2.tgz",
- "integrity": "sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==",
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
+ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -20768,9 +21836,9 @@
}
},
"node_modules/http-parser-js": {
- "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==",
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz",
+ "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==",
"license": "MIT"
},
"node_modules/http-proxy": {
@@ -21273,9 +22341,9 @@
}
},
"node_modules/ioredis": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz",
- "integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==",
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.1.tgz",
+ "integrity": "sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==",
"license": "MIT",
"dependencies": {
"@ioredis/commands": "^1.1.1",
@@ -23696,9 +24764,9 @@
}
},
"node_modules/katex": {
- "version": "0.16.21",
- "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz",
- "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==",
+ "version": "0.16.22",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz",
+ "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==",
"funding": [
"https://opencollective.com/katex",
"https://github.com/sponsors/katex"
@@ -23736,13 +24804,13 @@
}
},
"node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.3.tgz",
+ "integrity": "sha512-Rwu4+nXI9fqcxiEHtbkvoes2X+QfkTRo1TMkPfwzipGsJlJO/z69vqB4FNl9xJ3xCpAcbkvmEabZfPzrwN3+gQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
- "json-buffer": "3.0.1"
+ "@keyv/serialize": "^1.0.3"
}
},
"node_modules/khroma": {
@@ -24715,6 +25783,25 @@
"@lmdb/lmdb-win32-x64": "3.2.6"
}
},
+ "node_modules/load-esm": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.2.tgz",
+ "integrity": "sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ },
+ {
+ "type": "buymeacoffee",
+ "url": "https://buymeacoffee.com/borewit"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=13.2.0"
+ }
+ },
"node_modules/loader-runner": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -24780,12 +25867,6 @@
"license": "MIT",
"optional": true
},
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
- "license": "MIT"
- },
"node_modules/lodash.clonedeepwith": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz",
@@ -25103,9 +26184,9 @@
"license": "ISC"
},
"node_modules/luxon": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz",
- "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz",
+ "integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -25263,10 +26344,13 @@
}
},
"node_modules/merge-descriptors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
- "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
"license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
@@ -25725,9 +26809,9 @@
}
},
"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==",
+ "version": "1.4.5-lts.2",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz",
+ "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==",
"license": "MIT",
"dependencies": {
"append-field": "^1.0.0",
@@ -26817,7 +27901,6 @@
"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": "ISC",
"dependencies": {
"wrappy": "1"
@@ -27198,12 +28281,12 @@
}
},
"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==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"license": "MIT",
"dependencies": {
- "entities": "^4.5.0"
+ "entities": "^6.0.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
@@ -27260,6 +28343,18 @@
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz",
+ "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -27432,12 +28527,6 @@
"devOptional": true,
"license": "ISC"
},
- "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/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -27470,6 +28559,19 @@
"resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
"integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg=="
},
+ "node_modules/peek-readable": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-7.0.0.tgz",
+ "integrity": "sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
@@ -28521,15 +29623,6 @@
"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",
@@ -28743,20 +29836,32 @@
}
},
"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==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz",
+ "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==",
"license": "MIT",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
+ "iconv-lite": "0.6.3",
"unpipe": "1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
+ "node_modules/raw-body/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/react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -29614,6 +30719,37 @@
"points-on-path": "^0.2.1"
}
},
+ "node_modules/router": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "depd": "^2.0.0",
+ "is-promise": "^4.0.0",
+ "parseurl": "^1.3.3",
+ "path-to-regexp": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/router/node_modules/is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
+ "license": "MIT"
+ },
+ "node_modules/router/node_modules/path-to-regexp": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
+ "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/rslog": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/rslog/-/rslog-1.2.3.tgz",
@@ -30226,9 +31362,9 @@
}
},
"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==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz",
+ "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==",
"license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.9",
@@ -30467,21 +31603,6 @@
"node": ">= 0.6"
}
},
- "node_modules/serve-static": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
- "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
- "license": "MIT",
- "dependencies": {
- "encodeurl": "~2.0.0",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.19.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
@@ -31459,6 +32580,23 @@
"node": ">=12.*"
}
},
+ "node_modules/strtok3": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.2.2.tgz",
+ "integrity": "sha512-Xt18+h4s7Z8xyZ0tmBoRmzxcop97R4BAh+dXouUDCYn+Em+1P3qpkUfI5ueWLT8ynC5hZ+q4iPEmGG1urvQGBg==",
+ "license": "MIT",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
"node_modules/style-loader": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz",
@@ -31997,13 +33135,12 @@
"optional": true
},
"node_modules/tinyglobby": {
- "version": "0.2.12",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz",
- "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==",
- "dev": true,
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
+ "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
"license": "MIT",
"dependencies": {
- "fdir": "^6.4.3",
+ "fdir": "^6.4.4",
"picomatch": "^4.0.2"
},
"engines": {
@@ -32071,6 +33208,23 @@
"node": ">=0.6"
}
},
+ "node_modules/token-types": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz",
+ "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==",
+ "license": "MIT",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "ieee754": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
"node_modules/totalist": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
@@ -32864,9 +34018,9 @@
}
},
"node_modules/ufo": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
- "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
+ "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
"license": "MIT",
"optional": true
},
@@ -32888,6 +34042,18 @@
"integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==",
"license": "MIT"
},
+ "node_modules/uint8array-extras": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz",
+ "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/unbox-primitive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
@@ -33302,8 +34468,11 @@
"peer": true,
"dependencies": {
"esbuild": "^0.25.0",
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2",
"postcss": "^8.5.3",
- "rollup": "^4.30.1"
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.13"
},
"bin": {
"vite": "bin/vite.js"
@@ -33366,6 +34535,279 @@
}
}
},
+ "node_modules/vite/node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz",
+ "integrity": "sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz",
+ "integrity": "sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz",
+ "integrity": "sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz",
+ "integrity": "sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz",
+ "integrity": "sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz",
+ "integrity": "sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz",
+ "integrity": "sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz",
+ "integrity": "sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz",
+ "integrity": "sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz",
+ "integrity": "sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz",
+ "integrity": "sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz",
+ "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz",
+ "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz",
+ "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz",
+ "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz",
+ "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz",
+ "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz",
+ "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz",
+ "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "peer": true
+ },
+ "node_modules/vite/node_modules/@types/estree": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/vite/node_modules/postcss": {
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
@@ -33395,6 +34837,46 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/vite/node_modules/rollup": {
+ "version": "4.40.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.2.tgz",
+ "integrity": "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "1.0.7"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.40.2",
+ "@rollup/rollup-android-arm64": "4.40.2",
+ "@rollup/rollup-darwin-arm64": "4.40.2",
+ "@rollup/rollup-darwin-x64": "4.40.2",
+ "@rollup/rollup-freebsd-arm64": "4.40.2",
+ "@rollup/rollup-freebsd-x64": "4.40.2",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.40.2",
+ "@rollup/rollup-linux-arm-musleabihf": "4.40.2",
+ "@rollup/rollup-linux-arm64-gnu": "4.40.2",
+ "@rollup/rollup-linux-arm64-musl": "4.40.2",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.40.2",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2",
+ "@rollup/rollup-linux-riscv64-gnu": "4.40.2",
+ "@rollup/rollup-linux-riscv64-musl": "4.40.2",
+ "@rollup/rollup-linux-s390x-gnu": "4.40.2",
+ "@rollup/rollup-linux-x64-gnu": "4.40.2",
+ "@rollup/rollup-linux-x64-musl": "4.40.2",
+ "@rollup/rollup-win32-arm64-msvc": "4.40.2",
+ "@rollup/rollup-win32-ia32-msvc": "4.40.2",
+ "@rollup/rollup-win32-x64-msvc": "4.40.2",
+ "fsevents": "~2.3.2"
+ }
+ },
"node_modules/vscode-jsonrpc": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
@@ -33761,6 +35243,36 @@
}
}
},
+ "node_modules/webpack-dev-server/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
+ },
+ "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -33785,6 +35297,94 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/webpack-dev-server/node_modules/cookie": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "license": "MIT"
+ },
+ "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/express": {
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.7.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.3.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.12",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
+ "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"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/finalhandler": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "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/webpack-dev-server/node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -33798,9 +35398,9 @@
}
},
"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==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz",
+ "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==",
"license": "MIT",
"dependencies": {
"@types/http-proxy": "^1.17.8",
@@ -33830,6 +35430,27 @@
"node": ">= 10"
}
},
+ "node_modules/webpack-dev-server/node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/webpack-dev-server/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/webpack-dev-server/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/webpack-dev-server/node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@@ -33842,6 +35463,21 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/webpack-dev-server/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"
+ }
+ },
"node_modules/webpack-dev-server/node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -33854,6 +35490,21 @@
"node": ">=8.10.0"
}
},
+ "node_modules/webpack-dev-server/node_modules/serve-static": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/webpack-hot-middleware": {
"version": "2.26.1",
"resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz",
@@ -34182,7 +35833,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "devOptional": true,
"license": "ISC"
},
"node_modules/write-file-atomic": {
diff --git a/package.json b/package.json
index 35ac994e0..637c7ed86 100644
--- a/package.json
+++ b/package.json
@@ -76,17 +76,18 @@
"@dfinity/principal": "0.15.7",
"@dinero.js/currencies": "2.0.0-alpha.8",
"@internationalized/number": "3.6.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.4.15",
- "@nestjs/schedule": "4.1.2",
- "@nestjs/serve-static": "4.0.2",
+ "@keyv/redis": "4.3.4",
+ "@nestjs/bull": "11.0.2",
+ "@nestjs/cache-manager": "3.0.1",
+ "@nestjs/common": "11.1.0",
+ "@nestjs/config": "4.0.2",
+ "@nestjs/core": "11.1.0",
+ "@nestjs/event-emitter": "3.0.1",
+ "@nestjs/jwt": "11.0.0",
+ "@nestjs/passport": "11.0.5",
+ "@nestjs/platform-express": "11.1.0",
+ "@nestjs/schedule": "6.0.0",
+ "@nestjs/serve-static": "5.0.3",
"@prisma/client": "6.7.0",
"@simplewebauthn/browser": "13.1.0",
"@simplewebauthn/server": "13.1.1",
@@ -95,8 +96,6 @@
"big.js": "6.2.2",
"bootstrap": "4.6.2",
"bull": "4.16.5",
- "cache-manager": "5.7.6",
- "cache-manager-redis-yet": "5.1.4",
"chart.js": "4.4.9",
"chartjs-adapter-date-fns": "3.0.0",
"chartjs-chart-treemap": "3.1.0",
@@ -153,8 +152,8 @@
"@angular/pwa": "19.2.1",
"@eslint/eslintrc": "3.3.1",
"@eslint/js": "9.24.0",
- "@nestjs/schematics": "10.2.3",
- "@nestjs/testing": "10.4.15",
+ "@nestjs/schematics": "11.0.5",
+ "@nestjs/testing": "11.1.0",
"@nx/angular": "20.8.1",
"@nx/cypress": "20.8.1",
"@nx/eslint-plugin": "20.8.1",
@@ -173,7 +172,6 @@
"@storybook/core-server": "8.6.12",
"@trivago/prettier-plugin-sort-imports": "5.2.2",
"@types/big.js": "6.2.2",
- "@types/cache-manager": "4.0.6",
"@types/google-spreadsheet": "3.1.5",
"@types/jest": "29.5.13",
"@types/lodash": "4.17.16",
From 8e76bd82ebf7f9584ce6d0b7dfdb3e24f9d93b03 Mon Sep 17 00:00:00 2001
From: Hash Palak
Date: Thu, 8 May 2025 12:30:44 +0600
Subject: [PATCH 03/40] Feature/improve language localization for Catalan
(#4675)
* Improve language localization for Catalan
* Update changelog
---
CHANGELOG.md | 1 +
apps/client/src/locales/messages.ca.xlf | 328 ++++++++++++------------
2 files changed, 165 insertions(+), 164 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 374672e54..f46976a8c 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
+- Improved the language localization for Catalan (`ca`)
- Upgraded `nestjs` from version `10.4.15` to `11.0.12`
## 2.161.0 - 2025-05-06
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index 2d267d24e..6d9e77f43 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -848,7 +848,7 @@
Grantee
- Grantee
+ Beneficiari
apps/client/src/app/components/access-table/access-table.component.html
11
@@ -1400,7 +1400,7 @@
View Stacktrace
- View Stacktrace
+ Veure Stacktrace
apps/client/src/app/components/admin-jobs/admin-jobs.html
173
@@ -2716,15 +2716,15 @@
Get a comprehensive financial overview by adding your bank and brokerage accounts.
- Get a comprehensive financial overview by adding your bank and brokerage accounts.
-
+ Obtingueu una visió financera completa afegint els vostres comptes bancaris i de corredoria.
+
apps/client/src/app/components/home-overview/home-overview.html
17
Capture your activities
- Capture your activities
+ Captura les teves activitats
apps/client/src/app/components/home-overview/home-overview.html
24
@@ -2732,15 +2732,15 @@
Record your investment activities to keep your portfolio up to date.
- Record your investment activities to keep your portfolio up to date.
-
+ Registra les teves activitats d’inversió per mantenir la teva cartera actualitzada.
+
apps/client/src/app/components/home-overview/home-overview.html
26
Monitor and analyze your portfolio
- Monitor and analyze your portfolio
+ Superviseu i analitzeu la vostra cartera
apps/client/src/app/components/home-overview/home-overview.html
33
@@ -2748,7 +2748,7 @@
Track your progress in real-time with comprehensive analysis and insights.
- Track your progress in real-time with comprehensive analysis and insights.
+ Segueix el teu progrés en temps real amb anàlisis i informació exhaustiva.
apps/client/src/app/components/home-overview/home-overview.html
35
@@ -2756,7 +2756,7 @@
Setup accounts
- Setup accounts
+ Configurar comptes
apps/client/src/app/components/home-overview/home-overview.html
44
@@ -2764,7 +2764,7 @@
Add activity
- Add activity
+ Afegeix activitat
apps/client/src/app/components/home-overview/home-overview.html
52
@@ -2776,7 +2776,7 @@
Summary
- Summary
+ Resum
apps/client/src/app/components/home-summary/home-summary.html
2
@@ -2784,7 +2784,7 @@
Total Amount
- Total Amount
+ Import total
apps/client/src/app/components/investment-chart/investment-chart.component.ts
141
@@ -2792,7 +2792,7 @@
Savings Rate
- Savings Rate
+ Taxa d’estalvi
apps/client/src/app/components/investment-chart/investment-chart.component.ts
200
@@ -2800,7 +2800,7 @@
Security Token
- Security Token
+ Fitxa de seguretat
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
11
@@ -2820,7 +2820,7 @@
or
- or
+ o
apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
32
@@ -2852,7 +2852,7 @@
Sign in with Internet Identity
- Sign in with Internet Identity
+ Inicieu la sessió amb la identitat d’Internet
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
42
@@ -2860,7 +2860,7 @@
Sign in with Google
- Sign in with Google
+ Inicieu la sessió amb Google
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
52
@@ -2868,7 +2868,7 @@
Stay signed in
- Stay signed in
+ Manteniu la sessió iniciada
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
61
@@ -2876,7 +2876,7 @@
Oops! A data provider is experiencing the hiccups.
- Oops! A data provider is experiencing the hiccups.
+ Ups! Un proveïdor de dades està tenint problemes.
apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html
8
@@ -2884,7 +2884,7 @@
Market data is delayed for
- Market data is delayed for
+ Les dades del mercat s’han retardat
apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts
87
@@ -2892,7 +2892,7 @@
Time in Market
- Time in Market
+ Temps al mercat
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
3
@@ -2908,7 +2908,7 @@
Buy
- Buy
+ Compra
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
31
@@ -2916,7 +2916,7 @@
Sell
- Sell
+ Vendre
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
43
@@ -2924,7 +2924,7 @@
Absolute Gross Performance
- Absolute Gross Performance
+ Rendiment brut absolut
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
70
@@ -2932,7 +2932,7 @@
Absolute Net Performance
- Absolute Net Performance
+ Rendiment net absolut
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
102
@@ -2940,7 +2940,7 @@
Net Performance
- Net Performance
+ Rendiment net
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
117
@@ -2948,7 +2948,7 @@
Total Assets
- Total Assets
+ Actius totals
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
143
@@ -2956,7 +2956,7 @@
Valuables
- Valuables
+ Objectes de valor
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
156
@@ -2964,7 +2964,7 @@
Emergency Fund
- Emergency Fund
+ Fons d’emergència
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
168
@@ -2980,7 +2980,7 @@
Cash
- Cash
+ Efectiu
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
202
@@ -2988,7 +2988,7 @@
Assets
- Assets
+ Actius
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
215
@@ -2996,7 +2996,7 @@
Buying Power
- Buying Power
+ Poder adquisitiu
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
228
@@ -3004,7 +3004,7 @@
Excluded from Analysis
- Excluded from Analysis
+ Exclòs de l'anàlisi
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
240
@@ -3012,7 +3012,7 @@
Liabilities
- Liabilities
+ Passius
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
255
@@ -3024,7 +3024,7 @@
Net Worth
- Net Worth
+ Valor net
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
273
@@ -3032,7 +3032,7 @@
Annualized Performance
- Annualized Performance
+ Rendiment anualitzat
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
285
@@ -3040,7 +3040,7 @@
Interest
- Interest
+ Interès
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
307
@@ -3048,7 +3048,7 @@
Please set the amount of your emergency fund.
- Please set the amount of your emergency fund.
+ Definiu l’import del vostre fons d’emergència.
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
64
@@ -3056,7 +3056,7 @@
Are you an ambitious investor who needs the full picture?
- Are you an ambitious investor who needs the full picture?
+ Ets un inversor ambiciós que necessita la imatge completa?
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
14
@@ -3064,7 +3064,7 @@
Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience:
- Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience:
+ Actualitza a Ghostfolio Premium avui mateix i obtén accés a funcions exclusives per millorar la teva experiència d’inversió:
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
17
@@ -3072,7 +3072,7 @@
Portfolio Summary
- Portfolio Summary
+ Resum de la cartera
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
24
@@ -3088,7 +3088,7 @@
Portfolio Allocations
- Portfolio Allocations
+ Assignacions de cartera
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
28
@@ -3108,7 +3108,7 @@
Performance Benchmarks
- Performance Benchmarks
+ Punts de referència de rendiment
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
32
@@ -3124,7 +3124,7 @@
FIRE Calculator
- FIRE Calculator
+ Calculadora de FOC
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
36
@@ -3140,7 +3140,7 @@
Professional Data Provider
- Professional Data Provider
+ Proveïdor de dades professional
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
40
@@ -3152,7 +3152,7 @@
and more Features...
- and more Features...
+ i més característiques...
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
44
@@ -3168,7 +3168,7 @@
Get the tools to effectively manage your finances and refine your personal investment strategy.
- Get the tools to effectively manage your finances and refine your personal investment strategy.
+ Aconsegueix les eines per gestionar eficaçment les teves finances i refinar la teva estratègia d’inversió personal.
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
47
@@ -3176,7 +3176,7 @@
Skip
- Skip
+ Saltar
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
59
@@ -3188,7 +3188,7 @@
Today
- Today
+ Avui
apps/client/src/app/components/toggle/toggle.component.ts
22
@@ -3212,7 +3212,7 @@
1Y
- 1Y
+ 1 any
apps/client/src/app/components/toggle/toggle.component.ts
24
@@ -3224,7 +3224,7 @@
5Y
- 5Y
+ 5 anys
apps/client/src/app/components/toggle/toggle.component.ts
25
@@ -3236,7 +3236,7 @@
Max
- Max
+ Màx
apps/client/src/app/components/toggle/toggle.component.ts
26
@@ -3248,7 +3248,7 @@
Oops! Could not grant access.
- Oops! Could not grant access.
+ Vaja! No s’ha pogut concedir l’accés.
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
91
@@ -3256,7 +3256,7 @@
Grant access
- Grant access
+ Concedeix accés
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
7
@@ -3264,7 +3264,7 @@
Private
- Private
+ Privat
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
24
@@ -3272,7 +3272,7 @@
Public
- Public
+ Públic
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
25
@@ -3280,7 +3280,7 @@
User ID
- User ID
+ ID d’usuari
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
45
@@ -3292,7 +3292,7 @@
Granted Access
- Granted Access
+ Accés concedit
apps/client/src/app/components/user-account-access/user-account-access.html
7
@@ -3300,7 +3300,7 @@
Please enter your coupon code.
- Please enter your coupon code.
+ Introduïu el vostre codi de cupó.
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
201
@@ -3308,7 +3308,7 @@
Could not redeem coupon code
- Could not redeem coupon code
+ No s’ha pogut bescanviar el codi de cupó
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
165
@@ -3316,7 +3316,7 @@
Coupon code has been redeemed
- Coupon code has been redeemed
+ El codi del cupó s’ha bescanviat
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
178
@@ -3324,7 +3324,7 @@
Reload
- Reload
+ Torna a carregar
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
179
@@ -3332,7 +3332,7 @@
per year
- per year
+ per any
apps/client/src/app/components/user-account-membership/user-account-membership.html
32
@@ -3344,7 +3344,7 @@
Try Premium
- Try Premium
+ Prova Premium
apps/client/src/app/components/user-account-membership/user-account-membership.html
49
@@ -3352,7 +3352,7 @@
Redeem Coupon
- Redeem Coupon
+ Bescanviar el cupó
apps/client/src/app/components/user-account-membership/user-account-membership.html
63
@@ -3360,7 +3360,7 @@
Auto
- Auto
+ Automàtic
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
39
@@ -3368,7 +3368,7 @@
Do you really want to close your Ghostfolio account?
- Do you really want to close your Ghostfolio account?
+ De debò vols tancar el teu compte de Ghostfolio?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
174
@@ -3376,7 +3376,7 @@
Do you really want to remove this sign in method?
- Do you really want to remove this sign in method?
+ De debò vols eliminar aquest mètode d’inici de sessió?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
248
@@ -3384,7 +3384,7 @@
Oops! There was an error setting up biometric authentication.
- Oops! There was an error setting up biometric authentication.
+ Ups! Hi ha hagut un error en configurar l’autenticació biomètrica.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
302
@@ -3392,7 +3392,7 @@
Settings
- Settings
+ Configuració
apps/client/src/app/components/user-account-settings/user-account-settings.html
2
@@ -3400,7 +3400,7 @@
Presenter View
- Presenter View
+ Vista del presentador
apps/client/src/app/components/user-account-settings/user-account-settings.html
185
@@ -3408,7 +3408,7 @@
Protection for sensitive information like absolute performances and quantity values
- Protection for sensitive information like absolute performances and quantity values
+ Protecció per a informació sensible com ara rendiments absoluts i valors de quantitat
apps/client/src/app/components/user-account-settings/user-account-settings.html
186
@@ -3416,7 +3416,7 @@
Base Currency
- Base Currency
+ Moneda base
apps/client/src/app/components/user-account-settings/user-account-settings.html
9
@@ -3424,7 +3424,7 @@
Language
- Language
+ Llengua
apps/client/src/app/components/user-account-settings/user-account-settings.html
56
@@ -3432,7 +3432,7 @@
If a translation is missing, kindly support us in extending it here.
- If a translation is missing, kindly support us in extending it here.
+ Si falta alguna traducció, si us plau, ajudeu-nos a ampliar-la aquí.
apps/client/src/app/components/user-account-settings/user-account-settings.html
58
@@ -3440,7 +3440,7 @@
Locale
- Locale
+ Localització
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
414
@@ -3452,7 +3452,7 @@
Date and number format
- Date and number format
+ Format de data i número
apps/client/src/app/components/user-account-settings/user-account-settings.html
137
@@ -3460,7 +3460,7 @@
Appearance
- Appearance
+ Aparença
apps/client/src/app/components/user-account-settings/user-account-settings.html
160
@@ -3468,7 +3468,7 @@
Auto
- Auto
+ Automàtic
apps/client/src/app/components/user-account-settings/user-account-settings.html
174
@@ -3476,7 +3476,7 @@
Light
- Light
+ Llum
apps/client/src/app/components/user-account-settings/user-account-settings.html
175
@@ -3484,7 +3484,7 @@
Dark
- Dark
+ Fosc
apps/client/src/app/components/user-account-settings/user-account-settings.html
176
@@ -3492,7 +3492,7 @@
Zen Mode
- Zen Mode
+ Mode Zen
apps/client/src/app/components/user-account-settings/user-account-settings.html
203
@@ -3504,7 +3504,7 @@
Distraction-free experience for turbulent times
- Distraction-free experience for turbulent times
+ Experiència sense distraccions per a temps turbulents
apps/client/src/app/components/user-account-settings/user-account-settings.html
204
@@ -3512,7 +3512,7 @@
Biometric Authentication
- Biometric Authentication
+ Autenticació biomètrica
apps/client/src/app/components/user-account-settings/user-account-settings.html
220
@@ -3520,7 +3520,7 @@
Sign in with fingerprint
- Sign in with fingerprint
+ Inicieu la sessió amb l’empremta digital
apps/client/src/app/components/user-account-settings/user-account-settings.html
221
@@ -3528,7 +3528,7 @@
Experimental Features
- Experimental Features
+ Característiques experimentals
apps/client/src/app/components/user-account-settings/user-account-settings.html
237
@@ -3536,7 +3536,7 @@
Sneak peek at upcoming functionality
- Sneak peek at upcoming functionality
+ Doneu un cop d’ull a les properes funcionalitats
apps/client/src/app/components/user-account-settings/user-account-settings.html
238
@@ -3544,7 +3544,7 @@
Export Data
- Export Data
+ Exporta dades
apps/client/src/app/components/user-account-settings/user-account-settings.html
262
@@ -3552,7 +3552,7 @@
Danger Zone
- Danger Zone
+ Zona de perill
apps/client/src/app/components/user-account-settings/user-account-settings.html
274
@@ -3560,7 +3560,7 @@
Close Account
- Close Account
+ Tanca el compte
apps/client/src/app/components/user-account-settings/user-account-settings.html
309
@@ -3568,7 +3568,7 @@
This feature is currently unavailable.
- This feature is currently unavailable.
+ Aquesta funció no està disponible actualment.
apps/client/src/app/core/http-response.interceptor.ts
54
@@ -3576,7 +3576,7 @@
Please try again later.
- Please try again later.
+ Si us plau, torna-ho a provar més tard.
apps/client/src/app/core/http-response.interceptor.ts
56
@@ -3592,7 +3592,7 @@
This action is not allowed.
- This action is not allowed.
+ Aquesta acció no està permesa.
apps/client/src/app/core/http-response.interceptor.ts
64
@@ -3600,7 +3600,7 @@
Oops! Something went wrong.
- Oops! Something went wrong.
+ Vaja! Alguna cosa va fallar.
apps/client/src/app/core/http-response.interceptor.ts
83
@@ -3612,7 +3612,7 @@
Okay
- Okay
+ D’acord
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
140
@@ -3628,7 +3628,7 @@
Oops! It looks like you’re making too many requests. Please slow down a bit.
- Oops! It looks like you’re making too many requests. Please slow down a bit.
+ Ups! Sembla que esteu fent massa sol·licituds. Si us plau, aneu una mica més lent.
apps/client/src/app/core/http-response.interceptor.ts
103
@@ -3636,7 +3636,7 @@
About
- About
+ Sobre
apps/client/src/app/pages/about/about-page-routing.module.ts
58
@@ -3652,7 +3652,7 @@
Changelog
- Changelog
+ Registre de canvis
apps/client/src/app/pages/about/about-page.component.ts
50
@@ -3664,7 +3664,7 @@
License
- License
+ llicència
apps/client/src/app/pages/about/about-page.component.ts
55
@@ -3676,7 +3676,7 @@
Privacy Policy
- Privacy Policy
+ Política de privadesa
apps/client/src/app/pages/about/about-page.component.ts
64
@@ -3688,7 +3688,7 @@
Our
- Our
+ El nostre
apps/client/src/app/pages/about/oss-friends/oss-friends-page.html
6
@@ -3696,7 +3696,7 @@
Discover other exciting Open Source Software projects
- Discover other exciting Open Source Software projects
+ Descobriu altres projectes de programari de codi obert emocionants
apps/client/src/app/pages/about/oss-friends/oss-friends-page.html
9
@@ -3704,7 +3704,7 @@
Visit
- Visit
+ Visita
apps/client/src/app/pages/about/oss-friends/oss-friends-page.html
28
@@ -3712,7 +3712,7 @@
Accounts
- Accounts
+ Comptes
apps/client/src/app/pages/accounts/accounts-page-routing.module.ts
13
@@ -3720,7 +3720,7 @@
Oops, cash balance transfer has failed.
- Oops, cash balance transfer has failed.
+ Vaja, la transferència del saldo en efectiu ha fallat.
apps/client/src/app/pages/accounts/accounts-page.component.ts
318
@@ -3728,7 +3728,7 @@
Update account
- Update account
+ Actualitza el compte
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
8
@@ -3736,7 +3736,7 @@
Add account
- Add account
+ Afegeix un compte
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
10
@@ -3744,7 +3744,7 @@
Account ID
- Account ID
+ ID del compte
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
96
@@ -3752,7 +3752,7 @@
From
- From
+ Des de
apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html
11
@@ -3760,7 +3760,7 @@
To
- To
+ A
apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html
32
@@ -3768,7 +3768,7 @@
Transfer
- Transfer
+ Transferència
apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html
72
@@ -3776,7 +3776,7 @@
Admin Control
- Admin Control
+ Control d’administració
apps/client/src/app/pages/admin/admin-page-routing.module.ts
20
@@ -3784,7 +3784,7 @@
Job Queue
- Job Queue
+ Cua de treball
apps/client/src/app/pages/admin/admin-page-routing.module.ts
25
@@ -3796,7 +3796,7 @@
Market Data
- Market Data
+ Dades de mercat
apps/client/src/app/pages/admin/admin-page-routing.module.ts
30
@@ -3808,7 +3808,7 @@
Settings
- Settings
+ Configuració
apps/client/src/app/pages/admin/admin-page-routing.module.ts
35
@@ -3828,7 +3828,7 @@
Users
- Users
+ Usuaris
apps/client/src/app/pages/admin/admin-page-routing.module.ts
40
@@ -3840,7 +3840,7 @@
Overview
- Overview
+ Visió general
apps/client/src/app/pages/admin/admin-page.component.ts
28
@@ -3864,7 +3864,7 @@
Blog
- Blog
+ Bloc
apps/client/src/app/pages/blog/blog-page-routing.module.ts
13
@@ -3872,7 +3872,7 @@
Discover the latest Ghostfolio updates and insights on personal finance
- Discover the latest Ghostfolio updates and insights on personal finance
+ Descobriu les últimes actualitzacions i perspectives de Ghostfolio sobre finances personals
apps/client/src/app/pages/blog/blog-page.html
7
@@ -3880,7 +3880,7 @@
As you are already logged in, you cannot access the demo account.
- As you are already logged in, you cannot access the demo account.
+ Com que ja has iniciat sessió, no pots accedir al compte de demostració.
apps/client/src/app/pages/demo/demo-page.component.ts
35
@@ -3888,7 +3888,7 @@
Frequently Asked Questions (FAQ)
- Frequently Asked Questions (FAQ)
+ Preguntes freqüents (FAQ)
apps/client/src/app/pages/faq/faq-page-routing.module.ts
34
@@ -3908,7 +3908,7 @@
Cloud
- Cloud
+ Núvol
apps/client/src/app/pages/faq/faq-page.component.ts
42
@@ -3920,7 +3920,7 @@
Self-Hosting
- Self-Hosting
+ Autoallotjament
apps/client/src/app/pages/faq/faq-page.component.ts
48
@@ -3932,7 +3932,7 @@
self-hosting
- self-hosting
+ autoallotjament
apps/client/src/app/pages/faq/faq-page.component.ts
49
@@ -3940,7 +3940,7 @@
Frequently Asked Questions (FAQ)
- Frequently Asked Questions (FAQ)
+ Preguntes freqüents (FAQ)
apps/client/src/app/pages/faq/overview/faq-overview-page.html
4
@@ -3956,7 +3956,7 @@
FAQ
- FAQ
+ FAQ
apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts
13
@@ -3968,7 +3968,7 @@
Check out the numerous features of Ghostfolio to manage your wealth
- Check out the numerous features of Ghostfolio to manage your wealth
+ Fes una ullada a les nombroses funcions de Ghostfolio per gestionar el teu patrimoni
apps/client/src/app/pages/features/features-page.html
6
@@ -3976,7 +3976,7 @@
Stocks
- Stocks
+ Stocks
apps/client/src/app/pages/features/features-page.html
15
@@ -3992,7 +3992,7 @@
Bonds
- Bonds
+ Bons
apps/client/src/app/pages/features/features-page.html
38
@@ -4000,7 +4000,7 @@
Cryptocurrencies
- Cryptocurrencies
+ Criptomonedes
apps/client/src/app/pages/features/features-page.html
51
@@ -4008,7 +4008,7 @@
Wealth Items
- Wealth Items
+ Articles de riquesa
apps/client/src/app/pages/features/features-page.html
76
@@ -4016,7 +4016,7 @@
Import and Export
- Import and Export
+ Importació i exportació
apps/client/src/app/pages/features/features-page.html
115
@@ -4024,7 +4024,7 @@
Multi-Accounts
- Multi-Accounts
+ Multicomptes
apps/client/src/app/pages/features/features-page.html
127
@@ -4032,7 +4032,7 @@
Portfolio Calculations
- Portfolio Calculations
+ Càlculs de cartera
apps/client/src/app/pages/features/features-page.html
141
@@ -4040,7 +4040,7 @@
Dark Mode
- Dark Mode
+ Mode fosc
apps/client/src/app/pages/features/features-page.html
233
@@ -4048,7 +4048,7 @@
Market Mood
- Market Mood
+ Estat d’ànim del mercat
apps/client/src/app/pages/features/features-page.html
215
@@ -4056,7 +4056,7 @@
Static Analysis
- Static Analysis
+ Anàlisi estàtica
apps/client/src/app/pages/features/features-page.html
179
@@ -4064,7 +4064,7 @@
Multi-Language
- Multi-Language
+ Multi-idioma
apps/client/src/app/pages/features/features-page.html
259
@@ -4072,7 +4072,7 @@
Open Source Software
- Open Source Software
+ Programari de codi obert
apps/client/src/app/pages/features/features-page.html
296
@@ -4080,7 +4080,7 @@
Get Started
- Get Started
+ Comença
apps/client/src/app/pages/features/features-page.html
321
@@ -4092,7 +4092,7 @@
Holdings
- Holdings
+ Explotacions
apps/client/src/app/pages/home/home-page-routing.module.ts
24
@@ -4112,7 +4112,7 @@
Summary
- Summary
+ Resum
apps/client/src/app/pages/home/home-page-routing.module.ts
34
@@ -4124,7 +4124,7 @@
Markets
- Markets
+ Mercats
apps/client/src/app/pages/home/home-page-routing.module.ts
39
@@ -4148,7 +4148,7 @@
Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms.
- Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms.
+ Ghostfolio és un tauler de control de finances personals per fer un seguiment del teu patrimoni net, incloent-hi efectiu, accions, ETF i criptomonedes en múltiples plataformes.
apps/client/src/app/pages/i18n/i18n-page.html
4
@@ -4156,7 +4156,7 @@
app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3
- app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3
+ aplicació, actiu, criptomoneda, tauler de control, ETF, finances, gestió, rendiment, cartera, programari, acció, negociació, riquesa, web3
apps/client/src/app/pages/i18n/i18n-page.html
9
@@ -4164,7 +4164,7 @@
My Account
- My Account
+ El meu compte
apps/client/src/app/pages/i18n/i18n-page.html
13
@@ -4172,7 +4172,7 @@
Open Source Wealth Management Software
- Open Source Wealth Management Software
+ Programari de gestió patrimonial de codi obert
apps/client/src/app/pages/i18n/i18n-page.html
14
@@ -4180,7 +4180,7 @@
Manage your wealth like a boss
- Manage your wealth like a boss
+ Gestiona la teva riquesa com un cap
apps/client/src/app/pages/landing/landing-page.html
5
@@ -4188,7 +4188,7 @@
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 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 és un tauler de control de codi obert i amb privacitat per a les teves finances personals. Analitza la distribució dels teus actius, coneix el teu patrimoni net i pren decisions d’inversió sòlides i basades en dades.
apps/client/src/app/pages/landing/landing-page.html
9
@@ -4196,7 +4196,7 @@
Get Started
- Get Started
+ Comença
apps/client/src/app/pages/landing/landing-page.html
41
@@ -4208,7 +4208,7 @@
Live Demo
- Live Demo
+ Demostració en directe
apps/client/src/app/pages/landing/landing-page.html
49
@@ -4220,7 +4220,7 @@
Monthly Active Users
- Monthly Active Users
+ Usuaris actius mensuals
apps/client/src/app/pages/landing/landing-page.html
70
@@ -4228,7 +4228,7 @@
Stars on GitHub
- Stars on GitHub
+ Estrelles a GitHub
apps/client/src/app/pages/landing/landing-page.html
88
@@ -4240,7 +4240,7 @@
Pulls on Docker Hub
- Pulls on Docker Hub
+ Activa el Docker Hub
apps/client/src/app/pages/landing/landing-page.html
106
@@ -4252,7 +4252,7 @@
As seen in
- As seen in
+ Com es veu a
apps/client/src/app/pages/landing/landing-page.html
115
@@ -4260,7 +4260,7 @@
Protect your assets. Refine your personal investment strategy.
- Protect your assets. Refine your personal investment strategy.
+ Protegeix els teus actius. Refina la teva estratègia d’inversió personal.
apps/client/src/app/pages/landing/landing-page.html
225
@@ -4268,7 +4268,7 @@
Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked.
- Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked.
+ Ghostfolio permet a la gent ocupada fer un seguiment d’accions, ETF o criptomonedes sense ser rastrejada.
apps/client/src/app/pages/landing/landing-page.html
229
@@ -4276,7 +4276,7 @@
360° View
- 360° View
+ Vista de 360°
apps/client/src/app/pages/landing/landing-page.html
240
@@ -4284,7 +4284,7 @@
Get the full picture of your personal finances across multiple platforms.
- Get the full picture of your personal finances across multiple platforms.
+ Obtingueu la imatge completa de les vostres finances personals en múltiples plataformes.
apps/client/src/app/pages/landing/landing-page.html
242
@@ -4292,7 +4292,7 @@
Web3 Ready
- Web3 Ready
+ Web3 llest
apps/client/src/app/pages/landing/landing-page.html
251
@@ -4300,7 +4300,7 @@
Use Ghostfolio anonymously and own your financial data.
- Use Ghostfolio anonymously and own your financial data.
+ Utilitza Ghostfolio de manera anònima i sigues propietari de les teves dades financeres.
apps/client/src/app/pages/landing/landing-page.html
253
@@ -4308,7 +4308,7 @@
Open Source
- Open Source
+ codi obert
apps/client/src/app/pages/landing/landing-page.html
261
@@ -4316,7 +4316,7 @@
Benefit from continuous improvements through a strong community.
- Benefit from continuous improvements through a strong community.
+ Beneficia’t de millores contínues gràcies a una comunitat forta.
apps/client/src/app/pages/landing/landing-page.html
263
From aadd9f56a041fe6d9ebf851e400b22c2cac3d95a Mon Sep 17 00:00:00 2001
From: Felix Jordan
Date: Thu, 8 May 2025 21:08:19 +0600
Subject: [PATCH 04/40] Feature/extend admin endpoint by asset profile count
per data provider (#4676)
* Extend admin endpoint by asset profile count per data provider
* Update changelog
---
CHANGELOG.md | 4 +++
apps/api/src/app/admin/admin.service.ts | 25 +++++++++++++++----
.../lib/interfaces/admin-data.interface.ts | 2 +-
3 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f46976a8c..1fd31d817 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 the asset profile count per data provider to the endpoint `GET api/v1/admin`
+
### Changed
- Improved the language localization for Catalan (`ca`)
diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts
index 79beedea9..e4c50c1f2 100644
--- a/apps/api/src/app/admin/admin.service.ts
+++ b/apps/api/src/app/admin/admin.service.ts
@@ -143,15 +143,30 @@ export class AdminService {
this.countUsersWithAnalytics()
]);
+ const dataProviders = await Promise.all(
+ dataSources.map(async (dataSource) => {
+ const dataProviderInfo = this.dataProviderService
+ .getDataProvider(dataSource)
+ .getDataProviderInfo();
+
+ const assetProfileCount = await this.prismaService.symbolProfile.count({
+ where: {
+ dataSource
+ }
+ });
+
+ return {
+ ...dataProviderInfo,
+ assetProfileCount
+ };
+ })
+ );
+
return {
+ dataProviders,
settings,
transactionCount,
userCount,
- dataProviders: dataSources.map((dataSource) => {
- return this.dataProviderService
- .getDataProvider(dataSource)
- .getDataProviderInfo();
- }),
version: environment.version
};
}
diff --git a/libs/common/src/lib/interfaces/admin-data.interface.ts b/libs/common/src/lib/interfaces/admin-data.interface.ts
index dba85d3ef..cef983902 100644
--- a/libs/common/src/lib/interfaces/admin-data.interface.ts
+++ b/libs/common/src/lib/interfaces/admin-data.interface.ts
@@ -1,7 +1,7 @@
import { DataProviderInfo } from './data-provider-info.interface';
export interface AdminData {
- dataProviders: DataProviderInfo[];
+ dataProviders: (DataProviderInfo & { assetProfileCount: number })[];
settings: { [key: string]: boolean | object | string | string[] };
transactionCount: number;
userCount: number;
From 1215803a40400f54a908ee6c2747e244759197b2 Mon Sep 17 00:00:00 2001
From: andiz2
Date: Fri, 9 May 2025 11:48:43 +0300
Subject: [PATCH 05/40] Bugfix/fix ApiKeyStrategy error (#4682)
* Fix ApiKeyStrategy error
---
apps/api/src/app/auth/api-key.strategy.ts | 45 ++++++++++-------------
1 file changed, 19 insertions(+), 26 deletions(-)
diff --git a/apps/api/src/app/auth/api-key.strategy.ts b/apps/api/src/app/auth/api-key.strategy.ts
index e1e067ab7..e99d6aed7 100644
--- a/apps/api/src/app/auth/api-key.strategy.ts
+++ b/apps/api/src/app/auth/api-key.strategy.ts
@@ -21,38 +21,31 @@ export class ApiKeyStrategy extends PassportStrategy(
private readonly prismaService: PrismaService,
private readonly userService: UserService
) {
- super({ header: HEADER_KEY_TOKEN, prefix: 'Api-Key ' }, true);
+ super({ header: HEADER_KEY_TOKEN, prefix: 'Api-Key ' }, false);
}
- public async validate(
- apiKey: string,
- done: (error: any, user?: any) => void
- ) {
- try {
- const user = await this.validateApiKey(apiKey);
+ public async validate(apiKey: string) {
+ const user = await this.validateApiKey(apiKey);
- if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
- if (hasRole(user, 'INACTIVE')) {
- throw new HttpException(
- getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS),
- StatusCodes.TOO_MANY_REQUESTS
- );
- }
-
- await this.prismaService.analytics.upsert({
- create: { User: { connect: { id: user.id } } },
- update: {
- activityCount: { increment: 1 },
- lastRequestAt: new Date()
- },
- where: { userId: user.id }
- });
+ if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) {
+ if (hasRole(user, 'INACTIVE')) {
+ throw new HttpException(
+ getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS),
+ StatusCodes.TOO_MANY_REQUESTS
+ );
}
- done(null, user);
- } catch (error) {
- done(error, null);
+ await this.prismaService.analytics.upsert({
+ create: { User: { connect: { id: user.id } } },
+ update: {
+ activityCount: { increment: 1 },
+ lastRequestAt: new Date()
+ },
+ where: { userId: user.id }
+ });
}
+
+ return user;
}
private async validateApiKey(apiKey: string) {
From c81d3ced750db394d67f46eaab1efc0388292b7a Mon Sep 17 00:00:00 2001
From: Georgine Forner
Date: Fri, 9 May 2025 16:03:47 +0600
Subject: [PATCH 06/40] Feature/improve language localization for IT 20250509
(#4681)
* Improve language localization for IT 20250509
* Update changelog
---
CHANGELOG.md | 1 +
apps/client/src/locales/messages.it.xlf | 164 ++++++++++++------------
2 files changed, 83 insertions(+), 82 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1fd31d817..5a7e9eabe 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 language localization for Catalan (`ca`)
+- Improved the language localization for Italian (`it`)
- Upgraded `nestjs` from version `10.4.15` to `11.0.12`
## 2.161.0 - 2025-05-06
diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf
index a942ebd70..3b6b222c6 100644
--- a/apps/client/src/locales/messages.it.xlf
+++ b/apps/client/src/locales/messages.it.xlf
@@ -1268,7 +1268,7 @@
Please set the amount of your emergency fund.
- Inserisci l’importo del tuo fondo di emergenza:
+ Inserisci l’importo del tuo fondo di emergenza:
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
64
@@ -1616,7 +1616,7 @@
Please enter your coupon code.
- Inserisci il tuo codice del buono:
+ Inserisci il tuo codice del buono:
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
201
@@ -2824,7 +2824,7 @@
Hello, has shared a Portfolio with you!
- Salve, ha condiviso un Portafoglio con te!
+ Salve, ha condiviso un Portafoglio con te!
apps/client/src/app/pages/public/public-page.html
4
@@ -7037,7 +7037,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
@@ -7045,7 +7045,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
@@ -7277,7 +7277,7 @@
Set API key
- Imposta API Key
+ Imposta API Key
apps/client/src/app/components/admin-settings/admin-settings.component.html
83
@@ -7285,7 +7285,7 @@
Get access to 80’000+ tickers from over 50 exchanges
- Ottieni accesso a oltre 100’000+ titoli da oltre 50 borse
+ Ottieni accesso a oltre 80’000+ titoli da oltre 50 borse
libs/ui/src/lib/i18n.ts
24
@@ -7359,7 +7359,7 @@
Threshold range
- Threshold range
+ Range soglia
apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html
9
@@ -7367,7 +7367,7 @@
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 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 utilizza l’analisi statica per scoprire potenziali problemi e rischi nel tuo portafoglio. Modifica le regole qui sotto e imposta soglie personalizzate per allinearti alla tua strategia di investimento personale.
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
5
@@ -7375,7 +7375,7 @@
Economic Market Cluster Risks
- Economic Market Cluster Risks
+ Rischi del cluster di mercato economico
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
165
@@ -7383,7 +7383,7 @@
of
- of
+ di
apps/client/src/app/components/admin-settings/admin-settings.component.html
52
@@ -7391,7 +7391,7 @@
daily requests
- daily requests
+ richieste giornaliere
apps/client/src/app/components/admin-settings/admin-settings.component.html
54
@@ -7399,7 +7399,7 @@
Remove API key
- Remove API key
+ Rimuovi API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
71
@@ -7407,7 +7407,7 @@
Do you really want to delete the API key?
- Do you really want to delete the API key?
+ Vuoi davvero eliminare l’API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
96
@@ -7415,7 +7415,7 @@
Please enter your Ghostfolio API key:
- Please enter your Ghostfolio API key:
+ Inserisci la tua API key di Ghostfolio:
apps/client/src/app/pages/api/api-page.component.ts
41
@@ -7423,7 +7423,7 @@
I have an API key
- I have an API key
+ Ho un API key
apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
39
@@ -7431,7 +7431,7 @@
API Requests Today
- API Requests Today
+ Richieste API oggi
apps/client/src/app/components/admin-users/admin-users.html
178
@@ -7439,7 +7439,7 @@
Could not generate an API key
- Could not generate an API key
+ Non è stato possibile generare un API key
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
127
@@ -7447,7 +7447,7 @@
Set this API key in your self-hosted environment:
- Set this API key in your self-hosted environment:
+ Imposta questa API key nel tuo ambiente self-hosted:
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
142
@@ -7455,7 +7455,7 @@
Ghostfolio Premium Data Provider API Key
- Ghostfolio Premium Data Provider API Key
+ API Key for Ghostfolio Premium Data Provider
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
145
@@ -7463,7 +7463,7 @@
Do you really want to generate a new API key?
- Do you really want to generate a new API key?
+ Vuoi davvero generare una nuova API key?
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
150
@@ -7471,7 +7471,7 @@
Tag
- Tag
+ Tag
libs/ui/src/lib/assistant/assistant.html
157
@@ -7479,7 +7479,7 @@
API Key
- API Key
+ API Key
libs/ui/src/lib/membership-card/membership-card.component.html
18
@@ -7487,7 +7487,7 @@
Generate Ghostfolio Premium Data Provider API key for self-hosted environments...
- Generate Ghostfolio Premium Data Provider API key for self-hosted environments...
+ Genera API key per Ghostfolio Premium Data Provider per ambienti self-hosted...
libs/ui/src/lib/membership-card/membership-card.component.html
26
@@ -7495,7 +7495,7 @@
out of
- out of
+ fuori
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
56
@@ -7503,7 +7503,7 @@
rules align with your portfolio.
- rules align with your portfolio.
+ le regole si allineano con il tuo portafoglio.
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
58
@@ -7511,7 +7511,7 @@
Save
- Save
+ Salva
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
62
@@ -7519,7 +7519,7 @@
Asset Class Cluster Risks
- Asset Class Cluster Risks
+ Rischi del cluster di classi di asset
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
117
@@ -7527,7 +7527,7 @@
Me
- Me
+ Me
apps/client/src/app/components/user-account-access/user-account-access.component.ts
135
@@ -7535,7 +7535,7 @@
Received Access
- Received Access
+ Accesso ricevuto
apps/client/src/app/components/user-account-access/user-account-access.html
3
@@ -7543,7 +7543,7 @@
Please enter your Ghostfolio API key.
- Please enter your Ghostfolio API key.
+ Inserisci la tua API key di Ghostfolio.
apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts
57
@@ -7551,7 +7551,7 @@
AI prompt has been copied to the clipboard
- AI prompt has been copied to the clipboard
+ L’AI prompt è stato copiato negli appunti
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
173
@@ -7559,7 +7559,7 @@
Link has been copied to the clipboard
- Link has been copied to the clipboard
+ Il link è stato copiato negli appunti
apps/client/src/app/components/access-table/access-table.component.ts
65
@@ -7567,7 +7567,7 @@
Early Access
- Early Access
+ Accesso anticipato
apps/client/src/app/components/admin-settings/admin-settings.component.html
29
@@ -7575,7 +7575,7 @@
Regional Market Cluster Risks
- Regional Market Cluster Risks
+ Rischi del cluster di mercato regionale
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
189
@@ -7583,7 +7583,7 @@
Lazy
- Lazy
+ Pigro
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
138
@@ -7591,7 +7591,7 @@
Instant
- Instant
+ Istantaneo
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
142
@@ -7599,7 +7599,7 @@
Default Market Price
- Default Market Price
+ Prezzo di mercato predefinito
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
386
@@ -7607,7 +7607,7 @@
Mode
- Mode
+ Modalità
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
423
@@ -7615,7 +7615,7 @@
Selector
- Selector
+ Selettore
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
439
@@ -7623,7 +7623,7 @@
HTTP Request Headers
- HTTP Request Headers
+ Intestazioni della richiesta HTTP
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
399
@@ -7631,7 +7631,7 @@
end of day
- end of day
+ fine giornata
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
138
@@ -7639,7 +7639,7 @@
real-time
- real-time
+ in tempo reale
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
142
@@ -7647,7 +7647,7 @@
Open Duck.ai
- Open Duck.ai
+ Apri Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
174
@@ -7655,7 +7655,7 @@
Create
- Create
+ Creare
libs/ui/src/lib/tags-selector/tags-selector.component.html
50
@@ -7663,7 +7663,7 @@
Market Data
- Market Data
+ Dati di mercato
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
374
@@ -7671,7 +7671,7 @@
Change
- Change
+ Cambia
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
365
@@ -7679,7 +7679,7 @@
Performance
- Performance
+ Prestazione
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
365
@@ -7691,7 +7691,7 @@
Copy portfolio data to clipboard for AI prompt
- Copy portfolio data to clipboard for AI prompt
+ Copia i dati del portafoglio negli appunti per l’AI prompt
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
42
@@ -7699,7 +7699,7 @@
Copy AI prompt to clipboard for analysis
- Copy AI prompt to clipboard for analysis
+ Copia l’AI prompt negli appunti per l’analisi
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
67
@@ -7707,7 +7707,7 @@
Armenia
- Armenia
+ Armenia
libs/ui/src/lib/i18n.ts
73
@@ -7715,7 +7715,7 @@
British Virgin Islands
- British Virgin Islands
+ Isole Vergini Britanniche
libs/ui/src/lib/i18n.ts
77
@@ -7723,7 +7723,7 @@
Singapore
- Singapore
+ Singapore
libs/ui/src/lib/i18n.ts
91
@@ -7731,7 +7731,7 @@
Terms and Conditions
- Terms and Conditions
+ Termini e condizioni
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
15
@@ -7739,7 +7739,7 @@
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.
+ Ti preghiamo di conservare il tuo token di sicurezza in un luogo sicuro. Se lo perdi, non sarai in grado di recuperare il tuo account.
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
18
@@ -7747,7 +7747,7 @@
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
+ Capisco che se perdo il mio token di sicurezza, non posso recuperare il mio account
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
28
@@ -7755,7 +7755,7 @@
Continue
- Continue
+ Continua
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
57
@@ -7763,7 +7763,7 @@
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.
+ Ecco il tuo token di sicurezza. È visibile solo una volta, per favore memorizzalo e conserva in un luogo sicuro.
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
67
@@ -7771,7 +7771,7 @@
Security token
- Security token
+ Token di sicurezza
apps/client/src/app/components/admin-users/admin-users.component.ts
163
@@ -7779,7 +7779,7 @@
Do you really want to generate a new security token for this user?
- Do you really want to generate a new security token for this user?
+ Vuoi davvero generare un nuovo token di sicurezza per questo utente?
apps/client/src/app/components/admin-users/admin-users.component.ts
168
@@ -7787,7 +7787,7 @@
Generate Security Token
- Generate Security Token
+ Genera Token di Sicurezza
apps/client/src/app/components/admin-users/admin-users.html
249
@@ -7795,7 +7795,7 @@
United Kingdom
- United Kingdom
+ United Kingdom
libs/ui/src/lib/i18n.ts
96
@@ -7803,7 +7803,7 @@
Terms of Service
- Terms of Service
+ Termini e condizioni
apps/client/src/app/app.component.html
112
@@ -7811,7 +7811,7 @@
terms-of-service
- terms-of-service
+ termini-e-condizioni
snake-case
apps/client/src/app/app.component.ts
@@ -7832,7 +7832,7 @@
Terms of Service
- Terms of Service
+ Termini e condizioni
apps/client/src/app/pages/about/about-page.component.ts
71
@@ -7844,7 +7844,7 @@
Terms of Service
- Terms of Service
+ Termini e condizioni
apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html
4
@@ -7852,7 +7852,7 @@
and I agree to the Terms of Service.
- and I agree to the Terms of Service.
+ e io accetto i Termini e condizioni.
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
34
@@ -7860,7 +7860,7 @@
() is already in use.
- () is already in use.
+ () e gia in uso.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
462
@@ -7868,7 +7868,7 @@
An error occurred while updating to ().
- An error occurred while updating to ().
+ Si è verificato un errore durante l’aggiornamento di ().
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
470
@@ -7876,7 +7876,7 @@
Apply
- Apply
+ Applica
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
138
@@ -7884,7 +7884,7 @@
with API access for
- with API access for
+ con accesso API per
apps/client/src/app/pages/pricing/pricing-page.html
266
@@ -7892,7 +7892,7 @@
Gather Recent Historical Market Data
- Gather Recent Historical Market Data
+ Raccogli dati storici di mercato recenti
apps/client/src/app/components/admin-market-data/admin-market-data.html
226
@@ -7900,7 +7900,7 @@
Gather All Historical Market Data
- Gather All Historical Market Data
+ Raccogli tutti i dati storici di mercato
apps/client/src/app/components/admin-market-data/admin-market-data.html
231
@@ -7908,7 +7908,7 @@
Gather Historical Market Data
- Gather Historical Market Data
+ Raccogli dati storici di mercato
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
29
@@ -7916,7 +7916,7 @@
Data Gathering is off
- Data Gathering is off
+ La raccolta dei dati è disattivata
apps/client/src/app/components/admin-market-data/admin-market-data.html
38
@@ -7924,7 +7924,7 @@
Performance Calculation
- Performance Calculation
+ Calcolo delle prestazioni
apps/client/src/app/components/user-account-settings/user-account-settings.html
31
@@ -7932,7 +7932,7 @@
someone
- someone
+ qualcuno
apps/client/src/app/pages/public/public-page.component.ts
33
@@ -7940,7 +7940,7 @@
Add asset to watchlist
- Add asset to watchlist
+ Aggiungi asset alla watchlist
apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html
7
@@ -7948,7 +7948,7 @@
Watchlist
- Watchlist
+ Watchlist
apps/client/src/app/components/home-watchlist/home-watchlist.html
4
@@ -7960,7 +7960,7 @@
Watchlist
- Watchlist
+ Watchlist
apps/client/src/app/pages/home/home-page-routing.module.ts
44
@@ -7972,7 +7972,7 @@
Get Early Access
- Get Early Access
+ Ottieni accesso anticipato
apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
29
@@ -7980,7 +7980,7 @@
Do you really want to delete this item?
- Do you really want to delete this item?
+ Vuoi davvero eliminare questo elemento?
libs/ui/src/lib/benchmark/benchmark.component.ts
122
From 72ccf475267a6be32d72a9441b00aa8929b19f16 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 9 May 2025 12:32:23 +0200
Subject: [PATCH 07/40] Feature/update locales (#4678)
* Update locales
* Clean up
---------
Co-authored-by: github-actions[bot]
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
---
apps/client/src/locales/messages.ca.xlf | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index 6d9e77f43..fd7387a0a 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -2716,8 +2716,8 @@
Get a comprehensive financial overview by adding your bank and brokerage accounts.
- Obtingueu una visió financera completa afegint els vostres comptes bancaris i de corredoria.
-
+ Obtingueu una visió financera completa afegint els vostres comptes bancaris i de corredoria.
+
apps/client/src/app/components/home-overview/home-overview.html
17
@@ -2732,8 +2732,8 @@
Record your investment activities to keep your portfolio up to date.
- Registra les teves activitats d’inversió per mantenir la teva cartera actualitzada.
-
+ Registra les teves activitats d’inversió per mantenir la teva cartera actualitzada.
+
apps/client/src/app/components/home-overview/home-overview.html
26
@@ -3004,7 +3004,7 @@
Excluded from Analysis
- Exclòs de l'anàlisi
+ Exclòs de l’anàlisi
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
240
From 037d3b1a60bcc1729a5b60e39fc24194229157d0 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Fri, 9 May 2025 16:19:14 +0200
Subject: [PATCH 08/40] Feature/rename Order to activities in User database
schema (#4669)
* Rename Order to activities in User database schema
* Update changelog
---
CHANGELOG.md | 1 +
apps/api/src/app/admin/admin.service.ts | 6 +++---
apps/client/src/app/components/admin-users/admin-users.html | 2 +-
libs/common/src/lib/interfaces/admin-users.interface.ts | 2 +-
prisma/schema.prisma | 2 +-
5 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5a7e9eabe..4034fd9a2 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
+- Renamed `Order` to `activities` in the `User` database schema
- Improved the language localization for Catalan (`ca`)
- Improved the language localization for Italian (`it`)
- Upgraded `nestjs` from version `10.4.15` to `11.0.12`
diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts
index e4c50c1f2..35b4ea73d 100644
--- a/apps/api/src/app/admin/admin.service.ts
+++ b/apps/api/src/app/admin/admin.service.ts
@@ -821,7 +821,7 @@ export class AdminService {
where,
select: {
_count: {
- select: { Account: true, Order: true }
+ select: { Account: true, activities: true }
},
Analytics: {
select: {
@@ -869,10 +869,10 @@ export class AdminService {
role,
subscription,
accountCount: _count.Account || 0,
+ activityCount: _count.activities || 0,
country: Analytics?.country,
dailyApiRequests: Analytics?.dataProviderGhostfolioDailyRequests || 0,
- lastActivity: Analytics?.updatedAt,
- transactionCount: _count.Order || 0
+ lastActivity: Analytics?.updatedAt
};
}
);
diff --git a/apps/client/src/app/components/admin-users/admin-users.html b/apps/client/src/app/components/admin-users/admin-users.html
index 56b2e0eac..1a4125d84 100644
--- a/apps/client/src/app/components/admin-users/admin-users.html
+++ b/apps/client/src/app/components/admin-users/admin-users.html
@@ -142,7 +142,7 @@
diff --git a/libs/common/src/lib/interfaces/admin-users.interface.ts b/libs/common/src/lib/interfaces/admin-users.interface.ts
index 89e165752..79031425a 100644
--- a/libs/common/src/lib/interfaces/admin-users.interface.ts
+++ b/libs/common/src/lib/interfaces/admin-users.interface.ts
@@ -4,6 +4,7 @@ export interface AdminUsers {
count: number;
users: {
accountCount: number;
+ activityCount: number;
country: string;
createdAt: Date;
dailyApiRequests: number;
@@ -11,6 +12,5 @@ export interface AdminUsers {
id: string;
lastActivity: Date;
role: Role;
- transactionCount: number;
}[];
}
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 7bf69c56a..6182ebfe4 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -245,6 +245,7 @@ model Tag {
model User {
accessToken String?
+ activities Order[]
authChallenge String?
createdAt DateTime @default(now())
id String @id @default(uuid())
@@ -260,7 +261,6 @@ model User {
Analytics Analytics?
ApiKey ApiKey[]
AuthDevice AuthDevice[]
- Order Order[]
Settings Settings?
SymbolProfile SymbolProfile[]
Tag Tag[]
From 11629ffd2664c04da9450668817a7ff195392248 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Fri, 9 May 2025 16:20:02 +0200
Subject: [PATCH 09/40] Feature/clean up unused interfaces (#4685)
* Clean up unused interfaces
---
.../models/interfaces/portfolio.interface.ts | 23 -------------------
libs/common/src/lib/interfaces/index.ts | 4 ----
.../interfaces/portfolio-item.interface.ts | 9 --------
.../portfolio-overview.interface.ts | 8 -------
4 files changed, 44 deletions(-)
delete mode 100644 apps/api/src/models/interfaces/portfolio.interface.ts
delete mode 100644 libs/common/src/lib/interfaces/portfolio-item.interface.ts
delete mode 100644 libs/common/src/lib/interfaces/portfolio-overview.interface.ts
diff --git a/apps/api/src/models/interfaces/portfolio.interface.ts b/apps/api/src/models/interfaces/portfolio.interface.ts
deleted file mode 100644
index b369202cd..000000000
--- a/apps/api/src/models/interfaces/portfolio.interface.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { PortfolioItem, Position } from '@ghostfolio/common/interfaces';
-
-import { Order } from '../order';
-
-export interface PortfolioInterface {
- get(aDate?: Date): PortfolioItem[];
-
- getFees(): number;
-
- getPositions(aDate: Date): {
- [symbol: string]: Position;
- };
-
- getSymbols(aDate?: Date): string[];
-
- getTotalBuy(): number;
-
- getTotalSell(): number;
-
- getOrders(): Order[];
-
- getValue(aDate?: Date): number;
-}
diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts
index bdf982f55..e401705fb 100644
--- a/libs/common/src/lib/interfaces/index.ts
+++ b/libs/common/src/lib/interfaces/index.ts
@@ -29,8 +29,6 @@ import type { PortfolioChart } from './portfolio-chart.interface';
import type { PortfolioDetails } from './portfolio-details.interface';
import type { PortfolioDividends } from './portfolio-dividends.interface';
import type { PortfolioInvestments } from './portfolio-investments.interface';
-import type { PortfolioItem } from './portfolio-item.interface';
-import type { PortfolioOverview } from './portfolio-overview.interface';
import type { PortfolioPerformance } from './portfolio-performance.interface';
import type { PortfolioPosition } from './portfolio-position.interface';
import type { PortfolioReportRule } from './portfolio-report-rule.interface';
@@ -116,8 +114,6 @@ export {
PortfolioHoldingResponse,
PortfolioHoldingsResponse,
PortfolioInvestments,
- PortfolioItem,
- PortfolioOverview,
PortfolioPerformance,
PortfolioPerformanceResponse,
PortfolioPosition,
diff --git a/libs/common/src/lib/interfaces/portfolio-item.interface.ts b/libs/common/src/lib/interfaces/portfolio-item.interface.ts
deleted file mode 100644
index a3e42a05f..000000000
--- a/libs/common/src/lib/interfaces/portfolio-item.interface.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Position } from '@ghostfolio/common/interfaces';
-
-export interface PortfolioItem {
- date: string;
- grossPerformancePercent: number;
- investment: number;
- positions: { [symbol: string]: Position };
- value: number;
-}
diff --git a/libs/common/src/lib/interfaces/portfolio-overview.interface.ts b/libs/common/src/lib/interfaces/portfolio-overview.interface.ts
deleted file mode 100644
index c9c20c28c..000000000
--- a/libs/common/src/lib/interfaces/portfolio-overview.interface.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export interface PortfolioOverview {
- cash: number;
- committedFunds: number;
- fees: number;
- ordersCount: number;
- totalBuy: number;
- totalSell: number;
-}
From b6e8431c53260c8bb5a6f617414a02f18facf637 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Fri, 9 May 2025 16:24:03 +0200
Subject: [PATCH 10/40] Feature/clean up unused @Input in top holdings
component (#4683)
* Clean up unused input
---
.../ui/src/lib/top-holdings/top-holdings.component.ts | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.ts b/libs/ui/src/lib/top-holdings/top-holdings.component.ts
index 13ceb239c..41d0f1192 100644
--- a/libs/ui/src/lib/top-holdings/top-holdings.component.ts
+++ b/libs/ui/src/lib/top-holdings/top-holdings.component.ts
@@ -2,8 +2,7 @@ import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
import { getLocale } from '@ghostfolio/common/helper';
import {
AssetProfileIdentifier,
- HoldingWithParents,
- PortfolioPosition
+ HoldingWithParents
} from '@ghostfolio/common/interfaces';
import { GfValueComponent } from '@ghostfolio/ui/value';
@@ -29,7 +28,6 @@ import {
import { MatButtonModule } from '@angular/material/button';
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
-import { DataSource } from '@prisma/client';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { Subject } from 'rxjs';
@@ -64,13 +62,6 @@ export class GfTopHoldingsComponent implements OnChanges, OnDestroy {
@Input() locale = getLocale();
@Input() pageSize = Number.MAX_SAFE_INTEGER;
@Input() topHoldings: HoldingWithParents[];
- @Input() positions: {
- [symbol: string]: Pick & {
- dataSource?: DataSource;
- name: string;
- value: number;
- };
- } = {};
@Output() holdingClicked = new EventEmitter();
From 480709c32a15c0e1a905517d5b885b45410216be Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Fri, 9 May 2025 17:30:44 +0200
Subject: [PATCH 11/40] Bugfix/add missing permission guard in create watchlist
item endpoint (#4686)
* Add missing permission guard
* Update changelog
---
CHANGELOG.md | 4 ++++
apps/api/src/app/endpoints/watchlist/watchlist.controller.ts | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4034fd9a2..551a0d075 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 Italian (`it`)
- Upgraded `nestjs` from version `10.4.15` to `11.0.12`
+### Fixed
+
+- Fixed an issue in the watchlist endpoint (`POST`) related to the `HasPermissionGuard`
+
## 2.161.0 - 2025-05-06
### Added
diff --git a/apps/api/src/app/endpoints/watchlist/watchlist.controller.ts b/apps/api/src/app/endpoints/watchlist/watchlist.controller.ts
index 8d9d322a8..2a8ea9875 100644
--- a/apps/api/src/app/endpoints/watchlist/watchlist.controller.ts
+++ b/apps/api/src/app/endpoints/watchlist/watchlist.controller.ts
@@ -39,7 +39,7 @@ export class WatchlistController {
@Post()
@HasPermission(permissions.createWatchlistItem)
- @UseGuards(AuthGuard('jwt'))
+ @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor)
public async createWatchlistItem(@Body() data: CreateWatchlistItemDto) {
return this.watchlistService.createWatchlistItem({
From d99217a434c158899661d9a927e44ada16fa6fa2 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Fri, 9 May 2025 17:31:35 +0200
Subject: [PATCH 12/40] Feature/refactor @Input in portfolio proportion chart
component (#4684)
* Refactor @Input in GfPortfolioProportionChartComponent
---
.../asset-profile-dialog.html | 4 +-
.../holding-detail-dialog.html | 4 +-
.../allocations/allocations-page.html | 20 ++---
.../src/app/pages/public/public-page.html | 10 +--
...olio-proportion-chart.component.stories.ts | 8 +-
.../portfolio-proportion-chart.component.ts | 86 +++++++++----------
6 files changed, 65 insertions(+), 67 deletions(-)
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 ab3468dcd..f10b6dc02 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
@@ -257,20 +257,20 @@
Sectors
}
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 d18dc479b..11898c44e 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
@@ -259,11 +259,11 @@
@@ -271,11 +271,11 @@
}
diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html
index f2dff76f3..1436f6ab4 100644
--- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html
+++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html
@@ -48,10 +48,10 @@
@@ -70,10 +70,10 @@
@@ -92,10 +92,10 @@
@@ -113,10 +113,10 @@
cursor="pointer"
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
+ [data]="symbols"
[isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
[keys]="['symbol']"
[locale]="user?.settings?.locale"
- [positions]="symbols"
[showLabels]="deviceType !== 'mobile'"
(proportionChartClicked)="onSymbolChartClicked($event)"
/>
@@ -137,11 +137,11 @@
@@ -160,10 +160,10 @@
@@ -182,9 +182,9 @@
@@ -271,11 +271,11 @@
@@ -290,10 +290,10 @@
cursor="pointer"
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
+ [data]="accounts"
[isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
[keys]="['id']"
[locale]="user?.settings?.locale"
- [positions]="accounts"
(proportionChartClicked)="onAccountChartClicked($event)"
/>
@@ -313,10 +313,10 @@
diff --git a/apps/client/src/app/pages/public/public-page.html b/apps/client/src/app/pages/public/public-page.html
index e51aee9a7..b5a225c73 100644
--- a/apps/client/src/app/pages/public/public-page.html
+++ b/apps/client/src/app/pages/public/public-page.html
@@ -72,9 +72,9 @@
@@ -90,10 +90,10 @@
@@ -107,10 +107,10 @@
@@ -126,9 +126,9 @@
@@ -198,10 +198,10 @@
diff --git a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.stories.ts b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.stories.ts
index 90aa0cee8..37010954a 100644
--- a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.stories.ts
+++ b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.stories.ts
@@ -25,15 +25,15 @@ type Story = StoryObj
;
export const Simple: Story = {
args: {
baseCurrency: 'USD',
- keys: ['name'],
- locale: 'en-US',
- positions: {
+ data: {
Africa: { name: 'Africa', value: 983.22461479889288 },
Asia: { name: 'Asia', value: 12074.754633964973 },
Europe: { name: 'Europe', value: 34432.837085290535 },
'North America': { name: 'North America', value: 26539.89987780503 },
Oceania: { name: 'Oceania', value: 1402.220605072031 },
'South America': { name: 'South America', value: 4938.25202180719859 }
- }
+ },
+ keys: ['name'],
+ locale: 'en-US'
}
};
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 cc3c40d32..bc15ede04 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
@@ -60,18 +60,18 @@ export class GfPortfolioProportionChartComponent
@Input() baseCurrency: string;
@Input() colorScheme: ColorScheme;
@Input() cursor: string;
- @Input() isInPercent = false;
- @Input() keys: string[] = [];
- @Input() locale = getLocale();
- @Input() maxItems?: number;
- @Input() showLabels = false;
- @Input() positions: {
+ @Input() data: {
[symbol: string]: Pick & {
dataSource?: DataSource;
name: string;
value: number;
};
} = {};
+ @Input() isInPercent = false;
+ @Input() keys: string[] = [];
+ @Input() locale = getLocale();
+ @Input() maxItems?: number;
+ @Input() showLabels = false;
@Output() proportionChartClicked = new EventEmitter();
@@ -91,13 +91,13 @@ export class GfPortfolioProportionChartComponent
}
public ngAfterViewInit() {
- if (this.positions) {
+ if (this.data) {
this.initialize();
}
}
public ngOnChanges() {
- if (this.positions) {
+ if (this.data) {
this.initialize();
}
}
@@ -122,47 +122,45 @@ export class GfPortfolioProportionChartComponent
};
if (this.keys.length > 0) {
- Object.keys(this.positions).forEach((symbol) => {
- if (this.positions[symbol][this.keys[0]]?.toUpperCase()) {
- if (chartData[this.positions[symbol][this.keys[0]].toUpperCase()]) {
- chartData[
- this.positions[symbol][this.keys[0]].toUpperCase()
- ].value = chartData[
- this.positions[symbol][this.keys[0]].toUpperCase()
- ].value.plus(this.positions[symbol].value || 0);
+ Object.keys(this.data).forEach((symbol) => {
+ if (this.data[symbol][this.keys[0]]?.toUpperCase()) {
+ if (chartData[this.data[symbol][this.keys[0]].toUpperCase()]) {
+ chartData[this.data[symbol][this.keys[0]].toUpperCase()].value =
+ chartData[
+ this.data[symbol][this.keys[0]].toUpperCase()
+ ].value.plus(this.data[symbol].value || 0);
if (
- chartData[this.positions[symbol][this.keys[0]].toUpperCase()]
- .subCategory[this.positions[symbol][this.keys[1]]]
+ chartData[this.data[symbol][this.keys[0]].toUpperCase()]
+ .subCategory[this.data[symbol][this.keys[1]]]
) {
chartData[
- this.positions[symbol][this.keys[0]].toUpperCase()
- ].subCategory[this.positions[symbol][this.keys[1]]].value =
- chartData[
- this.positions[symbol][this.keys[0]].toUpperCase()
- ].subCategory[this.positions[symbol][this.keys[1]]].value.plus(
- this.positions[symbol].value || 0
- );
+ this.data[symbol][this.keys[0]].toUpperCase()
+ ].subCategory[this.data[symbol][this.keys[1]]].value = chartData[
+ this.data[symbol][this.keys[0]].toUpperCase()
+ ].subCategory[this.data[symbol][this.keys[1]]].value.plus(
+ this.data[symbol].value || 0
+ );
} else {
chartData[
- this.positions[symbol][this.keys[0]].toUpperCase()
- ].subCategory[
- this.positions[symbol][this.keys[1]] ?? UNKNOWN_KEY
- ] = { value: new Big(this.positions[symbol].value || 0) };
+ this.data[symbol][this.keys[0]].toUpperCase()
+ ].subCategory[this.data[symbol][this.keys[1]] ?? UNKNOWN_KEY] = {
+ value: new Big(this.data[symbol].value || 0)
+ };
}
} else {
- chartData[this.positions[symbol][this.keys[0]].toUpperCase()] = {
- name: this.positions[symbol][this.keys[0]],
+ chartData[this.data[symbol][this.keys[0]].toUpperCase()] = {
+ name: this.data[symbol][this.keys[0]],
subCategory: {},
- value: new Big(this.positions[symbol].value || 0)
+ value: new Big(this.data[symbol].value || 0)
};
- if (this.positions[symbol][this.keys[1]]) {
+ if (this.data[symbol][this.keys[1]]) {
chartData[
- this.positions[symbol][this.keys[0]].toUpperCase()
+ this.data[symbol][this.keys[0]].toUpperCase()
].subCategory = {
- [this.positions[symbol][this.keys[1]]]: {
- value: new Big(this.positions[symbol].value || 0)
+ [this.data[symbol][this.keys[1]]]: {
+ value: new Big(this.data[symbol].value || 0)
}
};
}
@@ -170,24 +168,24 @@ export class GfPortfolioProportionChartComponent
} else {
if (chartData[UNKNOWN_KEY]) {
chartData[UNKNOWN_KEY].value = chartData[UNKNOWN_KEY].value.plus(
- this.positions[symbol].value || 0
+ this.data[symbol].value || 0
);
} else {
chartData[UNKNOWN_KEY] = {
- name: this.positions[symbol].name,
+ name: this.data[symbol].name,
subCategory: this.keys[1]
? { [this.keys[1]]: { value: new Big(0) } }
: undefined,
- value: new Big(this.positions[symbol].value || 0)
+ value: new Big(this.data[symbol].value || 0)
};
}
}
});
} else {
- Object.keys(this.positions).forEach((symbol) => {
+ Object.keys(this.data).forEach((symbol) => {
chartData[symbol] = {
- name: this.positions[symbol].name,
- value: new Big(this.positions[symbol].value || 0)
+ name: this.data[symbol].name,
+ value: new Big(this.data[symbol].value || 0)
};
});
}
@@ -321,7 +319,7 @@ export class GfPortfolioProportionChartComponent
const dataIndex = activeElements[0].index;
const symbol: string = event.chart.data.labels[dataIndex];
- const dataSource = this.positions[symbol]?.dataSource;
+ const dataSource = this.data[symbol]?.dataSource;
this.proportionChartClicked.emit({ dataSource, symbol });
} catch {}
@@ -404,7 +402,7 @@ export class GfPortfolioProportionChartComponent
symbol = $localize`No data available`;
}
- const name = translate(this.positions[symbol as string]?.name);
+ const name = translate(this.data[symbol as string]?.name);
let sum = 0;
for (const item of context.dataset.data) {
From 755d85a54b9e7851e4527bb0d49696bfc4e02c50 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 9 May 2025 17:43:33 +0200
Subject: [PATCH 13/40] Feature/update locales (#4689)
Co-authored-by: github-actions[bot]
---
apps/client/src/locales/messages.ca.xlf | 6 +++---
apps/client/src/locales/messages.de.xlf | 6 +++---
apps/client/src/locales/messages.es.xlf | 6 +++---
apps/client/src/locales/messages.fr.xlf | 6 +++---
apps/client/src/locales/messages.it.xlf | 6 +++---
apps/client/src/locales/messages.nl.xlf | 6 +++---
apps/client/src/locales/messages.pl.xlf | 6 +++---
apps/client/src/locales/messages.pt.xlf | 6 +++---
apps/client/src/locales/messages.tr.xlf | 6 +++---
apps/client/src/locales/messages.uk.xlf | 6 +++---
apps/client/src/locales/messages.xlf | 6 +++---
apps/client/src/locales/messages.zh.xlf | 6 +++---
12 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index fd7387a0a..3f35305f8 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -6383,7 +6383,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -6691,11 +6691,11 @@
No data available
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf
index 6f8323fe6..e45939fd2 100644
--- a/apps/client/src/locales/messages.de.xlf
+++ b/apps/client/src/locales/messages.de.xlf
@@ -3106,7 +3106,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -3114,11 +3114,11 @@
Keine Daten verfügbar
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf
index 02ad6ce5a..b2847bd29 100644
--- a/apps/client/src/locales/messages.es.xlf
+++ b/apps/client/src/locales/messages.es.xlf
@@ -3091,7 +3091,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -3099,11 +3099,11 @@
Sin datos disponibles
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index 2fbd53993..98f345db7 100644
--- a/apps/client/src/locales/messages.fr.xlf
+++ b/apps/client/src/locales/messages.fr.xlf
@@ -3162,7 +3162,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -3338,11 +3338,11 @@
Pas de données disponibles
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf
index 3b6b222c6..b0cd54ea0 100644
--- a/apps/client/src/locales/messages.it.xlf
+++ b/apps/client/src/locales/messages.it.xlf
@@ -3091,7 +3091,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -3099,11 +3099,11 @@
Nessun dato disponibile
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf
index fc79a6da1..267add80e 100644
--- a/apps/client/src/locales/messages.nl.xlf
+++ b/apps/client/src/locales/messages.nl.xlf
@@ -3090,7 +3090,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -3098,11 +3098,11 @@
Geen gegevens beschikbaar
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf
index 50dada8a9..57e678fef 100644
--- a/apps/client/src/locales/messages.pl.xlf
+++ b/apps/client/src/locales/messages.pl.xlf
@@ -5791,7 +5791,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -6091,11 +6091,11 @@
Brak danych
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf
index c327b1015..9f8b82e04 100644
--- a/apps/client/src/locales/messages.pt.xlf
+++ b/apps/client/src/locales/messages.pt.xlf
@@ -3002,7 +3002,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -3178,11 +3178,11 @@
Sem dados disponíveis
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf
index cf182ffc1..1b77f6748 100644
--- a/apps/client/src/locales/messages.tr.xlf
+++ b/apps/client/src/locales/messages.tr.xlf
@@ -5479,7 +5479,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -5727,11 +5727,11 @@
Veri mevcut değil
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf
index adba86b10..72ffe96fc 100644
--- a/apps/client/src/locales/messages.uk.xlf
+++ b/apps/client/src/locales/messages.uk.xlf
@@ -7045,7 +7045,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -7533,11 +7533,11 @@
Дані недоступні
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf
index c55d4dc94..4ea9995b2 100644
--- a/apps/client/src/locales/messages.xlf
+++ b/apps/client/src/locales/messages.xlf
@@ -5360,7 +5360,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -5623,11 +5623,11 @@
No data available
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf
index 6b33fa12e..fbf873ce3 100644
--- a/apps/client/src/locales/messages.zh.xlf
+++ b/apps/client/src/locales/messages.zh.xlf
@@ -5848,7 +5848,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 402
+ 400
@@ -6148,11 +6148,11 @@
无可用数据
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 404
+ 402
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 417
+ 415
From 3fe5a762eba5d46a3bd9c5490a60aca74fc7b249 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sat, 10 May 2025 14:48:33 +0200
Subject: [PATCH 14/40] Feature/extend personal finance tools 20250510 (#4698)
* Extend personal finance tools
* Add Balance Pro
* Add PinkLion
---
libs/common/src/lib/personal-finance-tools.ts | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/libs/common/src/lib/personal-finance-tools.ts b/libs/common/src/lib/personal-finance-tools.ts
index bcbfd09ec..dd9a821b6 100644
--- a/libs/common/src/lib/personal-finance-tools.ts
+++ b/libs/common/src/lib/personal-finance-tools.ts
@@ -53,6 +53,16 @@ export const personalFinanceTools: Product[] = [
origin: 'United States',
slogan: 'The Intelligent Family Office Suite'
},
+ {
+ founded: 2020,
+ hasFreePlan: true,
+ hasSelfHostingAbility: false,
+ key: 'balance-pro',
+ name: 'Balance Pro',
+ origin: 'United States',
+ pricingPerYear: '$47.99',
+ slogan: 'The Smarter Way to Track Your Finances'
+ },
{
hasFreePlan: false,
hasSelfHostingAbility: true,
@@ -571,6 +581,16 @@ export const personalFinanceTools: Product[] = [
origin: 'Singapore',
slogan: 'Feel in control of your money without spreadsheets or shame'
},
+ {
+ founded: 2022,
+ hasFreePlan: true,
+ hasSelfHostingAbility: false,
+ key: 'pinklion',
+ name: 'PinkLion',
+ origin: 'Germany',
+ pricingPerYear: '€50',
+ slogan: 'Invest smarter, not harder'
+ },
{
founded: 2023,
hasFreePlan: true,
From 2932d57c1e392b8e51e762b501172cb83d01a7bd Mon Sep 17 00:00:00 2001
From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com>
Date: Sat, 10 May 2025 19:50:04 +0700
Subject: [PATCH 15/40] Feature/improve language localization for ZH 20250510
(#4701)
* Improve language localization for ZH 20250510
* Update changelog
---
CHANGELOG.md | 1 +
apps/api/src/assets/sitemap.xml | 2 -
apps/client/src/app/app.component.html | 8 +-
.../user-account-settings.html | 10 +-
.../src/app/pages/features/features-page.html | 5 +-
apps/client/src/locales/messages.zh.xlf | 406 +++++++++---------
6 files changed, 213 insertions(+), 219 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 551a0d075..b11f41a7d 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
- Renamed `Order` to `activities` in the `User` database schema
- Improved the language localization for Catalan (`ca`)
+- Improved the language localization for Chinese (`zh`)
- Improved the language localization for Italian (`it`)
- Upgraded `nestjs` from version `10.4.15` to `11.0.12`
diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml
index fc1e89dba..2343f6c01 100644
--- a/apps/api/src/assets/sitemap.xml
+++ b/apps/api/src/assets/sitemap.xml
@@ -590,11 +590,9 @@
${currentDate}T00:00:00+00:00
-->
-
${personalFinanceTools}
diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html
index 6f39c824d..d5e56b517 100644
--- a/apps/client/src/app/app.component.html
+++ b/apps/client/src/app/app.component.html
@@ -171,6 +171,9 @@
Català
-->
+
+ Chinese
+
Deutsch
@@ -203,11 +206,6 @@
Українська
-->
-
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 72d5aa678..e6ab544c8 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
@@ -86,12 +86,10 @@
>)
}
- @if (user?.settings?.isExperimentalFeatures) {
- Chinese (Community)
- }
+ Chinese (Community)
Español (Community)
Use Ghostfolio in multiple languages: English,
-
- Dutch, French, German, Italian, Polish, Portuguese, Spanish
- and Turkish
+ Chinese, Dutch, French, German, Italian, Polish, Portuguese,
+ Spanish and Turkish
are currently supported.
diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf
index fbf873ce3..e98814915 100644
--- a/apps/client/src/locales/messages.zh.xlf
+++ b/apps/client/src/locales/messages.zh.xlf
@@ -889,7 +889,7 @@
Equity
- 公平
+ 股权
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
58
@@ -1189,7 +1189,7 @@
Do you really want to delete this account?
- 您真的要删除该帐户吗?
+ 您确定要删除此账户吗?
apps/client/src/app/components/accounts-table/accounts-table.component.ts
107
@@ -1197,7 +1197,7 @@
Asset Profile
- 资产概况
+ 资产概况
apps/client/src/app/components/admin-jobs/admin-jobs.html
35
@@ -1205,7 +1205,7 @@
Historical Market Data
- 历史市场数据
+ 历史市场数据
apps/client/src/app/components/admin-jobs/admin-jobs.html
37
@@ -1557,7 +1557,7 @@
First Activity
- 第一个活动
+ 首笔交易
apps/client/src/app/components/admin-market-data/admin-market-data.html
148
@@ -2165,7 +2165,7 @@
Portfolio
- 文件夹
+ 投资组合
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
117
@@ -2209,7 +2209,7 @@
Portfolio
- 文件夹
+ 投资组合
apps/client/src/app/components/header/header.component.html
41
@@ -2737,7 +2737,7 @@
Please set the amount of your emergency fund.
- 请输入您的应急基金金额:
+ 请输入您的应急基金金额。
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
64
@@ -2745,7 +2745,7 @@
Change
- 修改
+ 涨跌
libs/ui/src/lib/holdings-table/holdings-table.component.html
119
@@ -3037,7 +3037,7 @@
Please enter your coupon code.
- 请输入您的优惠券代码:
+ 请输入您的优惠券代码。
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
201
@@ -3869,7 +3869,7 @@
Pulls on Docker Hub
- 拉动 Docker Hub
+ Docker Hub 拉取次数
apps/client/src/app/pages/landing/landing-page.html
106
@@ -4025,7 +4025,7 @@
saying no to spreadsheets in
- 对电子表格说不
+ 年对电子表格说不
apps/client/src/app/pages/landing/landing-page.html
311
@@ -4049,7 +4049,7 @@
What our users are saying
- 我们的什么用户正在说
+ 听听我们的用户怎么说
apps/client/src/app/pages/landing/landing-page.html
327
@@ -4065,7 +4065,7 @@
How does Ghostfolio work?
- 如何幽灵作品集工作?
+ Ghostfolio 如何工作?
apps/client/src/app/pages/landing/landing-page.html
383
@@ -4113,7 +4113,7 @@
Are you ready?
- 是你准备好?
+ 您准备好了吗?
apps/client/src/app/pages/landing/landing-page.html
431
@@ -4213,7 +4213,7 @@
Do you really want to delete these activities?
- 您真的要删除所有活动吗?
+ 您确定要删除这些活动吗?
libs/ui/src/lib/activities-table/activities-table.component.ts
219
@@ -5005,7 +5005,7 @@
Hello, has shared a Portfolio with you!
- 你好,分享了一个文件夹与你!
+ 你好,分享了一个投资组合给你!
apps/client/src/app/pages/public/public-page.html
4
@@ -5121,7 +5121,7 @@
Open Source Alternative to
- 开源替代方案
+ 开源替代品
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html
42
@@ -5329,7 +5329,7 @@
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 与 Ghostfolio 中提供的信息比较表基于我们的独立研究和分析。该网站不隶属于或比较中提到的任何其他产品。随着个人理财工具格局的不断发展,直接从相应的产品页面验证任何具体的细节或变化至关重要。数据需要刷新吗?帮助我们维护准确的数据GitHub 。
+ 请注意,在 Ghostfolio 与的比较表中提供的信息基于我们的独立研究和分析。该网站不隶属于或比较中提到的任何其他产品。随着个人理财工具格局的不断发展,直接从相应的产品页面验证任何具体的细节或变化至关重要。数据需要刷新吗?帮助我们在GitHub 上维护准确的数据。
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
311
@@ -5337,7 +5337,7 @@
Ready to take your investments to the next level?
- 准备好带走你的投资到下一级?
+ 准备好将您的投资提升到新的高度了吗?
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
324
@@ -5613,7 +5613,7 @@
Change from All Time High
- 从历史最高点开始变化
+ 较历史最高纪录涨跌
libs/ui/src/lib/benchmark/benchmark.component.html
96
@@ -6029,7 +6029,7 @@
Private Equity
- 私人产权
+ 私募股权
libs/ui/src/lib/i18n.ts
57
@@ -6037,7 +6037,7 @@
Stock
- 库存
+ 股票
libs/ui/src/lib/i18n.ts
58
@@ -6493,7 +6493,7 @@
Closed
- 关闭
+ 已关闭
apps/client/src/app/components/home-holdings/home-holdings.component.ts
37
@@ -6501,7 +6501,7 @@
Active
- 积极的
+ 活跃
apps/client/src/app/components/home-holdings/home-holdings.component.ts
36
@@ -6517,7 +6517,7 @@
Dividend Yield
- Dividend Yield
+ 股息收益率
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
175
@@ -6525,7 +6525,7 @@
Execute Job
- Execute Job
+ 执行任务
apps/client/src/app/components/admin-jobs/admin-jobs.html
176
@@ -6533,7 +6533,7 @@
Priority
- Priority
+ 优先级
apps/client/src/app/components/admin-jobs/admin-jobs.html
64
@@ -6541,7 +6541,7 @@
This action is not allowed.
- This action is not allowed.
+ 不允许执行此操作。
apps/client/src/app/core/http-response.interceptor.ts
64
@@ -6549,7 +6549,7 @@
Liquidity
- Liquidity
+ 流动性
libs/ui/src/lib/i18n.ts
48
@@ -6557,7 +6557,7 @@
{VAR_PLURAL, plural, =1 {activity} other {activities}}
- {VAR_PLURAL, plural, =1 {activity} other {activities}}
+ {VAR_PLURAL, plural, =1 {活动} other {活动}}
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
14
@@ -6565,7 +6565,7 @@
Buy and sell
- Buy and sell
+ 买入和卖出
libs/ui/src/lib/i18n.ts
8
@@ -6573,7 +6573,7 @@
Delete Activities
- Delete Activities
+ 删除活动
libs/ui/src/lib/activities-table/activities-table.component.html
67
@@ -6581,7 +6581,7 @@
Internationalization
- Internationalization
+ 国际化
apps/client/src/app/app-routing.module.ts
88
@@ -6589,7 +6589,7 @@
Do you really want to close your Ghostfolio account?
- Do you really want to close your Ghostfolio account?
+ 您确定要关闭您的 Ghostfolio 账户吗?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
174
@@ -6597,7 +6597,7 @@
Danger Zone
- Danger Zone
+ 危险区域
apps/client/src/app/components/user-account-settings/user-account-settings.html
274
@@ -6605,7 +6605,7 @@
Close Account
- Close Account
+ 关闭账户
apps/client/src/app/components/user-account-settings/user-account-settings.html
309
@@ -6613,7 +6613,7 @@
By ETF Holding
- By ETF Holding
+ 按 ETF 持仓
apps/client/src/app/pages/portfolio/allocations/allocations-page.html
333
@@ -6621,7 +6621,7 @@
Approximation based on the top holdings of each ETF
- Approximation based on the top holdings of each ETF
+ 基于每个 ETF 的主要持仓的近似值
apps/client/src/app/pages/portfolio/allocations/allocations-page.html
340
@@ -6629,7 +6629,7 @@
Join now or check out the example account
- Join now or check out the example account
+ 立即加入 或查看示例账户
apps/client/src/app/pages/landing/landing-page.html
434
@@ -6637,7 +6637,7 @@
Oops! There was an error setting up biometric authentication.
- Oops! There was an error setting up biometric authentication.
+ 哎呀!设置生物识别认证时发生错误。
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
302
@@ -6645,7 +6645,7 @@
Show more
- Show more
+ 显示更多
libs/ui/src/lib/top-holdings/top-holdings.component.html
174
@@ -6653,7 +6653,7 @@
Benchmarks
- Benchmarks
+ 基准
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
81
@@ -6661,7 +6661,7 @@
Delete Profiles
- Delete Profiles
+ 删除配置文件
apps/client/src/app/components/admin-market-data/admin-market-data.html
243
@@ -6669,7 +6669,7 @@
Do you really want to delete these profiles?
- Do you really want to delete these profiles?
+ 您确定要删除这些配置文件吗?
apps/client/src/app/components/admin-market-data/admin-market-data.service.ts
68
@@ -6677,7 +6677,7 @@
Oops! Could not delete profiles.
- Oops! Could not delete profiles.
+ 哎呀!无法删除配置文件。
apps/client/src/app/components/admin-market-data/admin-market-data.service.ts
56
@@ -6685,7 +6685,7 @@
Table
- Table
+ 表格
apps/client/src/app/components/home-holdings/home-holdings.html
16
@@ -6693,7 +6693,7 @@
Chart
- Chart
+ 图表
apps/client/src/app/components/home-holdings/home-holdings.html
19
@@ -6701,7 +6701,7 @@
Would you like to refine your personal investment strategy?
- Would you like to refine your personal investment strategy?
+ 您想 优化 您的 个人投资策略吗?
apps/client/src/app/pages/public/public-page.html
211
@@ -6709,7 +6709,7 @@
Alternative
- Alternative
+ 另类
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
81
@@ -6717,7 +6717,7 @@
App
- App
+ 应用
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
82
@@ -6725,7 +6725,7 @@
Budgeting
- Budgeting
+ 预算管理
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
83
@@ -6733,7 +6733,7 @@
Community
- Community
+ 社区
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
84
@@ -6741,7 +6741,7 @@
Family Office
- Family Office
+ 家族办公室
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
85
@@ -6749,7 +6749,7 @@
Investor
- Investor
+ 投资者
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
88
@@ -6757,7 +6757,7 @@
Open Source
- Open Source
+ 开源
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
89
@@ -6765,7 +6765,7 @@
Personal Finance
- Personal Finance
+ 个人理财
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
91
@@ -6773,7 +6773,7 @@
Privacy
- Privacy
+ 隐私
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
92
@@ -6781,7 +6781,7 @@
Software
- Software
+ 软件
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
94
@@ -6789,7 +6789,7 @@
Tool
- Tool
+ 工具
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
95
@@ -6797,7 +6797,7 @@
User Experience
- User Experience
+ 用户体验
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
96
@@ -6805,7 +6805,7 @@
Wealth
- Wealth
+ 财富
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
97
@@ -6813,7 +6813,7 @@
Wealth Management
- Wealth Management
+ 财富管理
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
98
@@ -6821,7 +6821,7 @@
Australia
- Australia
+ 澳大利亚
libs/ui/src/lib/i18n.ts
74
@@ -6829,7 +6829,7 @@
Austria
- Austria
+ 奥地利
libs/ui/src/lib/i18n.ts
75
@@ -6837,7 +6837,7 @@
Belgium
- Belgium
+ 比利时
libs/ui/src/lib/i18n.ts
76
@@ -6845,7 +6845,7 @@
Bulgaria
- Bulgaria
+ 保加利亚
libs/ui/src/lib/i18n.ts
78
@@ -6853,7 +6853,7 @@
Canada
- Canada
+ 加拿大
libs/ui/src/lib/i18n.ts
79
@@ -6861,7 +6861,7 @@
Czech Republic
- Czech Republic
+ 捷克共和国
libs/ui/src/lib/i18n.ts
80
@@ -6869,7 +6869,7 @@
Finland
- Finland
+ 芬兰
libs/ui/src/lib/i18n.ts
81
@@ -6877,7 +6877,7 @@
France
- France
+ 法国
libs/ui/src/lib/i18n.ts
82
@@ -6885,7 +6885,7 @@
Germany
- Germany
+ 德国
libs/ui/src/lib/i18n.ts
83
@@ -6893,7 +6893,7 @@
India
- India
+ 印度
libs/ui/src/lib/i18n.ts
84
@@ -6901,7 +6901,7 @@
Italy
- Italy
+ 意大利
libs/ui/src/lib/i18n.ts
85
@@ -6909,7 +6909,7 @@
Netherlands
- Netherlands
+ 荷兰
libs/ui/src/lib/i18n.ts
87
@@ -6917,7 +6917,7 @@
New Zealand
- New Zealand
+ 新西兰
libs/ui/src/lib/i18n.ts
88
@@ -6925,7 +6925,7 @@
Poland
- Poland
+ 波兰
libs/ui/src/lib/i18n.ts
89
@@ -6933,7 +6933,7 @@
Romania
- Romania
+ 罗马尼亚
libs/ui/src/lib/i18n.ts
90
@@ -6941,7 +6941,7 @@
South Africa
- South Africa
+ 南非
libs/ui/src/lib/i18n.ts
92
@@ -6949,7 +6949,7 @@
Thailand
- Thailand
+ 泰国
libs/ui/src/lib/i18n.ts
94
@@ -6957,7 +6957,7 @@
United States
- United States
+ 美国
libs/ui/src/lib/i18n.ts
97
@@ -6965,7 +6965,7 @@
Error
- Error
+ 错误
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
527
@@ -6973,7 +6973,7 @@
Deactivate
- Deactivate
+ 停用
apps/client/src/app/components/rule/rule.component.html
72
@@ -6981,7 +6981,7 @@
Activate
- Activate
+ 激活
apps/client/src/app/components/rule/rule.component.html
74
@@ -6989,7 +6989,7 @@
Inactive
- Inactive
+ 非活跃
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
232
@@ -6997,7 +6997,7 @@
Cancel
- Cancel
+ 取消
libs/ui/src/lib/i18n.ts
9
@@ -7005,7 +7005,7 @@
Close
- Close
+ 关闭
libs/ui/src/lib/i18n.ts
11
@@ -7013,7 +7013,7 @@
Yes
- Yes
+ 是
libs/ui/src/lib/i18n.ts
32
@@ -7021,7 +7021,7 @@
Copy link to clipboard
- Copy link to clipboard
+ 复制链接到剪贴板
apps/client/src/app/components/access-table/access-table.component.html
70
@@ -7029,7 +7029,7 @@
Portfolio Snapshot
- Portfolio Snapshot
+ 投资组合快照
apps/client/src/app/components/admin-jobs/admin-jobs.html
39
@@ -7037,7 +7037,7 @@
Change with currency effect Change
- Change with currency effect Change
+ 含货币影响的涨跌 涨跌
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
50
@@ -7045,7 +7045,7 @@
Performance with currency effect Performance
- Performance with currency effect Performance
+ 含货币影响的表现 表现
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
69
@@ -7053,7 +7053,7 @@
Threshold Min
- Threshold Min
+ 最小阈值
apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html
54
@@ -7061,7 +7061,7 @@
Threshold Max
- Threshold Max
+ 最大阈值
apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html
92
@@ -7069,7 +7069,7 @@
Close
- Close
+ 自定义
apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html
129
@@ -7077,7 +7077,7 @@
Customize
- Customize
+ 自定义
apps/client/src/app/components/rule/rule.component.html
67
@@ -7085,7 +7085,7 @@
No auto-renewal.
- No auto-renewal.
+ 不自动续订。
apps/client/src/app/components/user-account-membership/user-account-membership.html
70
@@ -7093,7 +7093,7 @@
Today
- Today
+ 今天
apps/client/src/app/pages/public/public-page.html
24
@@ -7101,7 +7101,7 @@
This year
- This year
+ 今年
apps/client/src/app/pages/public/public-page.html
42
@@ -7109,7 +7109,7 @@
From the beginning
- From the beginning
+ 从头开始
apps/client/src/app/pages/public/public-page.html
60
@@ -7117,7 +7117,7 @@
Oops! Invalid currency.
- Oops! Invalid currency.
+ 哎呀!无效的货币。
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
49
@@ -7125,7 +7125,7 @@
This page has been archived.
- This page has been archived.
+ 此页面已存档。
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
14
@@ -7133,7 +7133,7 @@
is Open Source Software
- is Open Source Software
+ 是开源软件
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
139
@@ -7141,7 +7141,7 @@
is not Open Source Software
- is not Open Source Software
+ 不是开源软件
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
146
@@ -7149,7 +7149,7 @@
is Open Source Software
- is Open Source Software
+ 是开源软件
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
156
@@ -7157,7 +7157,7 @@
is not Open Source Software
- is not Open Source Software
+ 不是开源软件
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
163
@@ -7165,7 +7165,7 @@
can be self-hosted
- can be self-hosted
+ 可以自托管
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
178
@@ -7173,7 +7173,7 @@
cannot be self-hosted
- cannot be self-hosted
+ 无法自托管
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
185
@@ -7181,7 +7181,7 @@
can be self-hosted
- can be self-hosted
+ 可以自托管
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
195
@@ -7189,7 +7189,7 @@
cannot be self-hosted
- cannot be self-hosted
+ 无法自托管
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
202
@@ -7197,7 +7197,7 @@
can be used anonymously
- can be used anonymously
+ 可以匿名使用
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
217
@@ -7205,7 +7205,7 @@
cannot be used anonymously
- cannot be used anonymously
+ 无法匿名使用
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
224
@@ -7213,7 +7213,7 @@
can be used anonymously
- can be used anonymously
+ 可以匿名使用
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
234
@@ -7221,7 +7221,7 @@
cannot be used anonymously
- cannot be used anonymously
+ 无法匿名使用
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
241
@@ -7229,7 +7229,7 @@
offers a free plan
- offers a free plan
+ 提供免费计划
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
256
@@ -7237,7 +7237,7 @@
does not offer a free plan
- does not offer a free plan
+ 不提供免费计划
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
263
@@ -7245,7 +7245,7 @@
offers a free plan
- offers a free plan
+ 提供免费计划
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
273
@@ -7253,7 +7253,7 @@
does not offer a free plan
- does not offer a free plan
+ 不提供免费计划
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
280
@@ -7261,7 +7261,7 @@
Oops! Could not find any assets.
- Oops! Could not find any assets.
+ 哎呀!找不到任何资产。
libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html
40
@@ -7269,7 +7269,7 @@
Data Providers
- Data Providers
+ 数据提供者
apps/client/src/app/components/admin-settings/admin-settings.component.html
4
@@ -7277,7 +7277,7 @@
Set API key
- Set API key
+ 设置 API 密钥
apps/client/src/app/components/admin-settings/admin-settings.component.html
83
@@ -7285,7 +7285,7 @@
Get access to 80’000+ tickers from over 50 exchanges
- Get access to 80’000+ tickers from over 50 exchanges
+ 获取来自 50 多个交易所的 80,000+ 股票代码访问权限
libs/ui/src/lib/i18n.ts
24
@@ -7293,7 +7293,7 @@
Ukraine
- Ukraine
+ 乌克兰
libs/ui/src/lib/i18n.ts
95
@@ -7301,7 +7301,7 @@
Join now
- Join now
+ 立即加入
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
110
@@ -7309,7 +7309,7 @@
Glossary
- Glossary
+ 词汇表
apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts
10
@@ -7321,7 +7321,7 @@
Guides
- Guides
+ 指南
apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts
10
@@ -7333,7 +7333,7 @@
guides
- guides
+ 指南
snake-case
apps/client/src/app/pages/resources/overview/resources-overview.component.ts
@@ -7346,7 +7346,7 @@
glossary
- glossary
+ 词汇表
snake-case
apps/client/src/app/pages/resources/overview/resources-overview.component.ts
@@ -7359,7 +7359,7 @@
Threshold range
- Threshold range
+ 阈值范围
apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html
9
@@ -7367,7 +7367,7 @@
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 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
@@ -7375,7 +7375,7 @@
Economic Market Cluster Risks
- Economic Market Cluster Risks
+ 经济市场集群风险
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
165
@@ -7383,7 +7383,7 @@
of
- of
+ 的
apps/client/src/app/components/admin-settings/admin-settings.component.html
52
@@ -7391,7 +7391,7 @@
daily requests
- daily requests
+ 每日请求
apps/client/src/app/components/admin-settings/admin-settings.component.html
54
@@ -7399,7 +7399,7 @@
Remove API key
- Remove API key
+ 移除 API 密钥
apps/client/src/app/components/admin-settings/admin-settings.component.html
71
@@ -7407,7 +7407,7 @@
Do you really want to delete the API key?
- Do you really want to delete the API key?
+ 您确定要删除此 API 密钥吗?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
96
@@ -7415,7 +7415,7 @@
Please enter your Ghostfolio API key:
- Please enter your Ghostfolio API key:
+ 请输入您的 Ghostfolio API 密钥:
apps/client/src/app/pages/api/api-page.component.ts
41
@@ -7423,7 +7423,7 @@
I have an API key
- I have an API key
+ 我有一个 API 密钥
apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
39
@@ -7431,7 +7431,7 @@
API Requests Today
- API Requests Today
+ 今日 API 请求数
apps/client/src/app/components/admin-users/admin-users.html
178
@@ -7439,7 +7439,7 @@
Could not generate an API key
- Could not generate an API key
+ 无法生成 API 密钥
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
127
@@ -7447,7 +7447,7 @@
Set this API key in your self-hosted environment:
- Set this API key in your self-hosted environment:
+ 在您的自托管环境中设置此 API 密钥:
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
142
@@ -7455,7 +7455,7 @@
Ghostfolio Premium Data Provider API Key
- Ghostfolio Premium Data Provider API Key
+ Ghostfolio Premium 数据提供者 API 密钥
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
145
@@ -7463,7 +7463,7 @@
Do you really want to generate a new API key?
- Do you really want to generate a new API key?
+ 您确定要生成新的 API 密钥吗?
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
150
@@ -7471,7 +7471,7 @@
Tag
- Tag
+ 标签
libs/ui/src/lib/assistant/assistant.html
157
@@ -7479,7 +7479,7 @@
API Key
- API Key
+ API 密钥
libs/ui/src/lib/membership-card/membership-card.component.html
18
@@ -7487,7 +7487,7 @@
Generate Ghostfolio Premium Data Provider API key for self-hosted environments...
- Generate Ghostfolio Premium Data Provider API key for self-hosted environments...
+ 为自托管环境生成 Ghostfolio Premium 数据提供者 API 密钥...
libs/ui/src/lib/membership-card/membership-card.component.html
26
@@ -7495,7 +7495,7 @@
out of
- out of
+ /
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
56
@@ -7503,7 +7503,7 @@
rules align with your portfolio.
- rules align with your portfolio.
+ 条规则与您的投资组合一致。
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
58
@@ -7511,7 +7511,7 @@
Save
- Save
+ 保存
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
62
@@ -7519,7 +7519,7 @@
Asset Class Cluster Risks
- Asset Class Cluster Risks
+ 资产类别集群风险
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
117
@@ -7527,7 +7527,7 @@
Me
- Me
+ 我
apps/client/src/app/components/user-account-access/user-account-access.component.ts
135
@@ -7535,7 +7535,7 @@
Received Access
- Received Access
+ 已获得访问权限
apps/client/src/app/components/user-account-access/user-account-access.html
3
@@ -7543,7 +7543,7 @@
Please enter your Ghostfolio API key.
- Please enter your Ghostfolio API key.
+ 请输入您的 Ghostfolio API 密钥。
apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts
57
@@ -7551,7 +7551,7 @@
AI prompt has been copied to the clipboard
- AI prompt has been copied to the clipboard
+ AI 提示已复制到剪贴板
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
173
@@ -7559,7 +7559,7 @@
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
65
@@ -7567,7 +7567,7 @@
Early Access
- Early Access
+ 抢先体验
apps/client/src/app/components/admin-settings/admin-settings.component.html
29
@@ -7575,7 +7575,7 @@
Regional Market Cluster Risks
- Regional Market Cluster Risks
+ 区域市场集群风险
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
189
@@ -7583,7 +7583,7 @@
Lazy
- Lazy
+ 延迟
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
138
@@ -7591,7 +7591,7 @@
Instant
- Instant
+ 即时
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
142
@@ -7599,7 +7599,7 @@
Default Market Price
- Default Market Price
+ 默认市场价格
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
386
@@ -7607,7 +7607,7 @@
Mode
- Mode
+ 模式
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
423
@@ -7615,7 +7615,7 @@
Selector
- Selector
+ 选择器
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
439
@@ -7623,7 +7623,7 @@
HTTP Request Headers
- HTTP Request Headers
+ HTTP 请求标头
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
399
@@ -7631,7 +7631,7 @@
end of day
- end of day
+ 收盘
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
138
@@ -7639,7 +7639,7 @@
real-time
- real-time
+ 实时
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
142
@@ -7647,7 +7647,7 @@
Open Duck.ai
- Open Duck.ai
+ 打开 Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
174
@@ -7655,7 +7655,7 @@
Create
- Create
+ 创建
libs/ui/src/lib/tags-selector/tags-selector.component.html
50
@@ -7663,7 +7663,7 @@
Market Data
- Market Data
+ 市场数据
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
374
@@ -7671,7 +7671,7 @@
Change
- Change
+ 涨跌
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
365
@@ -7679,7 +7679,7 @@
Performance
- Performance
+ 表现
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
365
@@ -7691,7 +7691,7 @@
Copy portfolio data to clipboard for AI prompt
- Copy portfolio data to clipboard for AI prompt
+ 复制投资组合数据到剪贴板以供 AI 提示使用
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
42
@@ -7699,7 +7699,7 @@
Copy AI prompt to clipboard for analysis
- Copy AI prompt to clipboard for analysis
+ 复制 AI 提示到剪贴板进行分析
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
67
@@ -7707,7 +7707,7 @@
Armenia
- Armenia
+ 亚美尼亚
libs/ui/src/lib/i18n.ts
73
@@ -7715,7 +7715,7 @@
British Virgin Islands
- British Virgin Islands
+ 英属维尔京群岛
libs/ui/src/lib/i18n.ts
77
@@ -7723,7 +7723,7 @@
Singapore
- Singapore
+ 新加坡
libs/ui/src/lib/i18n.ts
91
@@ -7731,7 +7731,7 @@
Terms and Conditions
- Terms and Conditions
+ 条款和条件
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
15
@@ -7739,7 +7739,7 @@
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
18
@@ -7747,7 +7747,7 @@
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
28
@@ -7755,7 +7755,7 @@
Continue
- Continue
+ 继续
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
57
@@ -7763,7 +7763,7 @@
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
67
@@ -7771,7 +7771,7 @@
Security token
- Security token
+ 安全令牌
apps/client/src/app/components/admin-users/admin-users.component.ts
163
@@ -7779,7 +7779,7 @@
Do you really want to generate a new security token for this user?
- Do you really want to generate a new security token for this user?
+ 您确定要为此用户生成新的安全令牌吗?
apps/client/src/app/components/admin-users/admin-users.component.ts
168
@@ -7787,7 +7787,7 @@
Generate Security Token
- Generate Security Token
+ 生成安全令牌
apps/client/src/app/components/admin-users/admin-users.html
249
@@ -7795,7 +7795,7 @@
United Kingdom
- United Kingdom
+ 英国
libs/ui/src/lib/i18n.ts
96
@@ -7803,7 +7803,7 @@
Terms of Service
- Terms of Service
+ 服务条款
apps/client/src/app/app.component.html
112
@@ -7811,7 +7811,7 @@
terms-of-service
- terms-of-service
+ 服务条款
snake-case
apps/client/src/app/app.component.ts
@@ -7832,7 +7832,7 @@
Terms of Service
- Terms of Service
+ 服务条款
apps/client/src/app/pages/about/about-page.component.ts
71
@@ -7844,7 +7844,7 @@
Terms of Service
- Terms of Service
+ 服务条款
apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html
4
@@ -7852,7 +7852,7 @@
and I agree to the Terms of Service.
- and I agree to the Terms of Service.
+ 我同意 服务条款。
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
34
@@ -7860,7 +7860,7 @@
() is already in use.
- () is already in use.
+ () 已在使用中。
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
462
@@ -7868,7 +7868,7 @@
An error occurred while updating to ().
- An error occurred while updating to ().
+ 在更新到 () 时发生错误。
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
470
@@ -7876,7 +7876,7 @@
Apply
- Apply
+ 应用
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
138
@@ -7884,7 +7884,7 @@
with API access for
- with API access for
+ 包含 API 访问权限,适用于
apps/client/src/app/pages/pricing/pricing-page.html
266
@@ -7892,7 +7892,7 @@
Gather Recent Historical Market Data
- Gather Recent Historical Market Data
+ 收集近期历史市场数据
apps/client/src/app/components/admin-market-data/admin-market-data.html
226
@@ -7900,7 +7900,7 @@
Gather All Historical Market Data
- Gather All Historical Market Data
+ 收集所有历史市场数据
apps/client/src/app/components/admin-market-data/admin-market-data.html
231
@@ -7908,7 +7908,7 @@
Gather Historical Market Data
- Gather Historical Market Data
+ 收集历史市场数据
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
29
@@ -7916,7 +7916,7 @@
Data Gathering is off
- Data Gathering is off
+ 数据收集已关闭
apps/client/src/app/components/admin-market-data/admin-market-data.html
38
@@ -7924,7 +7924,7 @@
Performance Calculation
- Performance Calculation
+ 绩效计算
apps/client/src/app/components/user-account-settings/user-account-settings.html
31
@@ -7932,7 +7932,7 @@
someone
- someone
+ 某人
apps/client/src/app/pages/public/public-page.component.ts
33
@@ -7940,7 +7940,7 @@
Add asset to watchlist
- Add asset to watchlist
+ 添加资产到关注列表
apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html
7
@@ -7948,7 +7948,7 @@
Watchlist
- Watchlist
+ 关注列表
apps/client/src/app/components/home-watchlist/home-watchlist.html
4
@@ -7960,7 +7960,7 @@
Watchlist
- Watchlist
+ 关注列表
apps/client/src/app/pages/home/home-page-routing.module.ts
44
@@ -7972,7 +7972,7 @@
Get Early Access
- Get Early Access
+ 获取抢先体验
apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html
29
@@ -7980,7 +7980,7 @@
Do you really want to delete this item?
- Do you really want to delete this item?
+ 您确定要删除此项目吗?
libs/ui/src/lib/benchmark/benchmark.component.ts
122
From 7bf87352c9eacd6228818f14d67969fd66b12167 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat, 10 May 2025 14:53:46 +0200
Subject: [PATCH 16/40] Feature/update locales (#4703)
Co-authored-by: github-actions[bot]
---
apps/client/src/locales/messages.ca.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.de.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.es.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.fr.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.it.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.nl.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.pl.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.pt.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.tr.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.uk.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.xlf | 64 ++++++++++++-------------
apps/client/src/locales/messages.zh.xlf | 64 ++++++++++++-------------
12 files changed, 384 insertions(+), 384 deletions(-)
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index 3f35305f8..8fac18b44 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -318,43 +318,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -362,7 +362,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
- 223
+ 221
@@ -2807,7 +2807,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -3287,7 +3287,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -3403,7 +3403,7 @@
Vista del presentador
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -3411,7 +3411,7 @@
Protecció per a informació sensible com ara rendiments absoluts i valors de quantitat
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3447,7 +3447,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -3455,7 +3455,7 @@
Format de data i número
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -3463,7 +3463,7 @@
Aparença
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -3471,7 +3471,7 @@
Automàtic
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -3479,7 +3479,7 @@
Llum
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -3487,7 +3487,7 @@
Fosc
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -3495,7 +3495,7 @@
Mode Zen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -3507,7 +3507,7 @@
Experiència sense distraccions per a temps turbulents
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3515,7 +3515,7 @@
Autenticació biomètrica
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -3523,7 +3523,7 @@
Inicieu la sessió amb l’empremta digital
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -3531,7 +3531,7 @@
Característiques experimentals
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -3539,7 +3539,7 @@
Doneu un cop d’ull a les properes funcionalitats
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -3547,7 +3547,7 @@
Exporta dades
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -3555,7 +3555,7 @@
Zona de perill
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -3563,7 +3563,7 @@
Tanca el compte
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
@@ -4075,7 +4075,7 @@
Programari de codi obert
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -4083,7 +4083,7 @@
Comença
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
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 e45939fd2..ba5b3cd9d 100644
--- a/apps/client/src/locales/messages.de.xlf
+++ b/apps/client/src/locales/messages.de.xlf
@@ -26,7 +26,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
- 223
+ 221
@@ -1002,7 +1002,7 @@
Registrieren
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -1066,7 +1066,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -1726,7 +1726,7 @@
Präsentationsansicht
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -1746,7 +1746,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -1754,7 +1754,7 @@
Datums- und Zahlenformat
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -1762,7 +1762,7 @@
Zen Modus
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -1774,7 +1774,7 @@
Einloggen mit Fingerabdruck
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -1786,7 +1786,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -2862,7 +2862,7 @@
Experimentelle Funktionen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -2910,7 +2910,7 @@
Aussehen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -2918,7 +2918,7 @@
Automatisch
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -2926,7 +2926,7 @@
Hell
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -2934,7 +2934,7 @@
Dunkel
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -3202,43 +3202,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -3462,7 +3462,7 @@
Ausblenden von sensiblen Informationen wie absoluter Performance und Stückzahl
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3470,7 +3470,7 @@
Unbeschwertes Erlebnis für turbulente Zeiten
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3478,7 +3478,7 @@
Vorschau auf kommende Funktionalität
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -4310,7 +4310,7 @@
Open Source Software
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -4718,7 +4718,7 @@
Biometrische Authentifizierung
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -4802,7 +4802,7 @@
Daten exportieren
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -6623,7 +6623,7 @@
Gefahrenzone
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6631,7 +6631,7 @@
Konto schliessen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf
index b2847bd29..f49aa6873 100644
--- a/apps/client/src/locales/messages.es.xlf
+++ b/apps/client/src/locales/messages.es.xlf
@@ -27,7 +27,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
- 223
+ 221
@@ -987,7 +987,7 @@
Empezar
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -1051,7 +1051,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -1711,7 +1711,7 @@
Vista del presentador
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -1731,7 +1731,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -1739,7 +1739,7 @@
Formato de fecha y número
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -1747,7 +1747,7 @@
Modo Zen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -1759,7 +1759,7 @@
Iniciar sesión con huella digital
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -1771,7 +1771,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -2847,7 +2847,7 @@
Funcionalidades experimentales
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -2895,7 +2895,7 @@
Apariencia
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -2903,7 +2903,7 @@
Automático
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -2911,7 +2911,7 @@
Claro
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -2919,7 +2919,7 @@
Oscuro
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -3187,43 +3187,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -3447,7 +3447,7 @@
Protección de información confidencial como rendimientos absolutos y valores cuantitativos
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3455,7 +3455,7 @@
Experiencia sin distracciones para tiempos turbulentos
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3463,7 +3463,7 @@
Un adelanto de las próximas funciones
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -4287,7 +4287,7 @@
Open Source Software
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -4695,7 +4695,7 @@
Biometric Authentication
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -4779,7 +4779,7 @@
Export Data
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -6600,7 +6600,7 @@
Zona peligrosa
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6608,7 +6608,7 @@
Eliminar cuenta
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index 98f345db7..45323c7c1 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
- 223
+ 221
@@ -1402,7 +1402,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -1966,7 +1966,7 @@
Vue de Présentation
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -1998,43 +1998,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -2046,7 +2046,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -2054,7 +2054,7 @@
Format de date et d’heure
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -2062,7 +2062,7 @@
Apparence
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -2070,7 +2070,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -2078,7 +2078,7 @@
Clair
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -2086,7 +2086,7 @@
Sombre
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -2094,7 +2094,7 @@
Mode Zen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -2106,7 +2106,7 @@
Se connecter avec empreinte
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -2114,7 +2114,7 @@
Fonctionnalités expérimentales
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -2126,7 +2126,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -2866,7 +2866,7 @@
Démarrer
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -3446,7 +3446,7 @@
Protection pour les informations sensibles telles que la performance absolue et les montants
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3454,7 +3454,7 @@
Expérience sans distraction pour les périodes tumultueuses
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3462,7 +3462,7 @@
Avant-première de fonctionnalités futures
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -4286,7 +4286,7 @@
Logiciel Open Source
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -4694,7 +4694,7 @@
Authentication biométrique
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -4778,7 +4778,7 @@
Exporter les Data
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -6599,7 +6599,7 @@
Zone de danger
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6607,7 +6607,7 @@
Supprimer le compte
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf
index b0cd54ea0..00440b52c 100644
--- a/apps/client/src/locales/messages.it.xlf
+++ b/apps/client/src/locales/messages.it.xlf
@@ -27,7 +27,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
- 223
+ 221
@@ -987,7 +987,7 @@
Inizia
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -1051,7 +1051,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -1711,7 +1711,7 @@
Vista presentatore
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -1731,7 +1731,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -1739,7 +1739,7 @@
Formato data e numero
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -1747,7 +1747,7 @@
Modalità Zen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -1759,7 +1759,7 @@
Accesso con impronta digitale
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -1771,7 +1771,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -2847,7 +2847,7 @@
Funzionalità sperimentali
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -2895,7 +2895,7 @@
Aspetto
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -2903,7 +2903,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -2911,7 +2911,7 @@
Chiaro
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -2919,7 +2919,7 @@
Scuro
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -3187,43 +3187,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -3447,7 +3447,7 @@
Protezione delle informazioni sensibili come le prestazioni assolute e i valori quantitativi
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3455,7 +3455,7 @@
Esperienza priva di distrazioni per i periodi più turbolenti
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3463,7 +3463,7 @@
Un’anteprima delle funzionalità in arrivo
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -4287,7 +4287,7 @@
Software open source
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -4695,7 +4695,7 @@
Autenticazione biometrica
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -4779,7 +4779,7 @@
Esporta dati
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -6600,7 +6600,7 @@
Zona di Pericolo
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6608,7 +6608,7 @@
Chiudi l’account
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf
index 267add80e..8038048ff 100644
--- a/apps/client/src/locales/messages.nl.xlf
+++ b/apps/client/src/locales/messages.nl.xlf
@@ -26,7 +26,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
- 223
+ 221
@@ -986,7 +986,7 @@
Aan de slag
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -1050,7 +1050,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -1710,7 +1710,7 @@
Presentatie weergave
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -1730,7 +1730,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -1738,7 +1738,7 @@
Datum- en getalnotatie
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -1746,7 +1746,7 @@
Zen-modus
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -1758,7 +1758,7 @@
Aanmelden met vingerafdruk
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -1770,7 +1770,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -2846,7 +2846,7 @@
Experimentele functies
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -2894,7 +2894,7 @@
Weergave
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -2902,7 +2902,7 @@
Automatisch
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -2910,7 +2910,7 @@
Licht
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -2918,7 +2918,7 @@
Donker
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -3186,43 +3186,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -3446,7 +3446,7 @@
Bescherming voor gevoelige informatie zoals absoluut rendement en hoeveelheden
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3454,7 +3454,7 @@
Afleidingsvrije ervaring voor roerige tijden
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3462,7 +3462,7 @@
Voorproefje van nieuwe functionaliteit
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -4286,7 +4286,7 @@
Open Source Software
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -4694,7 +4694,7 @@
Biometrische authenticatie
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -4778,7 +4778,7 @@
Exporteer Data
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -6599,7 +6599,7 @@
Danger Zone
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6607,7 +6607,7 @@
Close Account
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf
index 57e678fef..2052f9ee8 100644
--- a/apps/client/src/locales/messages.pl.xlf
+++ b/apps/client/src/locales/messages.pl.xlf
@@ -759,43 +759,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -803,7 +803,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
- 223
+ 221
@@ -2463,7 +2463,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -3115,7 +3115,7 @@
Widok Prezentera
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -3123,7 +3123,7 @@
Ochrona dla wrażliwych informacji takich jak wyniki i wartości ilościowe
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3151,7 +3151,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -3159,7 +3159,7 @@
Format daty i liczb
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -3167,7 +3167,7 @@
Wygląd (tryb)
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -3175,7 +3175,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -3183,7 +3183,7 @@
Jasny
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -3191,7 +3191,7 @@
Ciemny
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -3199,7 +3199,7 @@
Tryb Zen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -3211,7 +3211,7 @@
Doświadczenie bez zakłóceń w niespokojnych czasach
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3219,7 +3219,7 @@
Uwierzytelnianie Biometryczne
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -3227,7 +3227,7 @@
Logowanie za pomocą linii papilarnych
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -3235,7 +3235,7 @@
Funkcje Eksperymentalne
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -3243,7 +3243,7 @@
Podgląd nadchodzących funkcjonalności
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -3255,7 +3255,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -3263,7 +3263,7 @@
Eksportuj Dane
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -3703,7 +3703,7 @@
Oprogramowanie Open Source
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -3711,7 +3711,7 @@
Rozpocznij
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -6599,7 +6599,7 @@
Strefa Zagrożenia
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6607,7 +6607,7 @@
Zamknij Konto
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf
index 9f8b82e04..b42e592f8 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
- 223
+ 221
@@ -1282,7 +1282,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -1950,7 +1950,7 @@
Vista do Apresentador
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -1990,7 +1990,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -1998,7 +1998,7 @@
Formato de números e datas
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -2006,7 +2006,7 @@
Modo Zen
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -2018,7 +2018,7 @@
Aparência
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -2026,7 +2026,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -2034,7 +2034,7 @@
Claro
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -2042,7 +2042,7 @@
Escuro
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -2050,7 +2050,7 @@
Iniciar sessão com impressão digital
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -2058,7 +2058,7 @@
Funcionalidades Experimentais
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -2070,7 +2070,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -2762,7 +2762,7 @@
Começar
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -3230,43 +3230,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -3446,7 +3446,7 @@
Proteção para informações sensíveis, como desempenhos absolutos e valores quantitativos
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3454,7 +3454,7 @@
Experiência sem distrações para tempos turbulentos
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3462,7 +3462,7 @@
Acesso antecipado a funcionalidades futuras
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -4286,7 +4286,7 @@
Software de código aberto
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -4694,7 +4694,7 @@
Autenticação biométrica
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -4778,7 +4778,7 @@
Exportar dados
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -6599,7 +6599,7 @@
Danger Zone
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6607,7 +6607,7 @@
Close Account
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf
index 1b77f6748..d4d2a5dda 100644
--- a/apps/client/src/locales/messages.tr.xlf
+++ b/apps/client/src/locales/messages.tr.xlf
@@ -731,43 +731,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -775,7 +775,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
- 223
+ 221
@@ -2311,7 +2311,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -3223,7 +3223,7 @@
Zen Modu
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -3259,7 +3259,7 @@
Açık Kaynak Yazılım
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -3267,7 +3267,7 @@
Başla
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -4991,7 +4991,7 @@
Sunum Görünümü
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -4999,7 +4999,7 @@
Gerçek performans ve miktar değerleri gibi hassas bilgilerin saklanması için
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -5027,7 +5027,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -5035,7 +5035,7 @@
Tarih ve Sayı Formatları
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -5043,7 +5043,7 @@
Görünüm
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -5051,7 +5051,7 @@
Otomatik
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -5059,7 +5059,7 @@
Açık
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -5067,7 +5067,7 @@
Koyu
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -5075,7 +5075,7 @@
Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -5083,7 +5083,7 @@
Biyometrik Kimlik Doğrulama
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -5091,7 +5091,7 @@
Parmak iziyle oturum aç
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -5099,7 +5099,7 @@
Deneysel Özellikler
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -5107,7 +5107,7 @@
Gelecek özelliklere göz atın
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -5119,7 +5119,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -5127,7 +5127,7 @@
Verileri Dışa Aktar
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -6599,7 +6599,7 @@
Tehlikeli Alan
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6607,7 +6607,7 @@
Hesabı Kapat
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf
index 72ffe96fc..03af83d36 100644
--- a/apps/client/src/locales/messages.uk.xlf
+++ b/apps/client/src/locales/messages.uk.xlf
@@ -318,43 +318,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -362,7 +362,7 @@
Ризик втрат у торгівлі може бути суттєвим. Не рекомендується інвестувати гроші, які можуть знадобитися в короткостроковій перспективі.
apps/client/src/app/app.component.html
- 223
+ 221
@@ -2919,7 +2919,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -3439,7 +3439,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -3627,7 +3627,7 @@
Режим доповідача
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -3635,7 +3635,7 @@
Захист конфіденційної інформації, такої як абсолютні показники та кількісні значення
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3671,7 +3671,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -3679,7 +3679,7 @@
Формат дати та чисел
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -3687,7 +3687,7 @@
Зовнішній вигляд
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -3695,7 +3695,7 @@
Автоматичний
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -3703,7 +3703,7 @@
Світлий
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -3711,7 +3711,7 @@
Темний
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -3719,7 +3719,7 @@
Режим дзен
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -3731,7 +3731,7 @@
Досвід без відволікань для неспокійних часів
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3739,7 +3739,7 @@
Біометрична аутентифікація
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -3747,7 +3747,7 @@
Увійти з відбитком пальця
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -3755,7 +3755,7 @@
Експериментальні функції
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -3763,7 +3763,7 @@
Попередній перегляд майбутніх функцій
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -3771,7 +3771,7 @@
Експортувати дані
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -3779,7 +3779,7 @@
Зона небезпеки
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -3787,7 +3787,7 @@
Закрити обліковий запис
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
@@ -4291,7 +4291,7 @@
Програмне забезпечення з відкритим кодом
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -4299,7 +4299,7 @@
Почати
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf
index 4ea9995b2..4c481d0cc 100644
--- a/apps/client/src/locales/messages.xlf
+++ b/apps/client/src/locales/messages.xlf
@@ -737,50 +737,50 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
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
- 223
+ 221
@@ -2334,7 +2334,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -2925,14 +2925,14 @@
Presenter View
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
Protection for sensitive information like absolute performances and quantity values
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -2957,49 +2957,49 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
Date and number format
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
Appearance
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
Light
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
Dark
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
Zen Mode
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -3010,35 +3010,35 @@
Distraction-free experience for turbulent times
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
Biometric Authentication
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
Sign in with fingerprint
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
Experimental Features
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
Sneak peek at upcoming functionality
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -3049,14 +3049,14 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
Export Data
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -3452,14 +3452,14 @@
Open Source Software
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
Get Started
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -6017,7 +6017,7 @@
Close Account
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
@@ -6031,7 +6031,7 @@
Danger Zone
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf
index e98814915..06d906dc7 100644
--- a/apps/client/src/locales/messages.zh.xlf
+++ b/apps/client/src/locales/messages.zh.xlf
@@ -760,43 +760,43 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 91
+ 90
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 96
+ 94
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 100
+ 98
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 104
+ 102
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 108
+ 106
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 112
+ 110
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 116
+ 114
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 120
+ 118
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 125
+ 123
apps/client/src/app/pages/features/features-page.html
- 277
+ 276
@@ -804,7 +804,7 @@
交易损失的风险可能很大。不建议将短期内可能需要的资金进行投资。
apps/client/src/app/app.component.html
- 223
+ 221
@@ -2472,7 +2472,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 281
+ 279
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -3124,7 +3124,7 @@
演示者视图
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 185
+ 183
@@ -3132,7 +3132,7 @@
保护绝对性能和数量值等敏感信息
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 186
+ 184
@@ -3160,7 +3160,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 135
+ 133
@@ -3168,7 +3168,7 @@
日期和数字格式
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 137
+ 135
@@ -3176,7 +3176,7 @@
外貌
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 160
+ 158
@@ -3184,7 +3184,7 @@
自动
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 174
+ 172
@@ -3192,7 +3192,7 @@
明亮
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 175
+ 173
@@ -3200,7 +3200,7 @@
黑暗
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 176
+ 174
@@ -3208,7 +3208,7 @@
极简模式
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 203
+ 201
apps/client/src/app/pages/features/features-page.html
@@ -3220,7 +3220,7 @@
动荡时期的无干扰体验
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 204
+ 202
@@ -3228,7 +3228,7 @@
生物识别认证
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 220
+ 218
@@ -3236,7 +3236,7 @@
使用指纹登录
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 221
+ 219
@@ -3244,7 +3244,7 @@
实验性功能
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 237
+ 235
@@ -3252,7 +3252,7 @@
预览即将推出的功能
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 238
+ 236
@@ -3264,7 +3264,7 @@
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 254
+ 252
@@ -3272,7 +3272,7 @@
导出数据
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 262
+ 260
@@ -3712,7 +3712,7 @@
开源软件
apps/client/src/app/pages/features/features-page.html
- 296
+ 295
@@ -3720,7 +3720,7 @@
立即开始
apps/client/src/app/pages/features/features-page.html
- 321
+ 320
apps/client/src/app/pages/public/public-page.html
@@ -6600,7 +6600,7 @@
危险区域
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 274
+ 272
@@ -6608,7 +6608,7 @@
关闭账户
apps/client/src/app/components/user-account-settings/user-account-settings.html
- 309
+ 307
From 4adc9dc9b158d8582e0d3a6cb543d0d5cf21ffdb Mon Sep 17 00:00:00 2001
From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com>
Date: Sat, 10 May 2025 23:07:32 +0700
Subject: [PATCH 17/40] Feature/upgrade to node-yahoo-finance2 version 3
(#4695)
* Upgrade node-yahoo-finance2 from version 2.11.3 to 3.3.1
* Update changelog
---
CHANGELOG.md | 1 +
.../yahoo-finance/yahoo-finance.service.ts | 21 +-
.../yahoo-finance/yahoo-finance.service.ts | 33 ++-
package-lock.json | 252 ++++++++++++++----
package.json | 2 +-
5 files changed, 231 insertions(+), 78 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b11f41a7d..6e64f546d 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
- Improved the language localization for Chinese (`zh`)
- Improved the language localization for Italian (`it`)
- Upgraded `nestjs` from version `10.4.15` to `11.0.12`
+- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.1`
### Fixed
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 64bbeebb5..94a466742 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
@@ -18,11 +18,13 @@ import {
} from '@prisma/client';
import { isISIN } from 'class-validator';
import { countries } from 'countries-list';
-import yahooFinance from 'yahoo-finance2';
-import type { Price } from 'yahoo-finance2/dist/esm/src/modules/quoteSummary-iface';
+import YahooFinance from 'yahoo-finance2';
+import type { Price } from 'yahoo-finance2/esm/src/modules/quoteSummary-iface';
@Injectable()
export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
+ private readonly yahooFinance = new YahooFinance();
+
public constructor(
private readonly cryptocurrencyService: CryptocurrencyService
) {}
@@ -99,8 +101,8 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
if (response.dataSource === 'YAHOO') {
yahooSymbol = symbol;
} else {
- const { quotes } = await yahooFinance.search(response.isin);
- yahooSymbol = quotes[0].symbol;
+ const { quotes } = await this.yahooFinance.search(response.isin);
+ yahooSymbol = quotes[0].symbol as string;
}
const { countries, sectors, url } =
@@ -165,10 +167,10 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
if (isISIN(symbol)) {
try {
- const { quotes } = await yahooFinance.search(symbol);
+ const { quotes } = await this.yahooFinance.search(symbol);
if (quotes?.[0]?.symbol) {
- symbol = quotes[0].symbol;
+ symbol = quotes[0].symbol as string;
}
} catch {}
} else if (symbol?.endsWith(`-${DEFAULT_CURRENCY}`)) {
@@ -177,7 +179,7 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
symbol = this.convertToYahooFinanceSymbol(symbol);
}
- const assetProfile = await yahooFinance.quoteSummary(symbol, {
+ const assetProfile = await this.yahooFinance.quoteSummary(symbol, {
modules: ['price', 'summaryProfile', 'topHoldings']
});
@@ -206,7 +208,10 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface {
for (const sectorWeighting of assetProfile.topHoldings
?.sectorWeightings ?? []) {
for (const [sector, weight] of Object.entries(sectorWeighting)) {
- response.sectors.push({ weight, name: this.parseSector(sector) });
+ response.sectors.push({
+ name: this.parseSector(sector),
+ weight: weight as number
+ });
}
}
} else if (
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 b9be5553e..d5a132b41 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
@@ -24,16 +24,19 @@ import {
import { Injectable, Logger } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import { addDays, format, isSameDay } from 'date-fns';
-import yahooFinance from 'yahoo-finance2';
-import { ChartResultArray } from 'yahoo-finance2/dist/esm/src/modules/chart';
+import YahooFinance from 'yahoo-finance2';
+import { ChartResultArray } from 'yahoo-finance2/esm/src/modules/chart';
import {
HistoricalDividendsResult,
HistoricalHistoryResult
-} from 'yahoo-finance2/dist/esm/src/modules/historical';
-import { Quote } from 'yahoo-finance2/dist/esm/src/modules/quote';
+} from 'yahoo-finance2/esm/src/modules/historical';
+import { Quote } from 'yahoo-finance2/esm/src/modules/quote';
+import { SearchQuoteNonYahoo } from 'yahoo-finance2/script/src/modules/search';
@Injectable()
export class YahooFinanceService implements DataProviderInterface {
+ private readonly yahooFinance = new YahooFinance();
+
public constructor(
private readonly cryptocurrencyService: CryptocurrencyService,
private readonly yahooFinanceDataEnhancerService: YahooFinanceDataEnhancerService
@@ -70,7 +73,7 @@ export class YahooFinanceService implements DataProviderInterface {
try {
const historicalResult = this.convertToDividendResult(
- await yahooFinance.chart(
+ await this.yahooFinance.chart(
this.yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol(
symbol
),
@@ -119,7 +122,7 @@ export class YahooFinanceService implements DataProviderInterface {
try {
const historicalResult = this.convertToHistoricalResult(
- await yahooFinance.chart(
+ await this.yahooFinance.chart(
this.yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol(
symbol
),
@@ -188,7 +191,7 @@ export class YahooFinanceService implements DataProviderInterface {
>[] = [];
try {
- quotes = await yahooFinance.quote(yahooFinanceSymbols);
+ quotes = await this.yahooFinance.quote(yahooFinanceSymbols);
} catch (error) {
Logger.error(error, 'YahooFinanceService');
@@ -244,13 +247,15 @@ export class YahooFinanceService implements DataProviderInterface {
quoteTypes.push('INDEX');
}
- const searchResult = await yahooFinance.search(query);
+ const searchResult = await this.yahooFinance.search(query);
const quotes = searchResult.quotes
- .filter((quote) => {
- // Filter out undefined symbols
- return quote.symbol;
- })
+ .filter(
+ (quote): quote is Exclude => {
+ // Filter out undefined symbols
+ return !!quote.symbol;
+ }
+ )
.filter(({ quoteType, symbol }) => {
return (
(quoteType === 'CRYPTOCURRENCY' &&
@@ -276,7 +281,7 @@ export class YahooFinanceService implements DataProviderInterface {
return true;
});
- const marketData = await yahooFinance.quote(
+ const marketData = await this.yahooFinance.quote(
quotes.map(({ symbol }) => {
return symbol;
})
@@ -336,7 +341,7 @@ export class YahooFinanceService implements DataProviderInterface {
private async getQuotesWithQuoteSummary(aYahooFinanceSymbols: string[]) {
const quoteSummaryPromises = aYahooFinanceSymbols.map((symbol) => {
- return yahooFinance.quoteSummary(symbol).catch(() => {
+ return this.yahooFinance.quoteSummary(symbol).catch(() => {
Logger.error(
`Could not get quote summary for ${symbol}`,
'YahooFinanceService'
diff --git a/package-lock.json b/package-lock.json
index a0a96dfd6..52924f839 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -89,7 +89,7 @@
"svgmap": "2.12.2",
"twitter-api-v2": "1.14.2",
"uuid": "11.1.0",
- "yahoo-finance2": "2.11.3",
+ "yahoo-finance2": "3.3.1",
"zone.js": "0.15.0"
},
"devDependencies": {
@@ -3117,6 +3117,46 @@
"resolved": "https://registry.npmjs.org/@date-fns/utc/-/utc-2.1.0.tgz",
"integrity": "sha512-176grgAgU2U303rD2/vcOmNg0kGPbhzckuH1TEP2al7n0AQipZIy9P15usd2TKQCG1g+E1jX/ZVQSzs4sUDwgA=="
},
+ "node_modules/@deno/shim-deno": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/@deno/shim-deno/-/shim-deno-0.18.2.tgz",
+ "integrity": "sha512-oQ0CVmOio63wlhwQF75zA4ioolPvOwAoK0yuzcS5bDC1JUvH3y1GS8xPh8EOpcoDQRU4FTG8OQfxhpR+c6DrzA==",
+ "license": "MIT",
+ "dependencies": {
+ "@deno/shim-deno-test": "^0.5.0",
+ "which": "^4.0.0"
+ }
+ },
+ "node_modules/@deno/shim-deno-test": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/@deno/shim-deno-test/-/shim-deno-test-0.5.0.tgz",
+ "integrity": "sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==",
+ "license": "MIT"
+ },
+ "node_modules/@deno/shim-deno/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==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@deno/shim-deno/node_modules/which": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
+ "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/@dfinity/agent": {
"version": "0.15.7",
"resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.15.7.tgz",
@@ -13144,6 +13184,7 @@
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
"integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
+ "devOptional": true,
"license": "MIT"
},
"node_modules/@types/trusted-types": {
@@ -20201,6 +20242,16 @@
}
}
},
+ "node_modules/fetch-mock-cache": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/fetch-mock-cache/-/fetch-mock-cache-2.1.3.tgz",
+ "integrity": "sha512-fiQO09fEhN6ZY7GMb71cs9P09B3lBgGQ9CygydJHKQWZQv95bzsyl6dJERHuy34tQyG0gsHZK1pR/6Pkj2b9Qw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4",
+ "filenamify-url": "2.1.2"
+ }
+ },
"node_modules/fflate": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
@@ -20295,6 +20346,48 @@
"node": ">=10"
}
},
+ "node_modules/filename-reserved-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
+ "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/filenamify": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz",
+ "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==",
+ "license": "MIT",
+ "dependencies": {
+ "filename-reserved-regex": "^2.0.0",
+ "strip-outer": "^1.0.1",
+ "trim-repeated": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filenamify-url": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-2.1.2.tgz",
+ "integrity": "sha512-3rMbAr7vDNMOGsj1aMniQFl749QjgM+lMJ/77ZRSPTIgxvolZwoQbn8dXLs7xfd+hAdli+oTnSWZNkJJLWQFEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "filenamify": "^4.3.0",
+ "humanize-url": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
@@ -21978,6 +22071,18 @@
"node": ">=8.12.0"
}
},
+ "node_modules/humanize-url": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-2.1.1.tgz",
+ "integrity": "sha512-V4nxsPGNE7mPjr1qDp471YfW8nhBiTRWrG/4usZlpvFU8I7gsV7Jvrrzv/snbLm5dWO3dr1ennu2YqnhTWFmYA==",
+ "license": "MIT",
+ "dependencies": {
+ "normalize-url": "^4.5.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/husky": {
"version": "9.1.7",
"resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz",
@@ -27355,6 +27460,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/normalize-url": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+ "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/npm-bundled": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz",
@@ -29682,6 +29796,7 @@
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
"integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==",
+ "devOptional": true,
"license": "MIT",
"dependencies": {
"punycode": "^2.3.1"
@@ -29705,6 +29820,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "devOptional": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -29781,6 +29897,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "devOptional": true,
"license": "MIT"
},
"node_modules/queue-microtask": {
@@ -32567,6 +32684,27 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strip-outer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
+ "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-outer/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/stripe": {
"version": "17.3.0",
"resolved": "https://registry.npmjs.org/stripe/-/stripe-17.3.0.tgz",
@@ -33170,6 +33308,24 @@
"node": ">=14.0.0"
}
},
+ "node_modules/tldts": {
+ "version": "6.1.86",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz",
+ "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==",
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^6.1.86"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "6.1.86",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz",
+ "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==",
+ "license": "MIT"
+ },
"node_modules/tmp": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
@@ -33239,6 +33395,7 @@
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
"integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "devOptional": true,
"license": "BSD-3-Clause",
"dependencies": {
"psl": "^1.1.33",
@@ -33250,22 +33407,11 @@
"node": ">=6"
}
},
- "node_modules/tough-cookie-file-store": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/tough-cookie-file-store/-/tough-cookie-file-store-2.0.3.tgz",
- "integrity": "sha512-sMpZVcmFf6EYFHFFl+SYH4W1/OnXBYMGDsv2IlbQ2caHyFElW/UR/gpj/KYU1JwmP4dE9xqwv2+vWcmlXHojSw==",
- "license": "MIT",
- "dependencies": {
- "tough-cookie": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/tough-cookie/node_modules/universalify": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "devOptional": true,
"license": "MIT",
"engines": {
"node": ">= 4.0.0"
@@ -33309,6 +33455,27 @@
"tree-kill": "cli.js"
}
},
+ "node_modules/trim-repeated": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
+ "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/trim-repeated/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/ts-api-utils": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz",
@@ -34272,6 +34439,7 @@
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
"license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
@@ -34302,6 +34470,7 @@
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "devOptional": true,
"license": "MIT",
"dependencies": {
"querystringify": "^2.1.1",
@@ -35922,56 +36091,29 @@
}
},
"node_modules/yahoo-finance2": {
- "version": "2.11.3",
- "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-2.11.3.tgz",
- "integrity": "sha512-yN4ADFNi2oNYtO79ntbEkSWdVi4KVmGYLwDJ5KV0czxILbAGj4ah6oCBYvMONeHAeDqxtS62zrG8xrHNF/2STw==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.3.1.tgz",
+ "integrity": "sha512-hBXdhieq897OoAu2HxA4/Ca+XrYtPFLTtGzPRW5qKCd+nX1ahHID3tmvxVBBlDTeOesdp0wjO5uGJS+o4cnEMw==",
"license": "MIT",
"dependencies": {
- "@types/tough-cookie": "^4.0.2",
- "ajv": "8.10.0",
- "ajv-formats": "2.1.1",
- "node-fetch": "^2.6.1",
- "tough-cookie": "^4.1.2",
- "tough-cookie-file-store": "^2.0.3"
- },
- "bin": {
- "yahoo-finance": "bin/yahoo-finance.js"
+ "@deno/shim-deno": "~0.18.0",
+ "fetch-mock-cache": "npm:fetch-mock-cache@^2.1.3",
+ "tough-cookie": "npm:tough-cookie@^5.1.1"
},
"engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/yahoo-finance2/node_modules/ajv": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz",
- "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "node": ">=20.0.0"
}
},
- "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",
+ "node_modules/yahoo-finance2/node_modules/tough-cookie": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
+ "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==",
+ "license": "BSD-3-Clause",
"dependencies": {
- "ajv": "^8.0.0"
+ "tldts": "^6.1.32"
},
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
+ "engines": {
+ "node": ">=16"
}
},
"node_modules/yallist": {
diff --git a/package.json b/package.json
index 637c7ed86..51b592245 100644
--- a/package.json
+++ b/package.json
@@ -135,7 +135,7 @@
"svgmap": "2.12.2",
"twitter-api-v2": "1.14.2",
"uuid": "11.1.0",
- "yahoo-finance2": "2.11.3",
+ "yahoo-finance2": "3.3.1",
"zone.js": "0.15.0"
},
"devDependencies": {
From 0b7fc7a3b2f6d65e9edc9f46d6c2fd26bab26c30 Mon Sep 17 00:00:00 2001
From: andiz2
Date: Sat, 10 May 2025 21:23:06 +0300
Subject: [PATCH 18/40] Feature/migrate data providers overview to Angular
Material table (#4704)
* Migrate data providers overview to Angular Material table
* Update changelog
---
CHANGELOG.md | 1 +
.../admin-settings.component.html | 182 +++++++++---------
.../admin-settings.component.ts | 19 +-
.../admin-settings/admin-settings.module.ts | 6 +-
4 files changed, 115 insertions(+), 93 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6e64f546d..cc3cefd97 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
+- Harmonized the data providers management style of the admin control panel
- Renamed `Order` to `activities` in the `User` database schema
- Improved the language localization for Catalan (`ca`)
- Improved the language localization for Chinese (`zh`)
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 977c8a372..997d34aa5 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
@@ -1,105 +1,109 @@
-
+
Data Providers
-
-
- @for (dataProvider of dataProviders; track dataProvider.name) {
-
- @if (dataProvider.name === 'Ghostfolio') {
-
-
-
+
+
+ Name
+ |
+
+
-
+ }
+
@if (isGhostfolioApiKeyValid === true) {
-
-
+
+
+ Valid until
+ {{
+ ghostfolioApiStatus?.subscription?.expiresAt
+ | date: defaultDateFormat
+ }}
+
+
+
+
{{ ghostfolioApiStatus.dailyRequests }}
of
{{ ghostfolioApiStatus.dailyRequestsMax }}
daily requests
-
-
-
-
-
+
- } @else if (isGhostfolioApiKeyValid === false) {
-
}
-
- } @else {
-
-
-
- {{ dataProvider.name }}
-
-
-
- }
+ } @else {
+ {{ element.name }}
+ }
+
- }
-
-
+ |
+
+
+
+ |
+
+
+ @if (isGhostfolioDataProvider(element)) {
+ @if (isGhostfolioApiKeyValid === true) {
+
+
+
+
+ } @else if (isGhostfolioApiKeyValid === false) {
+
+ }
+ }
+ |
+
+
+
+
+
+ @if (isLoading) {
+
+ }
diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts
index 68c196962..f18e49d10 100644
--- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts
+++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts
@@ -22,6 +22,7 @@ import {
OnInit
} from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
+import { MatTableDataSource } from '@angular/material/table';
import { DeviceDetectorService } from 'ngx-device-detector';
import { catchError, filter, of, Subject, takeUntil } from 'rxjs';
@@ -36,10 +37,12 @@ import { GhostfolioPremiumApiDialogParams } from './ghostfolio-premium-api-dialo
standalone: false
})
export class AdminSettingsComponent implements OnDestroy, OnInit {
- public dataProviders: DataProviderInfo[];
+ public dataSource = new MatTableDataSource();
public defaultDateFormat: string;
+ public displayedColumns = ['name', 'actions'];
public ghostfolioApiStatus: DataProviderGhostfolioStatusResponse;
public isGhostfolioApiKeyValid: boolean;
+ public isLoading = false;
public pricingUrl: string;
private deviceType: string;
@@ -83,6 +86,10 @@ export class AdminSettingsComponent implements OnDestroy, OnInit {
this.initialize();
}
+ public isGhostfolioDataProvider(provider: DataProviderInfo): boolean {
+ return provider.dataSource === 'GHOSTFOLIO';
+ }
+
public onRemoveGhostfolioApiKey() {
this.notificationService.confirm({
confirmFn: () => {
@@ -125,14 +132,20 @@ export class AdminSettingsComponent implements OnDestroy, OnInit {
}
private initialize() {
+ this.isLoading = true;
+
+ this.dataSource = new MatTableDataSource();
+
this.adminService
.fetchAdminData()
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ dataProviders, settings }) => {
- this.dataProviders = dataProviders.filter(({ dataSource }) => {
+ const filteredProviders = dataProviders.filter(({ dataSource }) => {
return dataSource !== 'MANUAL';
});
+ this.dataSource = new MatTableDataSource(filteredProviders);
+
this.adminService
.fetchGhostfolioDataProviderStatus(
settings[PROPERTY_API_KEY_GHOSTFOLIO] as string
@@ -157,6 +170,8 @@ export class AdminSettingsComponent implements OnDestroy, OnInit {
this.changeDetectorRef.markForCheck();
});
+ this.isLoading = false;
+
this.changeDetectorRef.markForCheck();
});
}
diff --git a/apps/client/src/app/components/admin-settings/admin-settings.module.ts b/apps/client/src/app/components/admin-settings/admin-settings.module.ts
index 79b269a62..c5148f681 100644
--- a/apps/client/src/app/components/admin-settings/admin-settings.module.ts
+++ b/apps/client/src/app/components/admin-settings/admin-settings.module.ts
@@ -6,9 +6,10 @@ import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { CommonModule } from '@angular/common';
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 { MatTableModule } from '@angular/material/table';
import { RouterModule } from '@angular/router';
+import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { AdminSettingsComponent } from './admin-settings.component';
@@ -21,8 +22,9 @@ import { AdminSettingsComponent } from './admin-settings.component';
GfAssetProfileIconComponent,
GfPremiumIndicatorComponent,
MatButtonModule,
- MatCardModule,
MatMenuModule,
+ MatTableModule,
+ NgxSkeletonLoaderModule,
RouterModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
From 6c322522d9d11dcbacf4d5bab49aa8b8649f1a06 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat, 10 May 2025 20:54:48 +0200
Subject: [PATCH 19/40] Feature/update locales (#4706)
Co-authored-by: github-actions[bot]
---
apps/client/src/locales/messages.ca.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.de.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.es.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.fr.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.it.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.nl.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.pl.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.pt.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.tr.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.uk.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.xlf | 24 ++++++++++++++----------
apps/client/src/locales/messages.zh.xlf | 24 ++++++++++++++----------
12 files changed, 168 insertions(+), 120 deletions(-)
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index 8fac18b44..b2f176212 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -653,7 +653,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -1057,6 +1057,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -2187,7 +2191,7 @@
Plataformes
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -2195,7 +2199,7 @@
Etiquetes
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -6671,7 +6675,7 @@
Valid until
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -7279,7 +7283,7 @@
Set API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7385,7 +7389,7 @@
of
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7393,7 +7397,7 @@
daily requests
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7401,7 +7405,7 @@
Remove API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7409,7 +7413,7 @@
Do you really want to delete the API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7569,7 +7573,7 @@
Early Access
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf
index ba5b3cd9d..ba7993a92 100644
--- a/apps/client/src/locales/messages.de.xlf
+++ b/apps/client/src/locales/messages.de.xlf
@@ -144,6 +144,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -1330,7 +1334,7 @@
Tags
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -3402,7 +3406,7 @@
Gültig bis
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3962,7 +3966,7 @@
Plattformen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -5453,7 +5457,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -7303,7 +7307,7 @@
API-Schlüssel setzen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7409,7 +7413,7 @@
von
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7417,7 +7421,7 @@
täglichen Anfragen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7425,7 +7429,7 @@
API-Schlüssel löschen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7433,7 +7437,7 @@
Möchtest du den API-Schlüssel wirklich löschen?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7593,7 +7597,7 @@
Early Access
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf
index f49aa6873..241d5c6e6 100644
--- a/apps/client/src/locales/messages.es.xlf
+++ b/apps/client/src/locales/messages.es.xlf
@@ -145,6 +145,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -1315,7 +1319,7 @@
Etiquetas
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -3387,7 +3391,7 @@
Válido hasta
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3939,7 +3943,7 @@
Platforms
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -5430,7 +5434,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -7280,7 +7284,7 @@
Set API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7386,7 +7390,7 @@
of
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7394,7 +7398,7 @@
daily requests
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7402,7 +7406,7 @@
Remove API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7410,7 +7414,7 @@
Do you really want to delete the API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7570,7 +7574,7 @@
Early Access
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index 45323c7c1..0ca4aefdf 100644
--- a/apps/client/src/locales/messages.fr.xlf
+++ b/apps/client/src/locales/messages.fr.xlf
@@ -152,6 +152,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -922,7 +926,7 @@
Étiquettes
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -3386,7 +3390,7 @@
Valide jusqu’au
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3938,7 +3942,7 @@
Platformes
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -5429,7 +5433,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -7279,7 +7283,7 @@
Définir clé API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7385,7 +7389,7 @@
sur
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7393,7 +7397,7 @@
requêtes journalières
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7401,7 +7405,7 @@
Retirer la clé API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7409,7 +7413,7 @@
Voulez-vous vraiment supprimer la clé API?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7569,7 +7573,7 @@
Accès anticipé
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf
index 00440b52c..cc28bb0e1 100644
--- a/apps/client/src/locales/messages.it.xlf
+++ b/apps/client/src/locales/messages.it.xlf
@@ -145,6 +145,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -1315,7 +1319,7 @@
Tag
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -3387,7 +3391,7 @@
Valido fino a
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3939,7 +3943,7 @@
Piattaforme
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -5430,7 +5434,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -7280,7 +7284,7 @@
Imposta API Key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7386,7 +7390,7 @@
di
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7394,7 +7398,7 @@
richieste giornaliere
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7402,7 +7406,7 @@
Rimuovi API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7410,7 +7414,7 @@
Vuoi davvero eliminare l’API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7570,7 +7574,7 @@
Accesso anticipato
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf
index 8038048ff..5e7d4240f 100644
--- a/apps/client/src/locales/messages.nl.xlf
+++ b/apps/client/src/locales/messages.nl.xlf
@@ -144,6 +144,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -1314,7 +1318,7 @@
Tags
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -3386,7 +3390,7 @@
Geldig tot
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3938,7 +3942,7 @@
Platforms
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -5429,7 +5433,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -7279,7 +7283,7 @@
Set API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7385,7 +7389,7 @@
of
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7393,7 +7397,7 @@
daily requests
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7401,7 +7405,7 @@
Remove API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7409,7 +7413,7 @@
Do you really want to delete the API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7569,7 +7573,7 @@
Early Access
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf
index 2052f9ee8..ab0fb8d48 100644
--- a/apps/client/src/locales/messages.pl.xlf
+++ b/apps/client/src/locales/messages.pl.xlf
@@ -272,7 +272,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -985,6 +985,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -2019,7 +2023,7 @@
Platformy
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -2027,7 +2031,7 @@
Tagi
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -6071,7 +6075,7 @@
Ważność do
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -7279,7 +7283,7 @@
Skonfiguruj klucz API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7385,7 +7389,7 @@
z
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7393,7 +7397,7 @@
codzienne żądania
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7401,7 +7405,7 @@
Usuń klucz API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7409,7 +7413,7 @@
Czy na pewno chcesz usunąć klucz API??
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7569,7 +7573,7 @@
Wczesny dostęp
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf
index b42e592f8..25882d131 100644
--- a/apps/client/src/locales/messages.pt.xlf
+++ b/apps/client/src/locales/messages.pt.xlf
@@ -152,6 +152,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -1618,7 +1622,7 @@
Marcadores
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -3386,7 +3390,7 @@
Válido até
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3938,7 +3942,7 @@
Plataformas
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -5429,7 +5433,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -7279,7 +7283,7 @@
Set API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7385,7 +7389,7 @@
of
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7393,7 +7397,7 @@
daily requests
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7401,7 +7405,7 @@
Remove API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7409,7 +7413,7 @@
Do you really want to delete the API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7569,7 +7573,7 @@
Early Access
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf
index d4d2a5dda..e39043a9d 100644
--- a/apps/client/src/locales/messages.tr.xlf
+++ b/apps/client/src/locales/messages.tr.xlf
@@ -272,7 +272,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -945,6 +945,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -1759,7 +1763,7 @@
Etiketler
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1923,7 +1927,7 @@
Platformlar
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -4951,7 +4955,7 @@
Geçerli tarih
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -7279,7 +7283,7 @@
API anahtarını ayarla
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7385,7 +7389,7 @@
ın
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7393,7 +7397,7 @@
günlük istekler
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7401,7 +7405,7 @@
API anahtarını kaldır
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7409,7 +7413,7 @@
API anahtarını silmek istediğinize emin misiniz?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7569,7 +7573,7 @@
Erken Erişim
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf
index 03af83d36..d8d274f1e 100644
--- a/apps/client/src/locales/messages.uk.xlf
+++ b/apps/client/src/locales/messages.uk.xlf
@@ -653,7 +653,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -1073,6 +1073,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -2183,7 +2187,7 @@
Дійсне до
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -2195,7 +2199,7 @@
з
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -2203,7 +2207,7 @@
щоденних запитів
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -2211,7 +2215,7 @@
Вилучити ключ API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -2219,7 +2223,7 @@
Встановити ключ API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -2227,7 +2231,7 @@
Платформи
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -2235,7 +2239,7 @@
Теги
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -2251,7 +2255,7 @@
Ви дійсно хочете видалити ключ API?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7569,7 +7573,7 @@
Ранній доступ
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf
index 4c481d0cc..0593a1f06 100644
--- a/apps/client/src/locales/messages.xlf
+++ b/apps/client/src/locales/messages.xlf
@@ -267,7 +267,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -957,6 +957,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -1937,14 +1941,14 @@
Platforms
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
Tags
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -5605,7 +5609,7 @@
Valid until
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -6619,7 +6623,7 @@
Set API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -6721,14 +6725,14 @@
of
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
Do you really want to delete the API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -6742,14 +6746,14 @@
Remove API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
daily requests
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -6875,7 +6879,7 @@
Early Access
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf
index 06d906dc7..a008b6fa7 100644
--- a/apps/client/src/locales/messages.zh.xlf
+++ b/apps/client/src/locales/messages.zh.xlf
@@ -273,7 +273,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 77
+ 80
apps/client/src/app/components/header/header.component.ts
@@ -994,6 +994,10 @@
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-settings/admin-settings.component.html
+ 8
+
apps/client/src/app/components/admin-tag/admin-tag.component.html
30
@@ -2028,7 +2032,7 @@
平台
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 107
+ 111
@@ -2036,7 +2040,7 @@
标签
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 113
+ 117
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -6128,7 +6132,7 @@
有效期至
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 36
+ 34
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -7280,7 +7284,7 @@
设置 API 密钥
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 83
+ 87
@@ -7386,7 +7390,7 @@
的
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 52
+ 44
@@ -7394,7 +7398,7 @@
每日请求
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 54
+ 46
@@ -7402,7 +7406,7 @@
移除 API 密钥
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 71
+ 76
@@ -7410,7 +7414,7 @@
您确定要删除此 API 密钥吗?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 96
+ 103
@@ -7570,7 +7574,7 @@
抢先体验
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 29
+ 27
From 365318e6e068cb2fdc782f733f12ba3f9f5bab86 Mon Sep 17 00:00:00 2001
From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com>
Date: Mon, 12 May 2025 13:40:33 +0700
Subject: [PATCH 20/40] Feature/improve localization (#4709)
* Update translations
* Update changelog
---------
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
---
CHANGELOG.md | 1 +
.../components/header/header.component.html | 2 +-
apps/client/src/locales/messages.ca.xlf | 8 +++
apps/client/src/locales/messages.de.xlf | 8 +++
apps/client/src/locales/messages.es.xlf | 8 +++
apps/client/src/locales/messages.fr.xlf | 8 +++
apps/client/src/locales/messages.it.xlf | 8 +++
apps/client/src/locales/messages.nl.xlf | 8 +++
apps/client/src/locales/messages.pl.xlf | 8 +++
apps/client/src/locales/messages.pt.xlf | 8 +++
apps/client/src/locales/messages.tr.xlf | 8 +++
apps/client/src/locales/messages.uk.xlf | 8 +++
apps/client/src/locales/messages.xlf | 7 ++
apps/client/src/locales/messages.zh.xlf | 64 +++++++++++--------
14 files changed, 125 insertions(+), 29 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cc3cefd97..408ef9e1f 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
- Renamed `Order` to `activities` in the `User` database schema
- Improved the language localization for Catalan (`ca`)
- Improved the language localization for Chinese (`zh`)
+- Improved the language localization for German (`de`)
- Improved the language localization for Italian (`it`)
- Upgraded `nestjs` from version `10.4.15` to `11.0.12`
- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.1`
diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html
index 6cf0ca305..b14d142f4 100644
--- a/apps/client/src/app/components/header/header.component.html
+++ b/apps/client/src/app/components/header/header.component.html
@@ -312,7 +312,7 @@
>About Ghostfolio
-
+
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index b2f176212..78a341ad7 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -7989,6 +7989,14 @@
122
+
+ Log out
+ Log out
+
+ apps/client/src/app/components/header/header.component.html
+ 315
+
+