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
Countries
} 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 (isGhostfolioDataProvider(element)) { + + Ghostfolio Premium + -
    - Early Access - Ghostfolio Premium - - @if (isGhostfolioApiKeyValid === false) { - Early Access - } - - @if (isGhostfolioApiKeyValid === true) { -
    - - Valid until - {{ - ghostfolioApiStatus?.subscription?.expiresAt - | date: defaultDateFormat - }} -
    - } -
    -
    -
    -
    + } + @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 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index ba7993a92..c73acd8e9 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -7989,6 +7989,14 @@ 122
    + + Log out + Ausloggen + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 241d5c6e6..de9f07c8d 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -7990,6 +7990,14 @@ 122
    + + Log out + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 0ca4aefdf..5077a4010 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -7989,6 +7989,14 @@ 122
    + + Log out + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index cc28bb0e1..57a3b7162 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -7990,6 +7990,14 @@ 122
    + + Log out + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 5e7d4240f..d8de415d5 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -7989,6 +7989,14 @@ 122
    + + Log out + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index ab0fb8d48..c62b42f69 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -7989,6 +7989,14 @@ 122
    + + Log out + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 25882d131..535aa5acf 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -7989,6 +7989,14 @@ 122
    + + Log out + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index e39043a9d..400bed697 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -7989,6 +7989,14 @@ 122
    + + Log out + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index d8d274f1e..56b5ba426 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -7989,6 +7989,14 @@ 122
    + + Log out + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 0593a1f06..70458fffd 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -7226,6 +7226,13 @@ 122
    + + Log out + + apps/client/src/app/components/header/header.component.html + 315 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index a008b6fa7..12cbd3ed0 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -207,7 +207,7 @@ license - 许可 + 许可证 snake-case apps/client/src/app/app.component.ts @@ -701,7 +701,7 @@ License - 许可 + 许可证 apps/client/src/app/app.component.html 89 @@ -1265,7 +1265,7 @@ Attempts - 尝试 + 尝试次数 apps/client/src/app/components/admin-jobs/admin-jobs.html 83 @@ -1281,7 +1281,7 @@ Finished - 完成的 + 完成 apps/client/src/app/components/admin-jobs/admin-jobs.html 101 @@ -1289,7 +1289,7 @@ Status - 状况 + 状态 apps/client/src/app/components/admin-jobs/admin-jobs.html 110 @@ -2445,7 +2445,7 @@ Summary - 概括 + 汇总 apps/client/src/app/components/home-summary/home-summary.html 2 @@ -2553,7 +2553,7 @@ Buy - + 买入 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 31 @@ -2561,7 +2561,7 @@ Sell - + 卖出 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 43 @@ -3361,7 +3361,7 @@ License - 许可 + 许可证 apps/client/src/app/pages/about/about-page.component.ts 55 @@ -3733,7 +3733,7 @@ Holdings - 控股 + 持仓 apps/client/src/app/pages/home/home-page-routing.module.ts 24 @@ -3753,7 +3753,7 @@ Summary - 概括 + 汇总 apps/client/src/app/pages/home/home-page-routing.module.ts 34 @@ -4333,7 +4333,7 @@ Import Activities - 导入活动 + 导入活动记录 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 47 @@ -4373,7 +4373,7 @@ Select Holding - 选择控股 + 选择持仓 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 20 @@ -4389,7 +4389,7 @@ Holding - 保持 + 持仓 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 32 @@ -4781,7 +4781,7 @@ Holdings - 控股 + 持仓 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html 79 @@ -5485,7 +5485,7 @@ Import Activities - 进口活动 + 导入活动记录 libs/ui/src/lib/activities-table/activities-table.component.html 9 @@ -5509,7 +5509,7 @@ Export Activities - 出口活动 + 导出活动记录 libs/ui/src/lib/activities-table/activities-table.component.html 41 @@ -5913,7 +5913,7 @@ Buy - + 买入 libs/ui/src/lib/i18n.ts 35 @@ -5929,7 +5929,7 @@ Valuable - 有价值的 + 贵重物品 libs/ui/src/lib/i18n.ts 39 @@ -5937,7 +5937,7 @@ Liability - 责任 + 负债 libs/ui/src/lib/i18n.ts 40 @@ -5945,7 +5945,7 @@ Sell - + 卖出 libs/ui/src/lib/i18n.ts 41 @@ -5969,7 +5969,7 @@ Equity - 公平 + 股权 libs/ui/src/lib/i18n.ts 46 @@ -5977,7 +5977,7 @@ Fixed Income - 固定收入 + 固定收益 libs/ui/src/lib/i18n.ts 47 @@ -5993,7 +5993,7 @@ Bond - 纽带 + 债券 libs/ui/src/lib/i18n.ts 52 @@ -6161,7 +6161,7 @@ If a translation is missing, kindly support us in extending it here. - 如果翻译缺失,请支持我们进行扩展这里 + 如果翻译缺失,欢迎在这里进行扩展。 apps/client/src/app/components/user-account-settings/user-account-settings.html 58 @@ -6213,7 +6213,7 @@ Permission - 允许 + 权限 apps/client/src/app/components/access-table/access-table.component.html 18 @@ -6365,7 +6365,7 @@ View - 看法 + 查看 apps/client/src/app/components/access-table/access-table.component.html 23 @@ -6529,7 +6529,7 @@ Execute Job - 执行任务 + 执行作业 apps/client/src/app/components/admin-jobs/admin-jobs.html 176 @@ -7990,6 +7990,14 @@ 122 + + Log out + 登出 + + apps/client/src/app/components/header/header.component.html + 315 + + From a8937fbf04e9bc2620d27c79a6bc8bf94da5d63f Mon Sep 17 00:00:00 2001 From: Jeffrey Bouman <17855600+JeffreyBouman@users.noreply.github.com> Date: Tue, 13 May 2025 19:49:46 +0200 Subject: [PATCH 21/40] Feature/improve language localization for NL 20250512 (#4714) * Improve language localization for NL * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.nl.xlf | 556 ++++++++++++------------ 2 files changed, 279 insertions(+), 278 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 408ef9e1f..4a60ad6fa 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 Dutch (`nl`) - 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` diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index d8de415d5..9eb4bef14 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -403,7 +403,7 @@ Asset Profiles - Asset Profiel + Activa Profiel libs/ui/src/lib/assistant/assistant.html 67 @@ -411,7 +411,7 @@ Historical Market Data - Historische marktgegevens + Historische marktgegevens apps/client/src/app/components/admin-jobs/admin-jobs.html 37 @@ -783,7 +783,7 @@ Last Request - Laatste verzoek + Laatste verzoek apps/client/src/app/components/admin-users/admin-users.html 202 @@ -1271,7 +1271,7 @@ Please set the amount of your emergency fund. - Voer het bedrag van je noodfonds in: + Voer het bedrag van je noodfonds in: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts 64 @@ -1619,7 +1619,7 @@ Please enter your coupon code. - Voer je couponcode in: + Voer je couponcode in: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 201 @@ -1759,7 +1759,7 @@ Sign in with fingerprint - Aanmelden met vingerafdruk + Aanmelden met vingerafdruk apps/client/src/app/components/user-account-settings/user-account-settings.html 219 @@ -2531,7 +2531,7 @@ Change from All Time High - Verandering van All Time High + Verandering van Recordhoogte libs/ui/src/lib/benchmark/benchmark.component.html 96 @@ -2827,7 +2827,7 @@ Hello, has shared a Portfolio with you! - Hallo, heeft een portefeuille met je gedeeld! + Hallo, heeft een portefeuille met je gedeeld! apps/client/src/app/pages/public/public-page.html 4 @@ -3447,7 +3447,7 @@ Protection for sensitive information like absolute performances and quantity values - Bescherming voor gevoelige informatie zoals absoluut rendement en hoeveelheden + Bescherming voor gevoelige informatie zoals absoluut rendement en hoeveelheden apps/client/src/app/components/user-account-settings/user-account-settings.html 184 @@ -3455,7 +3455,7 @@ Distraction-free experience for turbulent times - Afleidingsvrije ervaring voor roerige tijden + Afleidingsvrije ervaring voor roerige tijden apps/client/src/app/components/user-account-settings/user-account-settings.html 202 @@ -3463,7 +3463,7 @@ Sneak peek at upcoming functionality - Voorproefje van nieuwe functionaliteit + Voorproefje van nieuwe functionaliteit apps/client/src/app/components/user-account-settings/user-account-settings.html 236 @@ -3855,7 +3855,7 @@ Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - Ons officiële Ghostfolio Premium cloud-aanbod is de eenvoudigste manier om te beginnen. Vanwege de tijd die het bespaart, zal dit voor de meeste mensen de beste optie zijn. De inkomsten worden gebruikt om de hostinginfrastructuur te dekken en de voortdurende ontwikkeling van Ghostfolio te financieren. + Ons officiële Ghostfolio Premium cloud-aanbod is de eenvoudigste manier om te beginnen. Vanwege de tijd die het bespaart, zal dit voor de meeste mensen de beste optie zijn. De inkomsten worden gebruikt om de hostinginfrastructuur te dekken en de voortdurende ontwikkeling van Ghostfolio te financieren. apps/client/src/app/pages/pricing/pricing-page.html 6 @@ -3863,7 +3863,7 @@ Impersonate User - Gebruiker nadoen + Gebruiker immiteren apps/client/src/app/components/admin-users/admin-users.html 239 @@ -3879,7 +3879,7 @@ Do you really want to delete these activities? - Wil je echt al je activiteiten verwijderen? + Weet je zeker dat je alle activiteiten wilt verwijderen? libs/ui/src/lib/activities-table/activities-table.component.ts 219 @@ -3979,7 +3979,7 @@ Add Platform - Platform toevoegen + Platform Toevoegen apps/client/src/app/components/admin-platform/admin-platform.component.html 11 @@ -4255,7 +4255,7 @@ Dark Mode - Dark Mode + Donker Thema apps/client/src/app/pages/features/features-page.html 233 @@ -5111,7 +5111,7 @@ Are you ready? - Ben je er klaar voor? + Ben jij er klaar voor? apps/client/src/app/pages/landing/landing-page.html 431 @@ -5119,7 +5119,7 @@ Live Demo - Live Demo + Live Demo apps/client/src/app/pages/landing/landing-page.html 49 @@ -5632,7 +5632,7 @@ Open Source Alternative to - Open Source alternatief voor + Open Source alternatief voor apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 42 @@ -5672,7 +5672,7 @@ Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. + Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 43 @@ -5692,7 +5692,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. - Houd er rekening mee dat de verstrekte informatie gebaseerd is op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons nauwkeurige gegevens te onderhouden over GitHub. + Houd er rekening mee dat de verstrekte informatie in deze Ghostfolio vs is gebaseerd op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons de gegevens nauwkeurig te houden op GitHub. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 311 @@ -5768,7 +5768,7 @@ Choose or drop a file here - Choose or drop a file here + Kies of sleep bestand hier apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 84 @@ -5776,7 +5776,7 @@ You are using the Live Demo. - You are using the Live Demo. + U maakt gebruik van een Live Demo. apps/client/src/app/app.component.html 12 @@ -5784,7 +5784,7 @@ One-time fee, annual account fees - One-time fee, annual account fees + Eenmalige kosten, jaarlijkse account kosten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 33 @@ -5792,7 +5792,7 @@ Distribution of corporate earnings - Distribution of corporate earnings + Distribute van bedrijfsopbrengsten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 41 @@ -5800,7 +5800,7 @@ Fee - Fee + Kosten libs/ui/src/lib/i18n.ts 37 @@ -5808,7 +5808,7 @@ Interest - Interest + Rente apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 307 @@ -5816,7 +5816,7 @@ Revenue for lending out money - Revenue for lending out money + Opbrengsten voor het uitlenen van geld apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 49 @@ -5824,7 +5824,7 @@ Add Tag - Add Tag + Label Toevoegen apps/client/src/app/components/admin-tag/admin-tag.component.html 11 @@ -5832,7 +5832,7 @@ Do you really want to delete this tag? - Do you really want to delete this tag? + Weet u zetker dat u dit label wilt verwijderen? apps/client/src/app/components/admin-tag/admin-tag.component.ts 85 @@ -5840,7 +5840,7 @@ Update tag - Update tag + Label bijwerken apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 8 @@ -5848,7 +5848,7 @@ Add tag - Add tag + Voeg label toe apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 10 @@ -5856,7 +5856,7 @@ Currency Cluster Risks - Currency Cluster Risks + Valuta Cluster Risico’s apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 93 @@ -5864,7 +5864,7 @@ Account Cluster Risks - Account Cluster Risks + Account Cluster Risco’s apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 141 @@ -5884,7 +5884,7 @@ Benchmark - Benchmark + Maatstaf apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 346 @@ -5892,7 +5892,7 @@ Version - Version + Versie apps/client/src/app/components/admin-overview/admin-overview.html 7 @@ -5900,7 +5900,7 @@ Settings - Settings + Instellingen apps/client/src/app/components/user-account-settings/user-account-settings.html 2 @@ -5908,7 +5908,7 @@ From - From + Van apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 11 @@ -5916,7 +5916,7 @@ To - To + Naar apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 32 @@ -5924,7 +5924,7 @@ Transfer - Transfer + Overdracht apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 72 @@ -5932,7 +5932,7 @@ Membership - Membership + Lidmaatschap apps/client/src/app/pages/user-account/user-account-page-routing.module.ts 23 @@ -5944,7 +5944,7 @@ Access - Access + Toegang apps/client/src/app/pages/user-account/user-account-page-routing.module.ts 28 @@ -5956,7 +5956,7 @@ Find holding... - Find holding... + Vind bezittingen... libs/ui/src/lib/assistant/assistant.component.ts 143 @@ -5964,7 +5964,7 @@ No entries... - No entries... + Geen vermeldingen... libs/ui/src/lib/assistant/assistant.html 62 @@ -5976,7 +5976,7 @@ Asset Profile - Asset Profile + Bezittingen Profiel apps/client/src/app/components/admin-jobs/admin-jobs.html 35 @@ -5984,7 +5984,7 @@ Do you really want to delete this asset profile? - Do you really want to delete this asset profile? + Weet u zeker dat u dit bezittingen profiel wilt verwijderen? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts 37 @@ -5992,7 +5992,7 @@ Search - Search + Zoeken apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 16 @@ -6000,7 +6000,7 @@ Add Manually - Add Manually + Voeg Handmatig Toe apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 19 @@ -6008,7 +6008,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 een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden. + Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies van verschillende platformen bij te houden. apps/client/src/app/pages/i18n/i18n-page.html 4 @@ -6016,7 +6016,7 @@ Last All Time High - Last All Time High + Laatste Recordhoogte libs/ui/src/lib/benchmark/benchmark.component.html 74 @@ -6024,7 +6024,7 @@ User - User + Gebruiker apps/client/src/app/components/admin-users/admin-users.html 29 @@ -6032,7 +6032,7 @@ Ghostfolio vs comparison table - Ghostfolio vs comparison table + Ghostfolio vs vergelijkingstabel apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 54 @@ -6040,7 +6040,7 @@ Open Source Wealth Management Software - Open Source Wealth Management Software + Open Source Vermogensbeheer Software apps/client/src/app/pages/i18n/i18n-page.html 14 @@ -6048,7 +6048,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 + app, asset, cryptocurrency, dashboard, etf, financiën, management, performance, portfolio, software, aandeel, handel, vermogen, web3 apps/client/src/app/pages/i18n/i18n-page.html 9 @@ -6056,7 +6056,7 @@ Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. + Oeps, geldoverdracht is mislukt. apps/client/src/app/pages/accounts/accounts-page.component.ts 318 @@ -6064,7 +6064,7 @@ Extreme Fear - Extreme Fear + Extreme Angst libs/ui/src/lib/i18n.ts 100 @@ -6072,7 +6072,7 @@ Extreme Greed - Extreme Greed + Extreme Hebzucht libs/ui/src/lib/i18n.ts 101 @@ -6080,7 +6080,7 @@ Neutral - Neutral + Neutraal libs/ui/src/lib/i18n.ts 104 @@ -6088,7 +6088,7 @@ Oops! Could not parse historical data. - Oops! Could not parse historical data. + Oeps! Ophalen van historische data is mislukt. libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts 262 @@ -6096,7 +6096,7 @@ Do you really want to delete this system message? - Do you really want to delete this system message? + Wilt u dit systeembericht echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts 147 @@ -6104,7 +6104,7 @@ 50-Day Trend - 50-Day Trend + 50-Daagse Trend libs/ui/src/lib/benchmark/benchmark.component.html 16 @@ -6112,7 +6112,7 @@ 200-Day Trend - 200-Day Trend + 200-Daagse Trend libs/ui/src/lib/benchmark/benchmark.component.html 45 @@ -6120,7 +6120,7 @@ Cash Balances - Cash Balances + Contant Saldo apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html 124 @@ -6128,7 +6128,7 @@ Starting from - Starting from + Begin vanaf apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 289 @@ -6140,7 +6140,7 @@ year - year + jaar apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 290 @@ -6152,7 +6152,7 @@ Do you really want to delete this account balance? - Do you really want to delete this account balance? + Wilt u dit rekeningsaldo echt verwijderen? libs/ui/src/lib/account-balances/account-balances.component.ts 109 @@ -6160,7 +6160,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. + Als er een vertaling ontbreekt, kunt u ons helpen deze here uit te breiden. apps/client/src/app/components/user-account-settings/user-account-settings.html 58 @@ -6168,7 +6168,7 @@ The current market price is - The current market price is + De huidige markt waarde is apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 536 @@ -6176,7 +6176,7 @@ Test - Test + Test apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 473 @@ -6184,7 +6184,7 @@ Date Range - Date Range + Datumbereik libs/ui/src/lib/assistant/assistant.html 95 @@ -6192,7 +6192,7 @@ Permission - Permission + Toestemming apps/client/src/app/components/access-table/access-table.component.html 18 @@ -6204,7 +6204,7 @@ Restricted view - Restricted view + Beperkte blik apps/client/src/app/components/access-table/access-table.component.html 26 @@ -6216,7 +6216,7 @@ Oops! Could not grant access. - Oops! Could not grant access. + Oeps! Kan geen toegang verlenen. apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts 91 @@ -6224,7 +6224,7 @@ Private - Private + Prive apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 24 @@ -6232,7 +6232,7 @@ Job Queue - Job Queue + Opdracht Wachtrij apps/client/src/app/pages/admin/admin-page-routing.module.ts 25 @@ -6244,7 +6244,7 @@ Market data is delayed for - Market data is delayed for + Markt data is vertraagd voor apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts 87 @@ -6252,7 +6252,7 @@ Investment - Investment + Investering apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts 56 @@ -6268,7 +6268,7 @@ Absolute Asset Performance - Absolute Asset Performance + Absolute Activaprestaties apps/client/src/app/pages/portfolio/analysis/analysis-page.html 102 @@ -6276,7 +6276,7 @@ Asset Performance - Asset Performance + Activaprestaties apps/client/src/app/pages/portfolio/analysis/analysis-page.html 123 @@ -6284,7 +6284,7 @@ Absolute Currency Performance - Absolute Currency Performance + Absolute Valutaprestaties apps/client/src/app/pages/portfolio/analysis/analysis-page.html 145 @@ -6292,7 +6292,7 @@ Currency Performance - Currency Performance + Valutaprestaties apps/client/src/app/pages/portfolio/analysis/analysis-page.html 169 @@ -6300,7 +6300,7 @@ Absolute Net Performance - Absolute Net Performance + Absolute Nettoprestatie apps/client/src/app/pages/portfolio/analysis/analysis-page.html 192 @@ -6308,7 +6308,7 @@ Net Performance - Net Performance + Nettoprestatie apps/client/src/app/pages/portfolio/analysis/analysis-page.html 211 @@ -6316,7 +6316,7 @@ Week to date - Week to date + Week tot nu toe libs/ui/src/lib/assistant/assistant.component.ts 222 @@ -6332,7 +6332,7 @@ Month to date - Month to date + Maand tot nu toe libs/ui/src/lib/assistant/assistant.component.ts 226 @@ -6348,7 +6348,7 @@ Year to date - Year to date + Jaar tot nu toe libs/ui/src/lib/assistant/assistant.component.ts 230 @@ -6368,7 +6368,7 @@ Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + Oeps! Een gegevensaanbieder ondervindt problemen. apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html 8 @@ -6376,7 +6376,7 @@ If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Als u vandaag met pensioen zou gaan, kunt u per jaar or per maand opnemen, gebaseerd op uw totale vermogen van en een opnamepercentage van 4%. apps/client/src/app/pages/portfolio/fire/fire-page.html 67 @@ -6384,7 +6384,7 @@ Reset Filters - Reset Filters + Filters Herstellen libs/ui/src/lib/assistant/assistant.html 187 @@ -6392,7 +6392,7 @@ year - year + jaar libs/ui/src/lib/assistant/assistant.component.ts 234 @@ -6400,7 +6400,7 @@ years - years + jaren libs/ui/src/lib/assistant/assistant.component.ts 256 @@ -6408,7 +6408,7 @@ Apply Filters - Apply Filters + Filters Toepassen libs/ui/src/lib/assistant/assistant.html 197 @@ -6416,7 +6416,7 @@ Data Gathering - Data Gathering + Data Verzamelen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 541 @@ -6428,7 +6428,7 @@ General - General + Algemeen apps/client/src/app/pages/faq/faq-page.component.ts 37 @@ -6436,7 +6436,7 @@ Cloud - Cloud + Cloud apps/client/src/app/pages/faq/faq-page.component.ts 42 @@ -6448,7 +6448,7 @@ Self-Hosting - Self-Hosting + Zelf Hosten apps/client/src/app/pages/faq/faq-page.component.ts 48 @@ -6460,7 +6460,7 @@ self-hosting - self-hosting + zelf hosten apps/client/src/app/pages/faq/faq-page.component.ts 49 @@ -6468,7 +6468,7 @@ FAQ - FAQ + FAQ apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts 13 @@ -6480,7 +6480,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. + Oeps! Het lijkt er op dat u te veel verzoeken indient. Doe het iets rustiger aan alstublieft. apps/client/src/app/core/http-response.interceptor.ts 103 @@ -6488,7 +6488,7 @@ My Account - My Account + Mijn Account apps/client/src/app/pages/i18n/i18n-page.html 13 @@ -6496,7 +6496,7 @@ Active - Active + Actief apps/client/src/app/components/home-holdings/home-holdings.component.ts 36 @@ -6504,7 +6504,7 @@ Closed - Closed + Gesloten apps/client/src/app/components/home-holdings/home-holdings.component.ts 37 @@ -6512,7 +6512,7 @@ Activity - Activity + Activiteit apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 207 @@ -6520,7 +6520,7 @@ Dividend Yield - Dividend Yield + Dividendrendement apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 175 @@ -6528,7 +6528,7 @@ Execute Job - Execute Job + Opdracht Uitvoeren apps/client/src/app/components/admin-jobs/admin-jobs.html 176 @@ -6536,7 +6536,7 @@ Priority - Priority + Prioriteit apps/client/src/app/components/admin-jobs/admin-jobs.html 64 @@ -6544,7 +6544,7 @@ This action is not allowed. - This action is not allowed. + Deze actie is niet toegestaan. apps/client/src/app/core/http-response.interceptor.ts 64 @@ -6552,7 +6552,7 @@ Liquidity - Liquidity + Liquiditeit libs/ui/src/lib/i18n.ts 48 @@ -6560,7 +6560,7 @@ {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activiteit} other {activiteiten}} apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 14 @@ -6568,7 +6568,7 @@ Buy and sell - Buy and sell + Aan- en Verkoop libs/ui/src/lib/i18n.ts 8 @@ -6576,7 +6576,7 @@ Delete Activities - Delete Activities + Verwijder Activiteiten libs/ui/src/lib/activities-table/activities-table.component.html 67 @@ -6584,7 +6584,7 @@ Internationalization - Internationalization + Internationalizering apps/client/src/app/app-routing.module.ts 88 @@ -6592,7 +6592,7 @@ Do you really want to close your Ghostfolio account? - Do you really want to close your Ghostfolio account? + Wilt u uw Ghostfolio account echt sluiten? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts 174 @@ -6600,7 +6600,7 @@ Danger Zone - Danger Zone + Gevarenzone apps/client/src/app/components/user-account-settings/user-account-settings.html 272 @@ -6608,7 +6608,7 @@ Close Account - Close Account + Account Sluiten apps/client/src/app/components/user-account-settings/user-account-settings.html 307 @@ -6616,7 +6616,7 @@ By ETF Holding - By ETF Holding + Per Aangehouden ETF apps/client/src/app/pages/portfolio/allocations/allocations-page.html 333 @@ -6624,7 +6624,7 @@ Approximation based on the top holdings of each ETF - Approximation based on the top holdings of each ETF + Benadering op basis van de grootste belegingen binnen iedere ETF apps/client/src/app/pages/portfolio/allocations/allocations-page.html 340 @@ -6632,7 +6632,7 @@ Join now or check out the example account - Join now or check out the example account + Word nu lid of bekijk het voorbeeldaccount apps/client/src/app/pages/landing/landing-page.html 434 @@ -6640,7 +6640,7 @@ Oops! There was an error setting up biometric authentication. - Oops! There was an error setting up biometric authentication. + Oeps! Er is een fout opgetreden met het instellen van de biometrische authenticatie. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts 302 @@ -6648,7 +6648,7 @@ Show more - Show more + Laat meer zien libs/ui/src/lib/top-holdings/top-holdings.component.html 174 @@ -6656,7 +6656,7 @@ Benchmarks - Benchmarks + Benchmarks apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 81 @@ -6664,7 +6664,7 @@ Delete Profiles - Delete Profiles + Verwijder Profielen apps/client/src/app/components/admin-market-data/admin-market-data.html 243 @@ -6672,7 +6672,7 @@ Do you really want to delete these profiles? - Do you really want to delete these profiles? + Wilt u deze profielen echt verwijderen? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts 68 @@ -6680,7 +6680,7 @@ Oops! Could not delete profiles. - Oops! Could not delete profiles. + Oeps! Verwijderen van de profielen is mislukt. apps/client/src/app/components/admin-market-data/admin-market-data.service.ts 56 @@ -6688,7 +6688,7 @@ Table - Table + Tabel apps/client/src/app/components/home-holdings/home-holdings.html 16 @@ -6696,7 +6696,7 @@ Chart - Chart + Grafiek apps/client/src/app/components/home-holdings/home-holdings.html 19 @@ -6704,7 +6704,7 @@ Would you like to refine your personal investment strategy? - Would you like to refine your personal investment strategy? + Wilt u uw persoonlijke belegginngsstrategie verfijnen? apps/client/src/app/pages/public/public-page.html 211 @@ -6712,7 +6712,7 @@ Alternative - Alternative + Alternatief apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 81 @@ -6720,7 +6720,7 @@ App - App + App apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 82 @@ -6728,7 +6728,7 @@ Budgeting - Budgeting + Budgetteren apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 83 @@ -6736,7 +6736,7 @@ Community - Community + Gemeenschap apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 84 @@ -6744,7 +6744,7 @@ Family Office - Family Office + Familiekantoor apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 85 @@ -6752,7 +6752,7 @@ Investor - Investor + Investeerder apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 88 @@ -6760,7 +6760,7 @@ Open Source - Open Source + Open Source apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 89 @@ -6768,7 +6768,7 @@ Personal Finance - Personal Finance + Persoonlijke Financiën apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 91 @@ -6776,7 +6776,7 @@ Privacy - Privacy + Privacy apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 92 @@ -6784,7 +6784,7 @@ Software - Software + Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 94 @@ -6792,7 +6792,7 @@ Tool - Tool + Hulpmiddel apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 95 @@ -6800,7 +6800,7 @@ User Experience - User Experience + Gebruikers Ervaring apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 96 @@ -6808,7 +6808,7 @@ Wealth - Wealth + Vermogen apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 97 @@ -6816,7 +6816,7 @@ Wealth Management - Wealth Management + Vermogensbeheer apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 98 @@ -6824,7 +6824,7 @@ Australia - Australia + Australië libs/ui/src/lib/i18n.ts 74 @@ -6832,7 +6832,7 @@ Austria - Austria + Oostenrijk libs/ui/src/lib/i18n.ts 75 @@ -6840,7 +6840,7 @@ Belgium - Belgium + België libs/ui/src/lib/i18n.ts 76 @@ -6848,7 +6848,7 @@ Bulgaria - Bulgaria + Bulgarije libs/ui/src/lib/i18n.ts 78 @@ -6856,7 +6856,7 @@ Canada - Canada + Canada libs/ui/src/lib/i18n.ts 79 @@ -6864,7 +6864,7 @@ Czech Republic - Czech Republic + Tsjechische Republiek libs/ui/src/lib/i18n.ts 80 @@ -6872,7 +6872,7 @@ Finland - Finland + Finland libs/ui/src/lib/i18n.ts 81 @@ -6880,7 +6880,7 @@ France - France + Frankrijk libs/ui/src/lib/i18n.ts 82 @@ -6888,7 +6888,7 @@ Germany - Germany + Duitsland libs/ui/src/lib/i18n.ts 83 @@ -6896,7 +6896,7 @@ India - India + India libs/ui/src/lib/i18n.ts 84 @@ -6904,7 +6904,7 @@ Italy - Italy + Italië libs/ui/src/lib/i18n.ts 85 @@ -6912,7 +6912,7 @@ Netherlands - Netherlands + Nederland libs/ui/src/lib/i18n.ts 87 @@ -6920,7 +6920,7 @@ New Zealand - New Zealand + Nieuw-Zeeland libs/ui/src/lib/i18n.ts 88 @@ -6928,7 +6928,7 @@ Poland - Poland + Polen libs/ui/src/lib/i18n.ts 89 @@ -6936,7 +6936,7 @@ Romania - Romania + Roemenië libs/ui/src/lib/i18n.ts 90 @@ -6944,7 +6944,7 @@ South Africa - South Africa + Zuid-Afrika libs/ui/src/lib/i18n.ts 92 @@ -6952,7 +6952,7 @@ Thailand - Thailand + Thailand libs/ui/src/lib/i18n.ts 94 @@ -6960,7 +6960,7 @@ United States - United States + Verenigde Station libs/ui/src/lib/i18n.ts 97 @@ -6968,7 +6968,7 @@ Error - Error + Fout apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 527 @@ -6976,7 +6976,7 @@ Deactivate - Deactivate + Deactiveren apps/client/src/app/components/rule/rule.component.html 72 @@ -6984,7 +6984,7 @@ Activate - Activate + Activeren apps/client/src/app/components/rule/rule.component.html 74 @@ -6992,7 +6992,7 @@ Inactive - Inactive + Inactief apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 232 @@ -7000,7 +7000,7 @@ Cancel - Cancel + Annuleren libs/ui/src/lib/i18n.ts 9 @@ -7008,7 +7008,7 @@ Close - Close + Sluiten libs/ui/src/lib/i18n.ts 11 @@ -7016,7 +7016,7 @@ Yes - Yes + Ja libs/ui/src/lib/i18n.ts 32 @@ -7024,7 +7024,7 @@ Copy link to clipboard - Copy link to clipboard + Kopieer link naar klembord apps/client/src/app/components/access-table/access-table.component.html 70 @@ -7032,7 +7032,7 @@ Portfolio Snapshot - Portfolio Snapshot + Portfolio Momentopname apps/client/src/app/components/admin-jobs/admin-jobs.html 39 @@ -7040,7 +7040,7 @@ Change with currency effect Change - Change with currency effect Change + Verandering met valuta effect Verandering apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 50 @@ -7048,7 +7048,7 @@ Performance with currency effect Performance - Performance with currency effect Performance + Prestatie met valuta effect Prestatie apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 69 @@ -7056,7 +7056,7 @@ Threshold Min - Threshold Min + Drempelwaarde Min apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html 54 @@ -7064,7 +7064,7 @@ Threshold Max - Threshold Max + Drempelwaarde Max apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html 92 @@ -7072,7 +7072,7 @@ Close - Close + Sluiten apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html 129 @@ -7080,7 +7080,7 @@ Customize - Customize + Aanpassen apps/client/src/app/components/rule/rule.component.html 67 @@ -7088,7 +7088,7 @@ No auto-renewal. - No auto-renewal. + Geen automatische verlenging. apps/client/src/app/components/user-account-membership/user-account-membership.html 70 @@ -7096,7 +7096,7 @@ Today - Today + Vandaag apps/client/src/app/pages/public/public-page.html 24 @@ -7104,7 +7104,7 @@ This year - This year + Dit jaar apps/client/src/app/pages/public/public-page.html 42 @@ -7112,7 +7112,7 @@ From the beginning - From the beginning + Vanaf het begin apps/client/src/app/pages/public/public-page.html 60 @@ -7120,7 +7120,7 @@ Oops! Invalid currency. - Oops! Invalid currency. + Oeps! Ongeldige valuta. apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 49 @@ -7128,7 +7128,7 @@ This page has been archived. - This page has been archived. + Deze pagina is gearchiveerd. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 14 @@ -7136,7 +7136,7 @@ is Open Source Software - is Open Source Software + is Open Source Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 139 @@ -7144,7 +7144,7 @@ is not Open Source Software - is not Open Source Software + is geen Open Source Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 146 @@ -7152,7 +7152,7 @@ is Open Source Software - is Open Source Software + is Open Source Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 156 @@ -7160,7 +7160,7 @@ is not Open Source Software - is not Open Source Software + is geen Open Source Software apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 163 @@ -7168,7 +7168,7 @@ can be self-hosted - can be self-hosted + kan zelf gehost worden apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 178 @@ -7176,7 +7176,7 @@ cannot be self-hosted - cannot be self-hosted + kan niet zelf gehost worden apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 185 @@ -7184,7 +7184,7 @@ can be self-hosted - can be self-hosted + kan zelf gehost worden apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 195 @@ -7192,7 +7192,7 @@ cannot be self-hosted - cannot be self-hosted + kan niet zelf gehost worden apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 202 @@ -7200,7 +7200,7 @@ can be used anonymously - can be used anonymously + kan anoniem gebruikt worden apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 217 @@ -7208,7 +7208,7 @@ cannot be used anonymously - cannot be used anonymously + kan niet anoniem gebruik worden apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 224 @@ -7216,7 +7216,7 @@ can be used anonymously - can be used anonymously + kan anoniem gebruikt worden apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 234 @@ -7224,7 +7224,7 @@ cannot be used anonymously - cannot be used anonymously + kan niet anoniem gebruikt worden apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 241 @@ -7232,7 +7232,7 @@ offers a free plan - offers a free plan + biedt een gratis abonnement aan apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 256 @@ -7240,7 +7240,7 @@ does not offer a free plan - does not offer a free plan + biedt geen gratis abonnement aan apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 263 @@ -7248,7 +7248,7 @@ offers a free plan - offers a free plan + biedt een gratis abonnement aan apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 273 @@ -7256,7 +7256,7 @@ does not offer a free plan - does not offer a free plan + biedt geen gratis abonnement aan apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 280 @@ -7264,7 +7264,7 @@ Oops! Could not find any assets. - Oops! Could not find any assets. + Oeps! Kan geen activa vinden. libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html 40 @@ -7272,7 +7272,7 @@ Data Providers - Data Providers + Gegevensleveranciers apps/client/src/app/components/admin-settings/admin-settings.component.html 4 @@ -7280,7 +7280,7 @@ Set API key - Set API key + API-sleutel instellen apps/client/src/app/components/admin-settings/admin-settings.component.html 87 @@ -7288,7 +7288,7 @@ Get access to 80’000+ tickers from over 50 exchanges - Get access to 80’000+ tickers from over 50 exchanges + Krijg toegang tot meer dan 80.000 tickers van meer dan 50 beurzen libs/ui/src/lib/i18n.ts 24 @@ -7296,7 +7296,7 @@ Ukraine - Ukraine + Oekraïne libs/ui/src/lib/i18n.ts 95 @@ -7304,7 +7304,7 @@ Join now - Join now + Word nu lid apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 110 @@ -7312,7 +7312,7 @@ Glossary - Glossary + Woordenlijst apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts 10 @@ -7324,7 +7324,7 @@ Guides - Guides + Gidsen apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts 10 @@ -7336,7 +7336,7 @@ guides - guides + gidsen snake-case apps/client/src/app/pages/resources/overview/resources-overview.component.ts @@ -7349,7 +7349,7 @@ glossary - glossary + woordenlijst snake-case apps/client/src/app/pages/resources/overview/resources-overview.component.ts @@ -7362,7 +7362,7 @@ Threshold range - Threshold range + Drempebereik apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html 9 @@ -7370,7 +7370,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 gebruikt statische analyse om potentiële problemen en risico’s in uw portefeuille te ontdekken. Pas de onderstaande regels aan en stel aangepaste drempelwaarden in die aansluiten bij uw persoonlijke beleggingsstrategie. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 5 @@ -7378,7 +7378,7 @@ Economic Market Cluster Risks - Economic Market Cluster Risks + Risico’s van Economische Marktclusters apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 165 @@ -7386,7 +7386,7 @@ of - of + van apps/client/src/app/components/admin-settings/admin-settings.component.html 44 @@ -7394,7 +7394,7 @@ daily requests - daily requests + dagelijkse verzoeken apps/client/src/app/components/admin-settings/admin-settings.component.html 46 @@ -7402,7 +7402,7 @@ Remove API key - Remove API key + Verwijder API-sleutel apps/client/src/app/components/admin-settings/admin-settings.component.html 76 @@ -7410,7 +7410,7 @@ Do you really want to delete the API key? - Do you really want to delete the API key? + Wilt u de API-sleutel echt verwijderen? apps/client/src/app/components/admin-settings/admin-settings.component.ts 103 @@ -7418,7 +7418,7 @@ Please enter your Ghostfolio API key: - Please enter your Ghostfolio API key: + Voer uw Ghostfolio API-sleutel in: apps/client/src/app/pages/api/api-page.component.ts 41 @@ -7426,7 +7426,7 @@ I have an API key - I have an API key + Ik heb een API-sleutel apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html 39 @@ -7434,7 +7434,7 @@ API Requests Today - API Requests Today + Aantal API-Verzoeken Vandaag apps/client/src/app/components/admin-users/admin-users.html 178 @@ -7442,7 +7442,7 @@ Could not generate an API key - Could not generate an API key + Er kon geen API-sleutel worden gegenereerd apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 127 @@ -7450,7 +7450,7 @@ Set this API key in your self-hosted environment: - Set this API key in your self-hosted environment: + Stel deze API-sleutel in uw zelf-gehoste omgeving in: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 142 @@ -7458,7 +7458,7 @@ Ghostfolio Premium Data Provider API Key - Ghostfolio Premium Data Provider API Key + Ghostfolio Premium Gegevensleverancier API-sleutel apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 145 @@ -7466,7 +7466,7 @@ Do you really want to generate a new API key? - Do you really want to generate a new API key? + Wilt u echt een nieuwe API-sleutel genereren? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 150 @@ -7474,7 +7474,7 @@ Tag - Tag + Label libs/ui/src/lib/assistant/assistant.html 157 @@ -7482,7 +7482,7 @@ API Key - API Key + API-sleutel libs/ui/src/lib/membership-card/membership-card.component.html 18 @@ -7490,7 +7490,7 @@ Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Genereer een Ghostfolio Premium Gegevensleverancier API-sleutel voor zelfgehoste omgevingen... libs/ui/src/lib/membership-card/membership-card.component.html 26 @@ -7498,7 +7498,7 @@ out of - out of + van apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 56 @@ -7506,7 +7506,7 @@ rules align with your portfolio. - rules align with your portfolio. + regels die aansluiten bij uw portefeuille. apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 58 @@ -7514,7 +7514,7 @@ Save - Save + Opslaan apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts 62 @@ -7522,7 +7522,7 @@ Asset Class Cluster Risks - Asset Class Cluster Risks + Activa Klasse Cluster Risico’s apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 117 @@ -7530,7 +7530,7 @@ Me - Me + Ik apps/client/src/app/components/user-account-access/user-account-access.component.ts 135 @@ -7538,7 +7538,7 @@ Received Access - Received Access + Toegang Verkregen apps/client/src/app/components/user-account-access/user-account-access.html 3 @@ -7546,7 +7546,7 @@ Please enter your Ghostfolio API key. - Please enter your Ghostfolio API key. + Voer uw Ghostfolio API-sleutel in. apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts 57 @@ -7554,7 +7554,7 @@ AI prompt has been copied to the clipboard - AI prompt has been copied to the clipboard + AI-prompt is naar het klembord gekopieerd apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts 173 @@ -7562,7 +7562,7 @@ Link has been copied to the clipboard - Link has been copied to the clipboard + Link is gekopieerd naar klemboord apps/client/src/app/components/access-table/access-table.component.ts 65 @@ -7570,7 +7570,7 @@ Early Access - Early Access + Vroege Toegang apps/client/src/app/components/admin-settings/admin-settings.component.html 27 @@ -7578,7 +7578,7 @@ Regional Market Cluster Risks - Regional Market Cluster Risks + Regionale Markt Clusterrisico’s apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html 189 @@ -7602,7 +7602,7 @@ Default Market Price - Default Market Price + Standaard Marktprijs apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 386 @@ -7610,7 +7610,7 @@ Mode - Mode + Modus apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 423 @@ -7626,7 +7626,7 @@ HTTP Request Headers - HTTP Request Headers + HTTP Verzoek Headers apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 399 @@ -7634,7 +7634,7 @@ end of day - end of day + eind van de dag apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 138 @@ -7642,7 +7642,7 @@ real-time - real-time + real-time apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 142 @@ -7650,7 +7650,7 @@ Open Duck.ai - Open Duck.ai + Open Duck.ai apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts 174 @@ -7658,7 +7658,7 @@ Create - Create + Nieuw libs/ui/src/lib/tags-selector/tags-selector.component.html 50 @@ -7666,7 +7666,7 @@ Market Data - Market Data + Markt Gegevens apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 374 @@ -7674,7 +7674,7 @@ Change - Change + Aanpassen libs/ui/src/lib/treemap-chart/treemap-chart.component.ts 365 @@ -7682,7 +7682,7 @@ Performance - Performance + Prestatie libs/ui/src/lib/treemap-chart/treemap-chart.component.ts 365 @@ -7694,7 +7694,7 @@ Copy portfolio data to clipboard for AI prompt - Copy portfolio data to clipboard for AI prompt + Kopieer portfolio gegevens naar klemboord voor AI-prompt apps/client/src/app/pages/portfolio/analysis/analysis-page.html 42 @@ -7702,7 +7702,7 @@ Copy AI prompt to clipboard for analysis - Copy AI prompt to clipboard for analysis + Kopieer AI-prompt naar klemboord voor analyse apps/client/src/app/pages/portfolio/analysis/analysis-page.html 67 @@ -7710,7 +7710,7 @@ Armenia - Armenia + Armenië libs/ui/src/lib/i18n.ts 73 @@ -7718,7 +7718,7 @@ British Virgin Islands - British Virgin Islands + Britse Maagdeneilanden libs/ui/src/lib/i18n.ts 77 @@ -7726,7 +7726,7 @@ Singapore - Singapore + Singapore libs/ui/src/lib/i18n.ts 91 @@ -7734,7 +7734,7 @@ Terms and Conditions - Terms and Conditions + Algemene Voorwaarden apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 15 @@ -7742,7 +7742,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. + Bewaar uw beveiligingstoken goed. Als u deze verliest, kunt u uw account niet meer herstellen. apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 18 @@ -7750,7 +7750,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 + Ik begrijp dat als ik mijn beveiligingstoken verlies, ik mijn account niet kan herstellen apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 28 @@ -7758,7 +7758,7 @@ Continue - Continue + Doorgaan apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 57 @@ -7766,7 +7766,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. + Hier is uw beveiligingstoken. Deze is slechts één keer zichtbaar, bewaar hem op een veilige plaats. apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 67 @@ -7774,7 +7774,7 @@ Security token - Security token + Beveiligingstoken apps/client/src/app/components/admin-users/admin-users.component.ts 163 @@ -7782,7 +7782,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? + Wilt u echt een nieuw beveiligingstoken voor deze gebruiker aanmaken? apps/client/src/app/components/admin-users/admin-users.component.ts 168 @@ -7790,7 +7790,7 @@ Generate Security Token - Generate Security Token + Beveiligingstoken Aanmaken apps/client/src/app/components/admin-users/admin-users.html 249 @@ -7798,7 +7798,7 @@ United Kingdom - United Kingdom + Verenigd Koninkrijk libs/ui/src/lib/i18n.ts 96 @@ -7806,7 +7806,7 @@ Terms of Service - Terms of Service + Servicevoorwaarden apps/client/src/app/app.component.html 112 @@ -7814,7 +7814,7 @@ terms-of-service - terms-of-service + servicevoorwaarden snake-case apps/client/src/app/app.component.ts @@ -7835,7 +7835,7 @@ Terms of Service - Terms of Service + Servicevoorwaarden apps/client/src/app/pages/about/about-page.component.ts 71 @@ -7847,7 +7847,7 @@ Terms of Service - Terms of Service + Servicevoorwaarden apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html 4 @@ -7855,7 +7855,7 @@ and I agree to the Terms of Service. - and I agree to the Terms of Service. + en ik ga akkoord met de Servicevoorwaarden. apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 34 @@ -7863,7 +7863,7 @@ () is already in use. - () is already in use. + () is al in gebruik. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 462 @@ -7871,7 +7871,7 @@ An error occurred while updating to (). - An error occurred while updating to (). + Er is een fout opgetreden tijdens het updaten naar (). apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 470 @@ -7879,7 +7879,7 @@ Apply - Apply + Toepassen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 138 @@ -7887,7 +7887,7 @@ with API access for - with API access for + met API toegang tot apps/client/src/app/pages/pricing/pricing-page.html 266 @@ -7895,7 +7895,7 @@ Gather Recent Historical Market Data - Gather Recent Historical Market Data + Verzamel Recente Marktgegevens apps/client/src/app/components/admin-market-data/admin-market-data.html 226 @@ -7903,7 +7903,7 @@ Gather All Historical Market Data - Gather All Historical Market Data + Verzamel Alle Marktgegevens apps/client/src/app/components/admin-market-data/admin-market-data.html 231 @@ -7911,7 +7911,7 @@ Gather Historical Market Data - Gather Historical Market Data + Verzamel Historische Marktgegevens apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 29 @@ -7919,7 +7919,7 @@ Data Gathering is off - Data Gathering is off + Gegevensverzameling is uitgeschakeld apps/client/src/app/components/admin-market-data/admin-market-data.html 38 @@ -7927,7 +7927,7 @@ Performance Calculation - Performance Calculation + Prestatieberekening apps/client/src/app/components/user-account-settings/user-account-settings.html 31 @@ -7943,7 +7943,7 @@ Add asset to watchlist - Add asset to watchlist + Voeg activa toe aan de volglijst apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html 7 @@ -7951,7 +7951,7 @@ Watchlist - Watchlist + Volglijst apps/client/src/app/components/home-watchlist/home-watchlist.html 4 @@ -7963,7 +7963,7 @@ Watchlist - Watchlist + Volglijst apps/client/src/app/pages/home/home-page-routing.module.ts 44 @@ -7975,7 +7975,7 @@ Get Early Access - Get Early Access + Krijg Vroegtijdige Toegang apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html 29 @@ -7983,7 +7983,7 @@ Do you really want to delete this item? - Do you really want to delete this item? + Wilt u dit item echt verwijderen? libs/ui/src/lib/benchmark/benchmark.component.ts 122 @@ -7991,7 +7991,7 @@ Log out - Log out + Uitloggen apps/client/src/app/components/header/header.component.html 315 From e97757631b034dc7a4bb3654287bc08c50f207aa Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 14 May 2025 22:52:11 +0200 Subject: [PATCH 22/40] Feature/add missing types of impersonationId in controllers (#4691) * Add missing types --- apps/api/src/app/account/account.controller.ts | 4 ++-- apps/api/src/app/order/order.controller.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index 8512d8409..1d8f9ab27 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -87,7 +87,7 @@ export class AccountController { @UseInterceptors(RedactValuesInResponseInterceptor) @UseInterceptors(TransformDataSourceInRequestInterceptor) public async getAllAccounts( - @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId, + @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Query('dataSource') filterByDataSource?: string, @Query('symbol') filterBySymbol?: string ): Promise { @@ -110,7 +110,7 @@ export class AccountController { @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseInterceptors(RedactValuesInResponseInterceptor) public async getAccountById( - @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId, + @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Param('id') id: string ): Promise { const impersonationUserId = diff --git a/apps/api/src/app/order/order.controller.ts b/apps/api/src/app/order/order.controller.ts index 907335aa0..2c4a58596 100644 --- a/apps/api/src/app/order/order.controller.ts +++ b/apps/api/src/app/order/order.controller.ts @@ -97,7 +97,7 @@ export class OrderController { @UseInterceptors(TransformDataSourceInRequestInterceptor) @UseInterceptors(TransformDataSourceInResponseInterceptor) public async getAllOrders( - @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId, + @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Query('accounts') filterByAccounts?: string, @Query('assetClasses') filterByAssetClasses?: string, @Query('dataSource') filterByDataSource?: string, @@ -150,7 +150,7 @@ export class OrderController { @UseInterceptors(RedactValuesInResponseInterceptor) @UseInterceptors(TransformDataSourceInResponseInterceptor) public async getOrderById( - @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId, + @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Param('id') id: string ): Promise { const impersonationUserId = From 895a6214c7c85e3a25adb9209c742b1f64d49c62 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 23:29:32 +0200 Subject: [PATCH 23/40] Feature/update locales (#4718) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.nl.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 9eb4bef14..1099d5235 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -6376,7 +6376,7 @@ If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - Als u vandaag met pensioen zou gaan, kunt u per jaar or per maand opnemen, gebaseerd op uw totale vermogen van en een opnamepercentage van 4%. + Als u vandaag met pensioen zou gaan, kunt u per jaar or per maand opnemen, gebaseerd op uw totale vermogen van en een opnamepercentage van 4%. apps/client/src/app/pages/portfolio/fire/fire-page.html 67 From 1697b7e1e00ce1f403e4de680a35ab2c7d66487f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 15 May 2025 16:56:05 +0200 Subject: [PATCH 24/40] Feature/remove unused Order model (#4690) * Remove unused Order model --- apps/api/src/models/order.ts | 83 ------------------- .../api/src/services/interfaces/interfaces.ts | 21 +---- 2 files changed, 1 insertion(+), 103 deletions(-) delete mode 100644 apps/api/src/models/order.ts diff --git a/apps/api/src/models/order.ts b/apps/api/src/models/order.ts deleted file mode 100644 index 6e6762101..000000000 --- a/apps/api/src/models/order.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { IOrder } from '@ghostfolio/api/services/interfaces/interfaces'; - -import { Account, SymbolProfile, Type as ActivityType } from '@prisma/client'; -import { v4 as uuidv4 } from 'uuid'; - -export class Order { - private account: Account; - private currency: string; - private fee: number; - private date: string; - private id: string; - private isDraft: boolean; - private quantity: number; - private symbol: string; - private symbolProfile: SymbolProfile; - private total: number; - private type: ActivityType; - private unitPrice: number; - - public constructor(data: IOrder) { - this.account = data.account; - this.currency = data.currency; - this.fee = data.fee; - this.date = data.date; - this.id = data.id || uuidv4(); - this.isDraft = data.isDraft; - this.quantity = data.quantity; - this.symbol = data.symbol; - this.symbolProfile = data.symbolProfile; - this.type = data.type; - this.unitPrice = data.unitPrice; - - this.total = this.quantity * data.unitPrice; - } - - public getAccount() { - return this.account; - } - - public getCurrency() { - return this.currency; - } - - public getDate() { - return this.date; - } - - public getFee() { - return this.fee; - } - - public getId() { - return this.id; - } - - public getIsDraft() { - return this.isDraft; - } - - public getQuantity() { - return this.quantity; - } - - public getSymbol() { - return this.symbol; - } - - getSymbolProfile() { - return this.symbolProfile; - } - - public getTotal() { - return this.total; - } - - public getType() { - return this.type; - } - - public getUnitPrice() { - return this.unitPrice; - } -} diff --git a/apps/api/src/services/interfaces/interfaces.ts b/apps/api/src/services/interfaces/interfaces.ts index fa7fc4d09..0eaa149a3 100644 --- a/apps/api/src/services/interfaces/interfaces.ts +++ b/apps/api/src/services/interfaces/interfaces.ts @@ -4,26 +4,7 @@ import { } from '@ghostfolio/common/interfaces'; import { MarketState } from '@ghostfolio/common/types'; -import { - Account, - DataSource, - SymbolProfile, - Type as ActivityType -} from '@prisma/client'; - -export interface IOrder { - account: Account; - currency: string; - date: string; - fee: number; - id?: string; - isDraft: boolean; - quantity: number; - symbol: string; - symbolProfile: SymbolProfile; - type: ActivityType; - unitPrice: number; -} +import { DataSource } from '@prisma/client'; export interface IDataProviderHistoricalResponse { marketPrice: number; From ccbf958aa653e6f26be90b7b7f4333742338bc73 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 16 May 2025 20:16:24 +0200 Subject: [PATCH 25/40] Feature/upgrade countup.js to version 2.8.2 (#4708) * Upgrade countup.js to version 2.8.2 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a60ad6fa..c9b2ba32f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Dutch (`nl`) - Improved the language localization for German (`de`) - Improved the language localization for Italian (`it`) +- Upgraded `countup.js` from version `2.8.0` to `2.8.2` - 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/package-lock.json b/package-lock.json index 52924f839..b2e0f3b9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,7 +61,7 @@ "color": "5.0.0", "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", - "countup.js": "2.8.0", + "countup.js": "2.8.2", "date-fns": "4.1.0", "envalid": "8.0.0", "google-spreadsheet": "3.2.0", @@ -16965,9 +16965,9 @@ "license": "MIT" }, "node_modules/countup.js": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.8.0.tgz", - "integrity": "sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.8.2.tgz", + "integrity": "sha512-UtRoPH6udaru/MOhhZhI/GZHJKAyAxuKItD2Tr7AbrqrOPBX/uejWBBJt8q86169AMqKkE9h9/24kFWbUk/Bag==", "license": "MIT" }, "node_modules/create-jest": { diff --git a/package.json b/package.json index 51b592245..a995a8a47 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "color": "5.0.0", "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", - "countup.js": "2.8.0", + "countup.js": "2.8.2", "date-fns": "4.1.0", "envalid": "8.0.0", "google-spreadsheet": "3.2.0", From 698d71fb3a6e75a9b223d2e018d1f7d15227765a Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 17 May 2025 19:39:48 +0200 Subject: [PATCH 26/40] Feature/restrict permissions of demo user (#4697) * Restrict permissions of demo user * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/user/user.service.ts | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9b2ba32f..f509061ee 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 - Harmonized the data providers management style of the admin control panel +- Restricted the permissions of the demo user - 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/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index cf55b8862..87c82fa0b 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -394,9 +394,11 @@ export class UserService { // Reset holdings view mode user.Settings.settings.holdingsViewMode = undefined; } else if (user.subscription?.type === 'Premium') { - currentPermissions.push(permissions.createApiKey); - currentPermissions.push(permissions.enableDataProviderGhostfolio); - currentPermissions.push(permissions.reportDataGlitch); + if (!hasRole(user, Role.DEMO)) { + currentPermissions.push(permissions.createApiKey); + currentPermissions.push(permissions.enableDataProviderGhostfolio); + currentPermissions.push(permissions.reportDataGlitch); + } currentPermissions = without( currentPermissions, From af79888cd6cdd3849075b9f58395cf42d79aa928 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 18 May 2025 11:54:53 +0200 Subject: [PATCH 27/40] Feature/add asset profile count to data providers management of admin control (#4707) * Extend admin settings columns * assetProfileCount * status * Update changelog --- CHANGELOG.md | 1 + .../admin-platform.component.html | 201 ++++++++---------- .../admin-settings.component.html | 42 +++- .../admin-settings.component.scss | 12 ++ .../admin-settings.component.ts | 2 +- .../admin-settings/admin-settings.module.ts | 2 + .../admin-tag/admin-tag.component.html | 187 ++++++++-------- 7 files changed, 223 insertions(+), 224 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f509061ee..e140bef44 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 - Harmonized the data providers management style of the admin control panel +- Extended the data providers management of the admin control panel by the asset profile count - Restricted the permissions of the demo user - Renamed `Order` to `activities` in the `User` database schema - Improved the language localization for Catalan (`ca`) diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.html b/apps/client/src/app/components/admin-platform/admin-platform.component.html index c71594e45..47fee3c8a 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.html +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1,115 +1,94 @@ -
    -
    -
    - - - - - + +
    - Name - - @if (element.url) { - - } - {{ element.name }} -
    + + + - - - - + + + + - - - - + + + + - - - - + + + + - - -
    + Name + + @if (element.url) { + + } + {{ element.name }} + - Url - - {{ element.url }} - + Url + + {{ element.url }} + - Accounts - - {{ element.accountCount }} - + Accounts + + {{ element.accountCount }} + - - - -
    - -
    -
    + + + +
    + +
    +
    -
    -
    -
    + + + 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 997d34aa5..2dcdefdd0 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 @@ -38,14 +38,6 @@ }}
    -
    - - {{ ghostfolioApiStatus.dailyRequests }} - of - {{ ghostfolioApiStatus.dailyRequestsMax }} - daily requests - -
    } } @else { {{ element.name }} @@ -55,6 +47,40 @@ + + + Asset Profiles + + + {{ element.assetProfileCount }} + + + + + + + @if (isGhostfolioDataProvider(element)) { + @if (isGhostfolioApiKeyValid === true) { + + + {{ ghostfolioApiStatus.dailyRequests }} + of + {{ ghostfolioApiStatus.dailyRequestsMax }} + daily requests + + } + } + + + diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.scss b/apps/client/src/app/components/admin-settings/admin-settings.component.scss index 5d4e87f30..c08ba95bc 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.scss +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.scss @@ -1,3 +1,15 @@ :host { display: block; + + .mat-mdc-progress-bar { + --mdc-linear-progress-active-indicator-height: 0.5rem; + --mdc-linear-progress-track-height: 0.5rem; + border-radius: 0.25rem; + + ::ng-deep { + .mdc-linear-progress__buffer-bar { + background-color: rgb(var(--palette-background-unselected-chip)); + } + } + } } 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 f18e49d10..5c071c60c 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 @@ -39,7 +39,7 @@ import { GhostfolioPremiumApiDialogParams } from './ghostfolio-premium-api-dialo export class AdminSettingsComponent implements OnDestroy, OnInit { public dataSource = new MatTableDataSource(); public defaultDateFormat: string; - public displayedColumns = ['name', 'actions']; + public displayedColumns = ['name', 'assetProfileCount', 'status', 'actions']; public ghostfolioApiStatus: DataProviderGhostfolioStatusResponse; public isGhostfolioApiKeyValid: boolean; public isLoading = false; 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 c5148f681..706f20a87 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 @@ -7,6 +7,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @@ -23,6 +24,7 @@ import { AdminSettingsComponent } from './admin-settings.component'; GfPremiumIndicatorComponent, MatButtonModule, MatMenuModule, + MatProgressBarModule, MatTableModule, NgxSkeletonLoaderModule, RouterModule diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.html b/apps/client/src/app/components/admin-tag/admin-tag.component.html index f69579ab8..5979d2778 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.html +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1,108 +1,87 @@ -
    -
    -
    - - - - - - + +
    - Name - - {{ element.name }} -
    + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - -
    + Name + + {{ element.name }} + - User - - {{ element.userId }} - + User + + {{ element.userId }} + - Activities - - {{ element.activityCount }} - + Activities + + {{ element.activityCount }} + - - - -
    - -
    -
    + + + +
    + +
    +
    -
    -
    -
    + + + From 273ec923165dc4886798aa3030cb0430682e30c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 18 May 2025 20:14:36 +0200 Subject: [PATCH 28/40] Feature/update locales (#4724) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.de.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.es.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.fr.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.it.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.nl.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.pl.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.pt.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.tr.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.uk.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.xlf | 44 ++++++++++++++----------- apps/client/src/locales/messages.zh.xlf | 44 ++++++++++++++----------- 12 files changed, 288 insertions(+), 240 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 78a341ad7..d0f37ead8 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -959,7 +959,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -1051,7 +1051,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1063,7 +1063,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1203,11 +1203,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1235,11 +1235,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1907,7 +1907,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -2126,12 +2126,12 @@ 174 - + Add Platform Afegeix Plataforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -2139,7 +2139,7 @@ Comptes apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -2191,7 +2191,7 @@ Plataformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -2199,7 +2199,7 @@ Etiquetes apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2210,12 +2210,12 @@ 16 - + Add Tag Afegir Etiqueta apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2443,7 +2443,7 @@ Usuari apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -6081,6 +6081,10 @@ Asset Profiles Asset Profiles + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -7283,7 +7287,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index c73acd8e9..7671b9e32 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -102,7 +102,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -138,7 +138,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -150,7 +150,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -258,11 +258,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -290,11 +290,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -404,6 +404,10 @@ Asset Profiles Anlageprofile + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -774,7 +778,7 @@ Benutzer apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -842,7 +846,7 @@ Konten apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1334,7 +1338,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3946,7 +3950,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3966,7 +3970,7 @@ Plattformen apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -4001,12 +4005,12 @@ 47 - + Add Platform Plattform hinzufügen apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5846,12 +5850,12 @@ 49 - + Add Tag Tag hinzufügen apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7307,7 +7311,7 @@ API-Schlüssel setzen apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7413,7 +7417,7 @@ von apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7421,7 +7425,7 @@ täglichen Anfragen apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7429,7 +7433,7 @@ API-Schlüssel löschen apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index de9f07c8d..535415181 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -103,7 +103,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -139,7 +139,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -151,7 +151,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -259,11 +259,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -291,11 +291,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -405,6 +405,10 @@ Asset Profiles Perfiles de activos. + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -759,7 +763,7 @@ Usuario apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -827,7 +831,7 @@ Cuentas apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1319,7 +1323,7 @@ Etiquetas apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3923,7 +3927,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3943,7 +3947,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3978,12 +3982,12 @@ 47 - + Add Platform Add Platform apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5823,12 +5827,12 @@ 49 - + Add Tag Add Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7284,7 +7288,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7390,7 +7394,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7398,7 +7402,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7406,7 +7410,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 5077a4010..becc95d5d 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -146,7 +146,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -158,7 +158,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -314,11 +314,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -346,11 +346,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -460,6 +460,10 @@ Asset Profiles Profil d’Actifs + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -926,7 +930,7 @@ Étiquettes apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1018,7 +1022,7 @@ Utilisateur apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -1038,7 +1042,7 @@ Comptes apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -3922,7 +3926,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3946,7 @@ Platformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3977,12 +3981,12 @@ 47 - + Add Platform Ajoutez une Plateforme apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5822,12 +5826,12 @@ 49 - + Add Tag Ajouter un Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7283,7 +7287,7 @@ Définir clé API apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ sur apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ requêtes journalières apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Retirer la clé API apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 57a3b7162..a3605173f 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -103,7 +103,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -139,7 +139,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -151,7 +151,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -259,11 +259,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -291,11 +291,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -405,6 +405,10 @@ Asset Profiles Profilo dell’asset + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -759,7 +763,7 @@ Utente apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -827,7 +831,7 @@ Account apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1319,7 +1323,7 @@ Tag apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3923,7 +3927,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3943,7 +3947,7 @@ Piattaforme apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3978,12 +3982,12 @@ 47 - + Add Platform Aggiungi la piattaforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5823,12 +5827,12 @@ 49 - + Add Tag Aggiungi un Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7284,7 +7288,7 @@ Imposta API Key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7390,7 +7394,7 @@ di apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7398,7 +7402,7 @@ richieste giornaliere apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7406,7 +7410,7 @@ Rimuovi API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 1099d5235..f57b34e88 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -102,7 +102,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -138,7 +138,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -150,7 +150,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -258,11 +258,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -290,11 +290,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -404,6 +404,10 @@ Asset Profiles Activa Profiel + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -758,7 +762,7 @@ Gebruiker apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -826,7 +830,7 @@ Rekeningen apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1318,7 +1322,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3922,7 +3926,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3946,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3977,12 +3981,12 @@ 47 - + Add Platform Platform Toevoegen apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5822,12 +5826,12 @@ 49 - + Add Tag Label Toevoegen apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7283,7 +7287,7 @@ API-sleutel instellen apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ van apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ dagelijkse verzoeken apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Verwijder API-sleutel apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index c62b42f69..40ca77ad9 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -915,7 +915,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -979,7 +979,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -991,7 +991,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1131,11 +1131,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1163,11 +1163,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1938,12 +1938,12 @@ 174 - + Add Platform Dodaj Platformę apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1959,7 +1959,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1971,7 +1971,7 @@ Konta apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -2023,7 +2023,7 @@ Platformy apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -2031,7 +2031,7 @@ Tagi apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2042,12 +2042,12 @@ 16 - + Add Tag Dodaj Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2239,7 +2239,7 @@ Użytkownik apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -5545,6 +5545,10 @@ Asset Profiles Profile aktywów + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -7283,7 +7287,7 @@ Skonfiguruj klucz API apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ z apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ codzienne żądania apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Usuń klucz API apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 535aa5acf..a6a4f98e2 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -146,7 +146,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -158,7 +158,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -314,11 +314,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -346,11 +346,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -460,6 +460,10 @@ Asset Profiles Perfil de Ativos + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -890,7 +894,7 @@ Utilizador apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -910,7 +914,7 @@ Contas apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1622,7 +1626,7 @@ Marcadores apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -3922,7 +3926,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3946,7 @@ Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -3977,12 +3981,12 @@ 47 - + Add Platform Adicionar Plataforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -5822,12 +5826,12 @@ 49 - + Add Tag Add Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7283,7 +7287,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 400bed697..139b727fe 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -903,7 +903,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -939,7 +939,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -951,7 +951,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1091,11 +1091,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1123,11 +1123,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1237,6 +1237,10 @@ Asset Profiles Varlık Profili + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -1763,7 +1767,7 @@ Etiketler apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1842,12 +1846,12 @@ 174 - + Add Platform Platform Ekle apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1863,7 +1867,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1875,7 +1879,7 @@ Hesaplar apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1927,7 +1931,7 @@ Platformlar apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -1943,7 +1947,7 @@ Kullanıcı apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -5822,12 +5826,12 @@ 37 - + Add Tag Etiket Ekleyiniz apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -7283,7 +7287,7 @@ API anahtarını ayarla apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7389,7 +7393,7 @@ ın apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7397,7 +7401,7 @@ günlük istekler apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7405,7 +7409,7 @@ API anahtarını kaldır apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 56b5ba426..b095cbbff 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -975,7 +975,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -1067,7 +1067,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1079,7 +1079,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1219,11 +1219,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1251,11 +1251,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1791,7 +1791,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -2114,12 +2114,12 @@ 174 - + Add Platform Додати платформу apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -2127,7 +2127,7 @@ Рахунки apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -2199,7 +2199,7 @@ з apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -2207,7 +2207,7 @@ щоденних запитів apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -2215,7 +2215,7 @@ Вилучити ключ API apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 @@ -2223,7 +2223,7 @@ Встановити ключ API apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -2231,7 +2231,7 @@ Платформи apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -2239,7 +2239,7 @@ Теги apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2306,12 +2306,12 @@ 39 - + Add Tag Додати тег apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2319,7 +2319,7 @@ Користувач apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -6703,6 +6703,10 @@ Asset Profiles Профілі активів + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 70458fffd..e769e7152 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -883,7 +883,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -951,7 +951,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -963,7 +963,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1099,11 +1099,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1130,11 +1130,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1863,11 +1863,11 @@ 174 - + Add Platform apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1882,7 +1882,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1893,7 +1893,7 @@ Accounts apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1941,14 +1941,14 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1959,11 +1959,11 @@ 16 - + Add Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2134,7 +2134,7 @@ User apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -5129,6 +5129,10 @@ Asset Profiles + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -6623,7 +6627,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -6725,7 +6729,7 @@ of apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -6746,14 +6750,14 @@ Remove API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 daily requests apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 12cbd3ed0..e57fec28f 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -916,7 +916,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -988,7 +988,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1000,7 +1000,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -1140,11 +1140,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1172,11 +1172,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1947,12 +1947,12 @@ 174 - + Add Platform 添加平台 apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1968,7 +1968,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1980,7 +1980,7 @@ 帐户 apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -2032,7 +2032,7 @@ 平台 apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 137 @@ -2040,7 +2040,7 @@ 标签 apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 143 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2051,12 +2051,12 @@ 16 - + Add Tag 添加标签 apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2248,7 +2248,7 @@ 用户 apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html @@ -5586,6 +5586,10 @@ Asset Profiles 资产概况 + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 52 + libs/ui/src/lib/assistant/assistant.html 67 @@ -7284,7 +7288,7 @@ 设置 API 密钥 apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + 113 @@ -7390,7 +7394,7 @@ apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + 75 @@ -7398,7 +7402,7 @@ 每日请求 apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + 77 @@ -7406,7 +7410,7 @@ 移除 API 密钥 apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + 102 From 57c43e5815b4b26f4769a94cc480d30125d1a8c6 Mon Sep 17 00:00:00 2001 From: Gadi Cohen Date: Sun, 18 May 2025 19:45:00 +0100 Subject: [PATCH 29/40] Feature/upgrade yahoo-finance2 to version 3.3.2 (#4721) * Upgrade yahoo-finance2 to version 3.3.2 * Update changelog --- CHANGELOG.md | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e140bef44..87d833bf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Italian (`it`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` -- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.1` +- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.2` ### Fixed diff --git a/package-lock.json b/package-lock.json index b2e0f3b9f..bf48e51fa 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": "3.3.1", + "yahoo-finance2": "3.3.2", "zone.js": "0.15.0" }, "devDependencies": { @@ -36091,9 +36091,9 @@ } }, "node_modules/yahoo-finance2": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.3.1.tgz", - "integrity": "sha512-hBXdhieq897OoAu2HxA4/Ca+XrYtPFLTtGzPRW5qKCd+nX1ahHID3tmvxVBBlDTeOesdp0wjO5uGJS+o4cnEMw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.3.2.tgz", + "integrity": "sha512-KJLrcEwG+PFxe7L2iXe1R9icceFChENA+2EdFo/6GYIFVJR4YJD3MrjIsAYfGuzK531EjDLyT4KSlpIkaKhhgw==", "license": "MIT", "dependencies": { "@deno/shim-deno": "~0.18.0", diff --git a/package.json b/package.json index a995a8a47..822f025b1 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": "3.3.1", + "yahoo-finance2": "3.3.2", "zone.js": "0.15.0" }, "devDependencies": { From a0f377e8eb0886226415bf645e9f5a8b00411f80 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 19 May 2025 23:27:52 +0200 Subject: [PATCH 30/40] Feature/refactor ordersCount to activityCount (#4688) * Refactor ordersCount to activityCount --- apps/api/src/app/portfolio/portfolio.service.ts | 16 ++++++++-------- apps/api/src/helper/object.helper.spec.ts | 4 ++-- .../portfolio-summary.component.html | 6 +++--- .../interfaces/portfolio-summary.interface.ts | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index c580ce149..7e373c4cc 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1249,7 +1249,7 @@ export class PortfolioService { const rules: PortfolioReportResponse['rules'] = { accountClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new AccountClusterRiskCurrentInvestment( @@ -1265,7 +1265,7 @@ export class PortfolioService { ) : undefined, assetClassClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new AssetClassClusterRiskEquity( @@ -1281,7 +1281,7 @@ export class PortfolioService { ) : undefined, currencyClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new CurrencyClusterRiskBaseCurrencyCurrentInvestment( @@ -1297,7 +1297,7 @@ export class PortfolioService { ) : undefined, economicMarketClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new EconomicMarketClusterRiskDevelopedMarkets( @@ -1338,7 +1338,7 @@ export class PortfolioService { userSettings ), regionalMarketClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new RegionalMarketClusterRiskAsiaPacific( @@ -1981,6 +1981,9 @@ export class PortfolioService { netPerformanceWithCurrencyEffect, totalBuy, totalSell, + activityCount: activities.filter(({ type }) => { + return ['BUY', 'SELL'].includes(type); + }).length, committedFunds: committedFunds.toNumber(), currentValueInBaseCurrency: currentValueInBaseCurrency.toNumber(), dividendInBaseCurrency: dividendInBaseCurrency.toNumber(), @@ -2008,9 +2011,6 @@ export class PortfolioService { interest: interest.toNumber(), items: valuables.toNumber(), liabilities: liabilities.toNumber(), - ordersCount: activities.filter(({ type }) => { - return ['BUY', 'SELL'].includes(type); - }).length, totalInvestment: totalInvestment.toNumber(), totalValueInBaseCurrency: netWorth }; diff --git a/apps/api/src/helper/object.helper.spec.ts b/apps/api/src/helper/object.helper.spec.ts index b0370fa3f..d7caf9bc9 100644 --- a/apps/api/src/helper/object.helper.spec.ts +++ b/apps/api/src/helper/object.helper.spec.ts @@ -1515,6 +1515,7 @@ describe('redactAttributes', () => { } }, summary: { + activityCount: 29, annualizedPerformancePercent: 0.16690880197786, annualizedPerformancePercentWithCurrencyEffect: 0.1694019484552876, cash: null, @@ -1538,7 +1539,6 @@ describe('redactAttributes', () => { interest: null, items: null, liabilities: null, - ordersCount: 29, totalInvestment: null, totalValueInBaseCurrency: null, currentNetWorth: null @@ -3018,6 +3018,7 @@ describe('redactAttributes', () => { } }, summary: { + activityCount: 29, annualizedPerformancePercent: 0.16690880197786, annualizedPerformancePercentWithCurrencyEffect: 0.1694019484552876, cash: null, @@ -3041,7 +3042,6 @@ describe('redactAttributes', () => { interest: null, items: null, liabilities: null, - ordersCount: 29, totalInvestment: null, totalValueInBaseCurrency: null, currentNetWorth: null diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html index 1a52bd646..265904b88 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -7,11 +7,11 @@
    - {{ summary?.ordersCount }} - {summary?.ordersCount, plural, + {{ summary?.activityCount }} + {summary?.activityCount, plural, =1 {activity} other {activities} } diff --git a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts index 42496b228..4030b9001 100644 --- a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts @@ -1,6 +1,7 @@ import { PortfolioPerformance } from './portfolio-performance.interface'; export interface PortfolioSummary extends PortfolioPerformance { + activityCount: number; annualizedPerformancePercent: number; annualizedPerformancePercentWithCurrencyEffect: number; cash: number; @@ -21,7 +22,6 @@ export interface PortfolioSummary extends PortfolioPerformance { interest: number; items: number; liabilities: number; - ordersCount: number; totalBuy: number; totalSell: number; totalValueInBaseCurrency?: number; From c2c628e77c2d41428a5bf5d4d9f9ca99e3975ec3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 22:46:41 +0100 Subject: [PATCH 31/40] Feature/update locales (#4726) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 2 +- apps/client/src/locales/messages.de.xlf | 2 +- apps/client/src/locales/messages.es.xlf | 2 +- apps/client/src/locales/messages.fr.xlf | 2 +- apps/client/src/locales/messages.it.xlf | 2 +- apps/client/src/locales/messages.nl.xlf | 2 +- apps/client/src/locales/messages.pl.xlf | 2 +- apps/client/src/locales/messages.pt.xlf | 2 +- apps/client/src/locales/messages.tr.xlf | 2 +- apps/client/src/locales/messages.uk.xlf | 2 +- apps/client/src/locales/messages.xlf | 2 +- apps/client/src/locales/messages.zh.xlf | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index d0f37ead8..4e4e7e62d 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2902,7 +2902,7 @@ 3 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} other {activities}} diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 7671b9e32..f61c91c7e 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -6586,7 +6586,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {Aktivität} other {Aktivitäten}} diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 535415181..49af34834 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -6563,7 +6563,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} other {activities}} diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index becc95d5d..946533d94 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} autres {activities}} diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index a3605173f..37c66bfd8 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -6563,7 +6563,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {attività} other {attività}} diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f57b34e88..ca56dcc82 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activiteit} other {activiteiten}} diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 40ca77ad9..ab45fe323 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} other {activities}} diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index a6a4f98e2..3755a9248 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {activity} other {activities}} diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 139b727fe..2064777a6 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -6562,7 +6562,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {Etkinlik} other {Etkinlikler}} diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index b095cbbff..5f768b379 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2982,7 +2982,7 @@ 3 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {дія} other {дій}} diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index e769e7152..472529903 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -6000,7 +6000,7 @@ 8 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index e57fec28f..1697a5197 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -6563,7 +6563,7 @@ 48 - + {VAR_PLURAL, plural, =1 {activity} other {activities}} {VAR_PLURAL, plural, =1 {活动} other {活动}} From 70a4697f54bc86958d220496647e0976e98472af Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 20 May 2025 08:22:49 +0100 Subject: [PATCH 32/40] Feature/remove deprecated endpoints in admin controller (#4687) * Remove deprecated endpoints * Update changelog --- CHANGELOG.md | 3 + apps/api/src/app/admin/admin.controller.ts | 70 ---------------------- 2 files changed, 3 insertions(+), 70 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87d833bf7..5b9c056dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Extended the data providers management of the admin control panel by the asset profile count - Restricted the permissions of the demo user - Renamed `Order` to `activities` in the `User` database schema +- Removed the deprecated endpoint `GET api/v1/admin/market-data/:dataSource/:symbol` +- Removed the deprecated endpoint `POST api/v1/admin/market-data/:dataSource/:symbol` +- Removed the deprecated endpoint `PUT api/v1/admin/market-data/:dataSource/:symbol/:dateString` - Improved the language localization for Catalan (`ca`) - Improved the language localization for Chinese (`zh`) - Improved the language localization for Dutch (`nl`) diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index d8507bbb0..736f6da33 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -3,7 +3,6 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service'; -import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PropertyDto } from '@ghostfolio/api/services/property/property.dto'; import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; import { @@ -16,7 +15,6 @@ import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { AdminData, AdminMarketData, - AdminMarketDataDetails, AdminUsers, EnhancedSymbolProfile } from '@ghostfolio/common/interfaces'; @@ -50,8 +48,6 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { AdminService } from './admin.service'; import { UpdateAssetProfileDto } from './update-asset-profile.dto'; -import { UpdateBulkMarketDataDto } from './update-bulk-market-data.dto'; -import { UpdateMarketDataDto } from './update-market-data.dto'; @Controller('admin') export class AdminController { @@ -60,7 +56,6 @@ export class AdminController { private readonly apiService: ApiService, private readonly dataGatheringService: DataGatheringService, private readonly manualService: ManualService, - private readonly marketDataService: MarketDataService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -214,19 +209,6 @@ export class AdminController { }); } - /** - * @deprecated - */ - @Get('market-data/:dataSource/:symbol') - @HasPermission(permissions.accessAdminControl) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getMarketDataBySymbol( - @Param('dataSource') dataSource: DataSource, - @Param('symbol') symbol: string - ): Promise { - return this.adminService.getMarketDataBySymbol({ dataSource, symbol }); - } - @HasPermission(permissions.accessAdminControl) @Post('market-data/:dataSource/:symbol/test') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @@ -253,58 +235,6 @@ export class AdminController { } } - /** - * @deprecated - */ - @HasPermission(permissions.accessAdminControl) - @Post('market-data/:dataSource/:symbol') - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async updateMarketData( - @Body() data: UpdateBulkMarketDataDto, - @Param('dataSource') dataSource: DataSource, - @Param('symbol') symbol: string - ) { - const dataBulkUpdate: Prisma.MarketDataUpdateInput[] = data.marketData.map( - ({ date, marketPrice }) => ({ - dataSource, - marketPrice, - symbol, - date: parseISO(date), - state: 'CLOSE' - }) - ); - - return this.marketDataService.updateMany({ - data: dataBulkUpdate - }); - } - - /** - * @deprecated - */ - @HasPermission(permissions.accessAdminControl) - @Put('market-data/:dataSource/:symbol/:dateString') - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async update( - @Param('dataSource') dataSource: DataSource, - @Param('dateString') dateString: string, - @Param('symbol') symbol: string, - @Body() data: UpdateMarketDataDto - ) { - const date = parseISO(dateString); - - return this.marketDataService.updateMarketData({ - data: { marketPrice: data.marketPrice, state: 'CLOSE' }, - where: { - dataSource_date_symbol: { - dataSource, - date, - symbol - } - } - }); - } - @HasPermission(permissions.accessAdminControl) @Post('profile-data/:dataSource/:symbol') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) From f63ede46b0d49228613036ba5aedfdade95af31e Mon Sep 17 00:00:00 2001 From: Fabio Carlos Date: Tue, 20 May 2025 13:02:37 -0600 Subject: [PATCH 33/40] Feature/improve language localization for IT 20250513 (#4717) * Improve language localization for IT --- apps/client/src/locales/messages.it.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 37c66bfd8..acc667e17 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -7996,7 +7996,7 @@ Log out - Log out + Esci apps/client/src/app/components/header/header.component.html 315 From 294a1834b6244451cf165a34f454acdd69c5a4d3 Mon Sep 17 00:00:00 2001 From: Felix Jordan Date: Wed, 21 May 2025 01:05:02 +0600 Subject: [PATCH 34/40] Feature/improve language localization for CA 20250513 (#4719) * Improve language localization for CA --- apps/client/src/locales/messages.ca.xlf | 76 ++++++++++++------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 4e4e7e62d..275f6ab40 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -4328,7 +4328,7 @@ Why Ghostfolio? - Why Ghostfolio? + Per què Ghostfolio? apps/client/src/app/pages/landing/landing-page.html 272 @@ -4336,7 +4336,7 @@ Ghostfolio is for you if you are... - Ghostfolio is for you if you are... + Ghostfolio és per a tu si ets... apps/client/src/app/pages/landing/landing-page.html 273 @@ -4344,7 +4344,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms + negociar accions, ETF o criptomonedes en múltiples plataformes apps/client/src/app/pages/landing/landing-page.html 280 @@ -4352,7 +4352,7 @@ pursuing a buy & hold strategy - pursuing a buy & hold strategy + perseguint una compra & mantenir l’estratègia apps/client/src/app/pages/landing/landing-page.html 286 @@ -4360,7 +4360,7 @@ interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition + interessat a obtenir informació sobre la composició de la vostra cartera apps/client/src/app/pages/landing/landing-page.html 291 @@ -4368,7 +4368,7 @@ valuing privacy and data ownership - valuing privacy and data ownership + valorant la privadesa i la propietat de les dades apps/client/src/app/pages/landing/landing-page.html 296 @@ -4376,7 +4376,7 @@ into minimalism - into minimalism + al minimalisme apps/client/src/app/pages/landing/landing-page.html 299 @@ -4384,7 +4384,7 @@ caring about diversifying your financial resources - caring about diversifying your financial resources + preocupant-se per diversificar els seus recursos econòmics apps/client/src/app/pages/landing/landing-page.html 303 @@ -4392,7 +4392,7 @@ interested in financial independence - interested in financial independence + interessada en la independència financera apps/client/src/app/pages/landing/landing-page.html 307 @@ -4400,7 +4400,7 @@ saying no to spreadsheets in - saying no to spreadsheets in + dir no als fulls de càlcul apps/client/src/app/pages/landing/landing-page.html 311 @@ -4408,7 +4408,7 @@ still reading this list - still reading this list + encara llegint aquesta llista apps/client/src/app/pages/landing/landing-page.html 314 @@ -4416,7 +4416,7 @@ Learn more about Ghostfolio - Learn more about Ghostfolio + Més informació sobre Ghostfolio apps/client/src/app/pages/landing/landing-page.html 319 @@ -4424,7 +4424,7 @@ What our users are saying - What our users are saying + Que nostre usuaris estan dient apps/client/src/app/pages/landing/landing-page.html 327 @@ -4432,7 +4432,7 @@ Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium + Membres de tot el món estan utilitzant Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html 366 @@ -4440,7 +4440,7 @@ How does Ghostfolio work? - How does Ghostfolio work? + Com ho fa Ghostfolio treballar? apps/client/src/app/pages/landing/landing-page.html 383 @@ -4448,7 +4448,7 @@ Get started in only 3 steps - Get started in only 3 steps + Comença en només 3 passos apps/client/src/app/pages/landing/landing-page.html 386 @@ -4456,7 +4456,7 @@ Sign up anonymously* - Sign up anonymously* + Registra’t de manera anònima* apps/client/src/app/pages/landing/landing-page.html 392 @@ -4464,7 +4464,7 @@ * no e-mail address nor credit card required - * no e-mail address nor credit card required + * no es requereix cap adreça de correu electrònic ni targeta de crèdit apps/client/src/app/pages/landing/landing-page.html 394 @@ -4472,7 +4472,7 @@ Add any of your historical transactions - Add any of your historical transactions + Afegiu qualsevol de les vostres transaccions històriques apps/client/src/app/pages/landing/landing-page.html 405 @@ -4480,7 +4480,7 @@ Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition + Obteniu informació valuosa sobre la composició de la vostra cartera apps/client/src/app/pages/landing/landing-page.html 417 @@ -4488,7 +4488,7 @@ Are you ready? - Are you ready? + Són tu llest? apps/client/src/app/pages/landing/landing-page.html 431 @@ -4496,7 +4496,7 @@ Join now or check out the example account - Join now or check out the example account + Uneix-te ara o consulteu el compte d’exemple apps/client/src/app/pages/landing/landing-page.html 434 @@ -4504,7 +4504,7 @@ Get Started - Get Started + Comença apps/client/src/app/pages/landing/landing-page.html 446 @@ -4512,7 +4512,7 @@ At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + A Ghostfolio, la transparència és la base dels nostres valors. Publiquem el codi font com a programari de codi obert (OSS) sota elLlicència AGPL-3.0 i compartim obertament mètriques clau agregades de l’estat operatiu de la plataforma. apps/client/src/app/pages/open/open-page.html 6 @@ -4520,7 +4520,7 @@ (Last 24 hours) - (Last 24 hours) + (Últimes 24 hores) apps/client/src/app/pages/open/open-page.html 37 @@ -4528,7 +4528,7 @@ Active Users - Active Users + Usuaris actius apps/client/src/app/pages/open/open-page.html 40 @@ -4540,7 +4540,7 @@ (Last 30 days) - (Last 30 days) + (Últims 30 dies) apps/client/src/app/pages/open/open-page.html 48 @@ -4552,7 +4552,7 @@ New Users - New Users + Usuaris nous apps/client/src/app/pages/open/open-page.html 51 @@ -4560,7 +4560,7 @@ Users in Slack community - Users in Slack community + Usuaris de la comunitat Slack apps/client/src/app/pages/open/open-page.html 75 @@ -4568,7 +4568,7 @@ Contributors on GitHub - Contributors on GitHub + Col·laboradors a GitHub apps/client/src/app/pages/open/open-page.html 89 @@ -4576,7 +4576,7 @@ (Last 90 days) - (Last 90 days) + (Últims 90 dies) apps/client/src/app/pages/open/open-page.html 127 @@ -4584,7 +4584,7 @@ Uptime - Uptime + Temps de funcionament apps/client/src/app/pages/open/open-page.html 132 @@ -4592,7 +4592,7 @@ Activities - Activities + Activitats apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts 13 @@ -4604,7 +4604,7 @@ Update activity - Update activity + Activitat d’actualització apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 10 @@ -4612,7 +4612,7 @@ Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities + Accions, ETF, bons, criptomonedes, matèries primeres apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 25 @@ -4624,7 +4624,7 @@ One-time fee, annual account fees - One-time fee, annual account fees + Comissió única, comissions de compte anual apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 33 @@ -4632,7 +4632,7 @@ Distribution of corporate earnings - Distribution of corporate earnings + Distribució dels beneficis de les empreses apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 41 @@ -4640,7 +4640,7 @@ Revenue for lending out money - Revenue for lending out money + Ingressos per prestar diners apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 49 From f361ecc732b1d8e5e7377e1e394d2cae69221af5 Mon Sep 17 00:00:00 2001 From: jlebutte Date: Tue, 20 May 2025 23:48:34 +0200 Subject: [PATCH 35/40] Feature/improve language localization for FR 20250520 (#4728) * Improve language localization for FR * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.fr.xlf | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b9c056dc..1b0d60eee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Catalan (`ca`) - Improved the language localization for Chinese (`zh`) - Improved the language localization for Dutch (`nl`) +- Improved the language localization for French (`fr`) - Improved the language localization for German (`de`) - Improved the language localization for Italian (`it`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 946533d94..8079a83c6 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -471,7 +471,7 @@ Historical Market Data - Données de Marché Historiques + Données historiques du marché apps/client/src/app/components/admin-jobs/admin-jobs.html 37 @@ -535,7 +535,7 @@ Market Price - Prix du Marché + Prix du marché apps/client/src/app/components/admin-market-data/admin-market-data.html 133 @@ -1127,7 +1127,7 @@ Current Market Mood - Sentiment Actuel du Marché + Sentiment actuel du marché apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html 12 @@ -1479,7 +1479,7 @@ Time in Market - Temps sur le Marché + Temps sur le marché apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 3 @@ -2203,7 +2203,7 @@ Market Data - Données de Marché + Données du marché apps/client/src/app/pages/admin/admin-page-routing.module.ts 30 @@ -2663,7 +2663,7 @@ Developed Markets - Marchés Développés + Marchés développés apps/client/src/app/pages/portfolio/allocations/allocations-page.html 222 @@ -2675,7 +2675,7 @@ Emerging Markets - Marchés Émergents + Marchés émergents apps/client/src/app/pages/portfolio/allocations/allocations-page.html 231 @@ -4171,7 +4171,7 @@ Changelog - Historique des Modifications + Historique des modifications apps/client/src/app/pages/about/about-page.component.ts 50 @@ -4267,7 +4267,7 @@ Market Mood - Sentiment du Marché + Sentiment du marché apps/client/src/app/pages/features/features-page.html 215 @@ -4583,7 +4583,7 @@ By Market - par Marchés + par marché apps/client/src/app/pages/portfolio/allocations/allocations-page.html 175 @@ -7670,7 +7670,7 @@ Market Data - Données de Marché + Données du marché apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 374 @@ -7995,7 +7995,7 @@ Log out - Log out + Se déconnecter apps/client/src/app/components/header/header.component.html 315 From f4ef91e3bea3b0e55d325b3aeeb5694be3b93671 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 20 May 2025 22:49:54 +0100 Subject: [PATCH 36/40] Feature/upgrade twitter-api-v2 to version 1.23.0 (#4693) * Upgrade twitter-api-v2 to version 1.23.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b0d60eee..aaa3db02e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Italian (`it`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` +- Upgraded `twitter-api-v2` from version `1.14.2` to `1.23.0` - Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.2` ### Fixed diff --git a/package-lock.json b/package-lock.json index bf48e51fa..94851b2e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -87,7 +87,7 @@ "rxjs": "7.8.1", "stripe": "17.3.0", "svgmap": "2.12.2", - "twitter-api-v2": "1.14.2", + "twitter-api-v2": "1.23.0", "uuid": "11.1.0", "yahoo-finance2": "3.3.2", "zone.js": "0.15.0" @@ -34027,9 +34027,9 @@ "license": "Unlicense" }, "node_modules/twitter-api-v2": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.14.2.tgz", - "integrity": "sha512-389e/rWaN8zWkmD5z2IpKVb5+ojPxVtrexQoGBI1Xfib1mE/9M7k7zbnZ3Q/WLwthwcWkQIlB25ecT64AL8LvQ==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.23.0.tgz", + "integrity": "sha512-5i1agETVpTuY68Zuk9i2B3N9wHzc4JIWw0WKyG4CEaFv9mRKmU87roa+U1oYYXTChWb0HMcqfkwoBJHYmLbeDA==", "license": "Apache-2.0" }, "node_modules/type-check": { diff --git a/package.json b/package.json index 822f025b1..50abdeea7 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "rxjs": "7.8.1", "stripe": "17.3.0", "svgmap": "2.12.2", - "twitter-api-v2": "1.14.2", + "twitter-api-v2": "1.23.0", "uuid": "11.1.0", "yahoo-finance2": "3.3.2", "zone.js": "0.15.0" From a06872b657027c8ae73bf87d48af7bbed7e76639 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 20 May 2025 22:53:32 +0100 Subject: [PATCH 37/40] Bugfix/improve show condition of button to fetch current market price (#4700) * Improve show condition of button to fetch current market price * Update changelog --- CHANGELOG.md | 1 + .../create-or-update-activity-dialog.component.ts | 12 ++++++++---- .../create-or-update-activity-dialog.html | 4 +++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaa3db02e..a3db392da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Displayed the button to fetch the current market price only if the activity is not in a custom currency - Fixed an issue in the watchlist endpoint (`POST`) related to the `HasPermissionGuard` ## 2.161.0 - 2025-05-06 diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index dce045a4a..5f651195a 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -39,6 +39,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { return { id: assetSubClass, label: translate(assetSubClass) }; }); public currencies: string[] = []; + public currencyOfAssetProfile: string; public currentMarketPrice = null; public defaultDateFormat: string; public isLoading = false; @@ -63,8 +64,10 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { ) {} public ngOnInit() { - this.mode = this.data.activity.id ? 'update' : 'create'; + this.currencyOfAssetProfile = this.data.activity?.SymbolProfile?.currency; this.locale = this.data.user?.settings?.locale; + this.mode = this.data.activity?.id ? 'update' : 'create'; + this.dateAdapter.setLocale(this.locale); const { currencies, platforms } = this.dataService.fetchInfo(); @@ -210,7 +213,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.activityForm.get('type').value ) ) { - this.updateSymbol(); + this.updateAssetProfile(); } this.changeDetectorRef.markForCheck(); @@ -397,7 +400,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.dialogRef.close(activity); } else { - (activity as UpdateOrderDto).id = this.data.activity.id; + (activity as UpdateOrderDto).id = this.data.activity?.id; await validateObjectForForm({ classDto: UpdateOrderDto, @@ -422,7 +425,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.unsubscribeSubject.complete(); } - private updateSymbol() { + private updateAssetProfile() { this.isLoading = true; this.changeDetectorRef.markForCheck(); @@ -450,6 +453,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.activityForm.get('dataSource').setValue(dataSource); } + this.currencyOfAssetProfile = currency; this.currentMarketPrice = marketPrice; this.isLoading = false; diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index b0521530f..08e1b5162 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -230,8 +230,10 @@
    @if ( + currencyOfAssetProfile === + activityForm.get('currencyOfUnitPrice').value && currentMarketPrice && - (data.activity.type === 'BUY' || data.activity.type === 'SELL') && + ['BUY', 'SELL'].includes(data.activity.type) && isToday(activityForm.get('date')?.value) ) {
    From 1cfc691a3e3fcfd5ae73b7078348cae840d28866 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 19:40:40 +0200 Subject: [PATCH 40/40] Feature/update locales (#4730) * Update locales * Update translations --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- apps/client/src/locales/messages.ca.xlf | 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 | 8 ++++++++ 12 files changed, 95 insertions(+) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 38ae4f139..fc7e685bc 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -8001,6 +8001,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index f1e006a1b..b37c6254e 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -8001,6 +8001,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Berechnungen basieren auf verzögerten Marktdaten und werden nicht in Echtzeit angezeigt. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 3490217e8..28650c5fb 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -8002,6 +8002,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index aa5d6b26b..36098ab94 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -8001,6 +8001,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 4d1423a95..98539f12a 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -8002,6 +8002,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f49a838ed..2d4920df4 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -8001,6 +8001,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index d550ce676..5b399a06b 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -8001,6 +8001,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index e6d822d8b..9ec736be8 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -8001,6 +8001,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index c70d74a5e..7ad178a25 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -8001,6 +8001,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 7f9386e43..8bb56f080 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -8001,6 +8001,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 75d2164f9..0eaf12d05 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -7237,6 +7237,13 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 7c8694c35..3b6410a4f 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -8002,6 +8002,14 @@ 315 + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. + + apps/client/src/app/components/home-market/home-market.html + 41 + +