From fab06f8d42bc1c70082ae1bd93999e251c269cff Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 5 May 2026 08:00:04 +0200 Subject: [PATCH 01/11] Task/extend referral brokers (#6841) Add Revolut --- apps/client/src/app/pages/pricing/pricing-page.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/client/src/app/pages/pricing/pricing-page.component.ts b/apps/client/src/app/pages/pricing/pricing-page.component.ts index 0b76fcd1d..80a62d693 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.component.ts +++ b/apps/client/src/app/pages/pricing/pricing-page.component.ts @@ -78,6 +78,7 @@ export class GfPricingPageComponent implements OnInit { 'Interactive Brokers', 'Mintos', 'Monefit SmartSaver', + 'Revolut', 'Swissquote', 'VIAC', 'Zak' From 5113b221238375d8af3a39171a202aca035b7ecc Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Tue, 5 May 2026 22:24:28 +0700 Subject: [PATCH 02/11] Bugfix/remove bottom border in mobile navbar container (#6839) * Remove border * Update changelog --- CHANGELOG.md | 6 ++++++ apps/client/src/styles.scss | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43119ff4c..50ec99a82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Fixed + +- Fixed a visual regression in the bottom navigation bar on mobile + ## 3.2.0 - 2026-05-03 ### Added diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 0b7f6f029..4138d9d9b 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -520,15 +520,15 @@ ngx-skeleton-loader { padding: 2rem 0; } + @include mat.tabs-overrides( + ( + divider-height: 0 + ) + ); + @media (min-width: 576px) { flex-direction: row-reverse; - @include mat.tabs-overrides( - ( - divider-height: 0 - ) - ); - .mat-mdc-tab-header { background-color: rgba(var(--palette-foreground-base), 0.02); padding: 2rem 0; From 3602562aacce36dbdd0007da95bb01c0862e7bd6 Mon Sep 17 00:00:00 2001 From: David Requeno <108202767+DavidReque@users.noreply.github.com> Date: Tue, 5 May 2026 10:34:57 -0600 Subject: [PATCH 03/11] Task/migrate Angular components from NgClass to class bindings (#6843) * Migrate components from NgClass to class bindings * Update changelog --- CHANGELOG.md | 4 ++ .../account-detail-dialog.component.ts | 2 - .../account-detail-dialog.html | 2 +- .../app/components/admin-jobs/admin-jobs.html | 2 +- .../admin-market-data/admin-market-data.html | 6 +- .../components/admin-users/admin-users.html | 14 ++-- .../components/header/header.component.html | 72 +++++++++---------- .../app/components/header/header.component.ts | 2 - .../holding-detail-dialog.component.ts | 2 - .../holding-detail-dialog.html | 18 +++-- .../home-holdings/home-holdings.component.ts | 2 - .../home-holdings/home-holdings.html | 2 +- .../home-overview/home-overview.component.ts | 2 - .../home-overview/home-overview.html | 7 +- .../portfolio-performance.component.html | 4 +- .../portfolio-performance.component.ts | 3 +- .../portfolio-summary.component.html | 11 ++- .../portfolio-summary.component.ts | 3 +- .../rule-settings-dialog.component.ts | 2 - .../rule-settings-dialog.html | 10 +-- .../app/components/rule/rule.component.html | 2 +- .../src/app/components/rule/rule.component.ts | 9 +-- .../overview/about-overview-page.component.ts | 3 +- .../about/overview/about-overview-page.html | 2 +- ...eate-or-update-account-dialog.component.ts | 3 +- .../create-or-update-account-dialog.html | 2 +- .../pages/landing/landing-page.component.ts | 2 - .../src/app/pages/landing/landing-page.html | 6 +- ...ate-or-update-activity-dialog.component.ts | 2 - .../create-or-update-activity-dialog.html | 55 +++++++------- .../allocations/allocations-page.component.ts | 4 +- .../allocations/allocations-page.html | 4 +- .../app/pages/portfolio/fire/fire-page.html | 2 +- .../portfolio/x-ray/x-ray-page.component.html | 7 +- .../portfolio/x-ray/x-ray-page.component.ts | 2 - .../pages/pricing/pricing-page.component.ts | 2 - .../src/app/pages/pricing/pricing-page.html | 4 +- .../app/pages/public/public-page.component.ts | 2 - .../src/app/pages/public/public-page.html | 2 +- .../accounts-table.component.html | 6 +- .../accounts-table.component.ts | 2 - .../activities-table.component.html | 8 +-- .../activity-type.component.html | 2 +- .../activity-type/activity-type.component.ts | 3 +- .../lib/benchmark/benchmark.component.html | 6 +- .../src/lib/benchmark/benchmark.component.ts | 2 - .../dialog-header.component.html | 2 +- .../dialog-header/dialog-header.component.ts | 3 +- .../entity-logo/entity-logo.component.html | 2 +- .../lib/entity-logo/entity-logo.component.ts | 2 - ...storical-market-data-editor.component.html | 2 +- libs/ui/src/lib/logo/logo.component.html | 2 +- libs/ui/src/lib/logo/logo.component.ts | 2 - .../membership-card.component.html | 4 +- .../membership-card.component.ts | 9 +-- libs/ui/src/lib/toggle/toggle.component.html | 4 +- libs/ui/src/lib/toggle/toggle.component.ts | 3 +- .../top-holdings/top-holdings.component.html | 6 +- .../top-holdings/top-holdings.component.ts | 2 - .../trend-indicator.component.html | 4 +- libs/ui/src/lib/value/value.component.html | 6 +- 61 files changed, 141 insertions(+), 226 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50ec99a82..b65a289e3 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 +### Changed + +- Migrated various components from `NgClass` to class bindings + ### Fixed - Fixed a visual regression in the bottom navigation bar on mobile diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index f51315e91..05f13f804 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -20,7 +20,6 @@ import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table'; import { DataService } from '@ghostfolio/ui/services'; import { GfValueComponent } from '@ghostfolio/ui/value'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -57,7 +56,6 @@ import { AccountDetailDialogParams } from './interfaces/interfaces'; changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'd-flex flex-column h-100' }, imports: [ - CommonModule, GfAccountBalancesComponent, GfActivitiesTableComponent, GfDialogFooterComponent, diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html index e63fb9fc1..73412d49d 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html @@ -91,8 +91,8 @@ diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.html b/apps/client/src/app/components/admin-jobs/admin-jobs.html index 1570ce82b..d57704b86 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.html +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -172,7 +172,7 @@ } @else if (element.state === 'failed') { {{ element.id }} {{ `${(element.id | slice: 0 : 5)}...` }} @if (element.subscription?.expiresAt) { @@ -273,11 +269,11 @@ @if (user) { -
+
@@ -18,7 +18,7 @@ class="d-none d-sm-block rounded" i18n mat-button - [ngClass]="{ + [class]="{ 'font-weight-bold': currentRoute === internalRoutes.home.path || currentRoute === internalRoutes.zen.path, @@ -35,7 +35,7 @@ class="d-none d-sm-block rounded" i18n mat-button - [ngClass]="{ + [class]="{ 'font-weight-bold': currentRoute === internalRoutes.portfolio.path, 'text-decoration-underline': currentRoute === internalRoutes.portfolio.path @@ -49,7 +49,7 @@ class="d-none d-sm-block rounded" i18n mat-button - [ngClass]="{ + [class]="{ 'font-weight-bold': currentRoute === internalRoutes.accounts.path, 'text-decoration-underline': currentRoute === internalRoutes.accounts.path @@ -64,7 +64,7 @@ class="d-none d-sm-block rounded" i18n mat-button - [ngClass]="{ + [class]="{ 'font-weight-bold': currentRoute === internalRoutes.adminControl.path, 'text-decoration-underline': @@ -80,7 +80,7 @@ class="d-none d-sm-block rounded" i18n mat-button - [ngClass]="{ + [class]="{ 'font-weight-bold': currentRoute === routeResources, 'text-decoration-underline': currentRoute === routeResources }" @@ -95,7 +95,7 @@ Overview @@ -251,9 +250,9 @@ class="d-flex d-sm-none" i18n mat-menu-item - [ngClass]="{ - 'font-weight-bold': currentRoute === internalRoutes.portfolio.path - }" + [class.font-weight-bold]=" + currentRoute === internalRoutes.portfolio.path + " [routerLink]="routerLinkPortfolio" >Portfolio @@ -261,18 +260,18 @@ class="d-flex d-sm-none" i18n mat-menu-item - [ngClass]="{ - 'font-weight-bold': currentRoute === internalRoutes.accounts.path - }" + [class.font-weight-bold]=" + currentRoute === internalRoutes.accounts.path + " [routerLink]="routerLinkAccounts" >Accounts My Ghostfolio @@ -281,10 +280,9 @@ class="d-flex d-sm-none" i18n mat-menu-item - [ngClass]="{ - 'font-weight-bold': - currentRoute === internalRoutes.adminControl.path - }" + [class.font-weight-bold]=" + currentRoute === internalRoutes.adminControl.path + " [routerLink]="routerLinkAdminControl" >Admin Control @@ -294,9 +292,7 @@ class="d-flex d-sm-none" i18n mat-menu-item - [ngClass]="{ - 'font-weight-bold': currentRoute === routeResources - }" + [class.font-weight-bold]="currentRoute === routeResources" [routerLink]="routerLinkResources" >Resources @@ -306,7 +302,7 @@ @@ -321,7 +317,7 @@ class="d-flex d-sm-none" i18n mat-menu-item - [ngClass]="{ 'font-weight-bold': currentRoute === routeAbout }" + [class.font-weight-bold]="currentRoute === routeAbout" [routerLink]="routerLinkAbout" >About Ghostfolio @@ -332,11 +328,11 @@ } @if (user === null) { -
+
} -
+ diff --git a/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts b/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts index 04c0f507c..dd3ce248e 100644 --- a/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts +++ b/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts @@ -10,7 +10,6 @@ import { import { NotificationService } from '@ghostfolio/ui/notifications'; import { GfValueComponent } from '@ghostfolio/ui/value'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -28,7 +27,7 @@ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, GfValueComponent, IonIcon, NgxSkeletonLoaderModule], + imports: [GfValueComponent, IonIcon, NgxSkeletonLoaderModule], selector: 'gf-portfolio-performance', styleUrls: ['./portfolio-performance.component.scss'], templateUrl: './portfolio-performance.component.html' 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 0e26a49a8..e14479425 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 @@ -181,12 +181,11 @@
+
Threshold Min:
-
+
Threshold Max: -
+
Platform
-
+
Account @@ -103,18 +104,16 @@
-
+
Update Cash Balance
Name, symbol or ISIN @@ -127,9 +126,9 @@
Name @@ -173,13 +172,12 @@
Quantity @@ -188,7 +186,7 @@
@@ -215,7 +213,7 @@
@for (currency of currencies; track currency) { @@ -247,12 +245,11 @@
Fee @@ -260,7 +257,7 @@
{{ activityForm.get('currencyOfUnitPrice')?.value }}
@@ -280,7 +277,7 @@
Asset Class @@ -299,7 +296,7 @@
Asset Sub Class diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts index ebfd336d3..a7f8cd2ec 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts @@ -21,7 +21,6 @@ import { GfTopHoldingsComponent } from '@ghostfolio/ui/top-holdings'; import { GfValueComponent } from '@ghostfolio/ui/value'; import { GfWorldMapChartComponent } from '@ghostfolio/ui/world-map-chart'; -import { NgClass } from '@angular/common'; import { ChangeDetectorRef, Component, @@ -51,8 +50,7 @@ import { DeviceDetectorService } from 'ngx-device-detector'; GfValueComponent, GfWorldMapChartComponent, MatCardModule, - MatProgressBarModule, - NgClass + MatProgressBarModule ], selector: 'gf-allocations-page', styleUrls: ['./allocations-page.scss'], 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 33431ce5d..a1000189b 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html @@ -319,9 +319,7 @@
diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.html b/apps/client/src/app/pages/portfolio/fire/fire-page.html index cabd7fcb4..76ad6cbf6 100644 --- a/apps/client/src/app/pages/portfolio/fire/fire-page.html +++ b/apps/client/src/app/pages/portfolio/fire/fire-page.html @@ -62,7 +62,7 @@ />
} @else { -
+
If you retire today, you would be able to withdraw @for (category of categories; track category.key) { -
+

{{ category.name }} @if (user?.subscription?.type === 'Basic') { diff --git a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts index 650522896..0d37bab9b 100644 --- a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts +++ b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts @@ -12,7 +12,6 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { DataService } from '@ghostfolio/ui/services'; -import { NgClass } from '@angular/common'; import { ChangeDetectorRef, Component, DestroyRef } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { IonIcon } from '@ionic/angular/standalone'; @@ -29,7 +28,6 @@ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; GfPremiumIndicatorComponent, GfRulesComponent, IonIcon, - NgClass, NgxSkeletonLoaderModule ], selector: 'gf-x-ray-page', diff --git a/apps/client/src/app/pages/pricing/pricing-page.component.ts b/apps/client/src/app/pages/pricing/pricing-page.component.ts index 80a62d693..a1fe0c0b5 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.component.ts +++ b/apps/client/src/app/pages/pricing/pricing-page.component.ts @@ -7,7 +7,6 @@ import { NotificationService } from '@ghostfolio/ui/notifications'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { DataService } from '@ghostfolio/ui/services'; -import { CommonModule } from '@angular/common'; import { ChangeDetectorRef, Component, @@ -35,7 +34,6 @@ import { catchError } from 'rxjs/operators'; @Component({ host: { class: 'page' }, imports: [ - CommonModule, GfPremiumIndicatorComponent, IonIcon, MatButtonModule, diff --git a/apps/client/src/app/pages/pricing/pricing-page.html b/apps/client/src/app/pages/pricing/pricing-page.html index d755cd303..b951baa98 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.html +++ b/apps/client/src/app/pages/pricing/pricing-page.html @@ -103,7 +103,7 @@
@@ -169,7 +169,7 @@ @if (label) { diff --git a/apps/client/src/app/pages/public/public-page.component.ts b/apps/client/src/app/pages/public/public-page.component.ts index ab2bd2b4a..c12a2d5de 100644 --- a/apps/client/src/app/pages/public/public-page.component.ts +++ b/apps/client/src/app/pages/public/public-page.component.ts @@ -14,7 +14,6 @@ import { DataService } from '@ghostfolio/ui/services'; import { GfValueComponent } from '@ghostfolio/ui/value'; import { GfWorldMapChartComponent } from '@ghostfolio/ui/world-map-chart'; -import { CommonModule } from '@angular/common'; import { HttpErrorResponse } from '@angular/common/http'; import { ChangeDetectorRef, @@ -40,7 +39,6 @@ import { catchError } from 'rxjs/operators'; @Component({ host: { class: 'page' }, imports: [ - CommonModule, GfActivitiesTableComponent, GfHoldingsTableComponent, GfPortfolioProportionChartComponent, diff --git a/apps/client/src/app/pages/public/public-page.html b/apps/client/src/app/pages/public/public-page.html index 44696cd7c..57bc1e95f 100644 --- a/apps/client/src/app/pages/public/public-page.html +++ b/apps/client/src/app/pages/public/public-page.html @@ -202,7 +202,7 @@

} -
+
diff --git a/libs/ui/src/lib/accounts-table/accounts-table.component.html b/libs/ui/src/lib/accounts-table/accounts-table.component.html index 15f5bb21f..1ba0ecc56 100644 --- a/libs/ui/src/lib/accounts-table/accounts-table.component.html +++ b/libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -340,15 +340,13 @@
diff --git a/libs/ui/src/lib/accounts-table/accounts-table.component.ts b/libs/ui/src/lib/accounts-table/accounts-table.component.ts index aa104f795..1526ffea5 100644 --- a/libs/ui/src/lib/accounts-table/accounts-table.component.ts +++ b/libs/ui/src/lib/accounts-table/accounts-table.component.ts @@ -4,7 +4,6 @@ import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { NotificationService } from '@ghostfolio/ui/notifications'; import { GfValueComponent } from '@ghostfolio/ui/value'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -37,7 +36,6 @@ import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, imports: [ - CommonModule, GfEntityLogoComponent, GfValueComponent, IonIcon, diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index 5a4ae641c..ae5cf0384 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -516,9 +516,7 @@ @@ -536,11 +534,9 @@ } } diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts index 5dbc4648b..73edfd482 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark.component.ts @@ -11,7 +11,6 @@ import { } from '@ghostfolio/common/interfaces'; import { NotificationService } from '@ghostfolio/ui/notifications'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -46,7 +45,6 @@ import { BenchmarkDetailDialogParams } from './benchmark-detail-dialog/interface @Component({ changeDetection: ChangeDetectionStrategy.OnPush, imports: [ - CommonModule, GfTrendIndicatorComponent, GfValueComponent, IonIcon, diff --git a/libs/ui/src/lib/dialog-header/dialog-header.component.html b/libs/ui/src/lib/dialog-header/dialog-header.component.html index 019d85a52..ed9fc41f4 100644 --- a/libs/ui/src/lib/dialog-header/dialog-header.component.html +++ b/libs/ui/src/lib/dialog-header/dialog-header.component.html @@ -1,7 +1,7 @@
{{ title }} @if (deviceType !== 'mobile') { diff --git a/libs/ui/src/lib/dialog-header/dialog-header.component.ts b/libs/ui/src/lib/dialog-header/dialog-header.component.ts index ce3173d0e..4868b22b8 100644 --- a/libs/ui/src/lib/dialog-header/dialog-header.component.ts +++ b/libs/ui/src/lib/dialog-header/dialog-header.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -15,7 +14,7 @@ import { close } from 'ionicons/icons'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'justify-content-center' }, - imports: [CommonModule, IonIcon, MatButtonModule, MatDialogModule], + imports: [IonIcon, MatButtonModule, MatDialogModule], selector: 'gf-dialog-header', styleUrls: ['./dialog-header.component.scss'], templateUrl: './dialog-header.component.html' diff --git a/libs/ui/src/lib/entity-logo/entity-logo.component.html b/libs/ui/src/lib/entity-logo/entity-logo.component.html index 942ea23e5..d8aeba136 100644 --- a/libs/ui/src/lib/entity-logo/entity-logo.component.html +++ b/libs/ui/src/lib/entity-logo/entity-logo.component.html @@ -1,7 +1,7 @@ @if (src) { diff --git a/libs/ui/src/lib/entity-logo/entity-logo.component.ts b/libs/ui/src/lib/entity-logo/entity-logo.component.ts index 212e232be..ba7d64ae0 100644 --- a/libs/ui/src/lib/entity-logo/entity-logo.component.ts +++ b/libs/ui/src/lib/entity-logo/entity-logo.component.ts @@ -1,6 +1,5 @@ import { EntityLogoImageSourceService } from '@ghostfolio/ui/entity-logo/entity-logo-image-source.service'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -12,7 +11,6 @@ import { DataSource } from '@prisma/client'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-entity-logo', styleUrls: ['./entity-logo.component.scss'], diff --git a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html index 91e3dd8d7..93fd8d97f 100644 --- a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html +++ b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html @@ -6,7 +6,7 @@ @for (day of days; track day) {
+ > @if (showLabel) { {{ label ?? 'Ghostfolio' }} } diff --git a/libs/ui/src/lib/logo/logo.component.ts b/libs/ui/src/lib/logo/logo.component.ts index 0b766429c..a5f6a58e4 100644 --- a/libs/ui/src/lib/logo/logo.component.ts +++ b/libs/ui/src/lib/logo/logo.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -9,7 +8,6 @@ import { @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-logo', styleUrls: ['./logo.component.scss'], diff --git a/libs/ui/src/lib/membership-card/membership-card.component.html b/libs/ui/src/lib/membership-card/membership-card.component.html index 9faac0d3d..ab014901b 100644 --- a/libs/ui/src/lib/membership-card/membership-card.component.html +++ b/libs/ui/src/lib/membership-card/membership-card.component.html @@ -1,5 +1,5 @@
-
+ diff --git a/libs/ui/src/lib/membership-card/membership-card.component.ts b/libs/ui/src/lib/membership-card/membership-card.component.ts index be223758d..96260ae6f 100644 --- a/libs/ui/src/lib/membership-card/membership-card.component.ts +++ b/libs/ui/src/lib/membership-card/membership-card.component.ts @@ -1,6 +1,5 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -19,13 +18,7 @@ import { GfLogoComponent } from '../logo'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [ - CommonModule, - GfLogoComponent, - IonIcon, - MatButtonModule, - RouterModule - ], + imports: [GfLogoComponent, IonIcon, MatButtonModule, RouterModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-membership-card', styleUrls: ['./membership-card.component.scss'], diff --git a/libs/ui/src/lib/toggle/toggle.component.html b/libs/ui/src/lib/toggle/toggle.component.html index d6271ef58..3fe7d00ba 100644 --- a/libs/ui/src/lib/toggle/toggle.component.html +++ b/libs/ui/src/lib/toggle/toggle.component.html @@ -6,12 +6,12 @@ @for (option of options(); track option) { {{ option.label }} diff --git a/libs/ui/src/lib/toggle/toggle.component.ts b/libs/ui/src/lib/toggle/toggle.component.ts index db7c45487..9324b3be7 100644 --- a/libs/ui/src/lib/toggle/toggle.component.ts +++ b/libs/ui/src/lib/toggle/toggle.component.ts @@ -1,6 +1,5 @@ import { ToggleOption } from '@ghostfolio/common/interfaces'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -13,7 +12,7 @@ import { MatRadioModule } from '@angular/material/radio'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, MatRadioModule, ReactiveFormsModule], + imports: [MatRadioModule, ReactiveFormsModule], selector: 'gf-toggle', styleUrls: ['./toggle.component.scss'], templateUrl: './toggle.component.html' diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.html b/libs/ui/src/lib/top-holdings/top-holdings.component.html index 06b27b97f..71e94ff4e 100644 --- a/libs/ui/src/lib/top-holdings/top-holdings.component.html +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -120,7 +120,7 @@ 0, expanded: element.expand ?? false }" @@ -150,7 +150,7 @@ *matRowDef="let row; columns: ['expandedDetail']" class="holding-detail" mat-row - [ngClass]="{ 'd-none': !row.parents?.length }" + [class.d-none]="!row.parents?.length" >
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 7c9ae033f..a10d3c897 100644 --- a/libs/ui/src/lib/top-holdings/top-holdings.component.ts +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.ts @@ -12,7 +12,6 @@ import { transition, trigger } from '@angular/animations'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -44,7 +43,6 @@ import { GfValueComponent } from '../value/value.component'; ], changeDetection: ChangeDetectionStrategy.OnPush, imports: [ - CommonModule, GfSymbolPipe, GfValueComponent, MatButtonModule, diff --git a/libs/ui/src/lib/trend-indicator/trend-indicator.component.html b/libs/ui/src/lib/trend-indicator/trend-indicator.component.html index b9f65a2ea..7cf6210f8 100644 --- a/libs/ui/src/lib/trend-indicator/trend-indicator.component.html +++ b/libs/ui/src/lib/trend-indicator/trend-indicator.component.html @@ -16,7 +16,7 @@ } @else if (value > -0.0005 && value < 0.0005) { @@ -29,7 +29,7 @@ } diff --git a/libs/ui/src/lib/value/value.component.html b/libs/ui/src/lib/value/value.component.html index 48e9c02e7..57949fbe2 100644 --- a/libs/ui/src/lib/value/value.component.html +++ b/libs/ui/src/lib/value/value.component.html @@ -27,7 +27,7 @@ @if (value || value === 0 || value === null) {
@if (isNumber || value === null) { @if (colorizeSign && !useAbsoluteValue) { @@ -40,7 +40,7 @@ }
Date: Wed, 6 May 2026 08:01:28 +0200 Subject: [PATCH 04/11] Task/upgrade Nx to version 22.7.1 (#6825) * Upgrade Nx to version 22.7.1 * Update changelog --- .gitignore | 2 + .prettierignore | 1 + CHANGELOG.md | 1 + package-lock.json | 1299 +++++++++++++++++++++------------------------ package.json | 22 +- 5 files changed, 624 insertions(+), 701 deletions(-) diff --git a/.gitignore b/.gitignore index 0f5a1651e..ab31ae269 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,8 @@ npm-debug.log .env.prod .github/instructions/nx.instructions.md .nx/cache +.nx/polygraph +.nx/self-healing .nx/workspace-data /.sass-cache /connect.lock diff --git a/.prettierignore b/.prettierignore index 5524c76f6..d04427c52 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,6 @@ /.agents/skills/angular-developer /.nx/cache +/.nx/self-healing /.nx/workspace-data /apps/client/src/polyfills.ts /dist diff --git a/CHANGELOG.md b/CHANGELOG.md index b65a289e3..27a02a0e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Migrated various components from `NgClass` to class bindings +- Upgraded `Nx` from version `22.6.5` to `22.7.1` ### Fixed diff --git a/package-lock.json b/package-lock.json index f507d8eb8..e730f44f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -113,16 +113,16 @@ "@eslint/js": "9.35.0", "@nestjs/schematics": "11.1.0", "@nestjs/testing": "11.1.19", - "@nx/angular": "22.6.5", - "@nx/eslint-plugin": "22.6.5", - "@nx/jest": "22.6.5", - "@nx/js": "22.6.5", - "@nx/module-federation": "22.6.5", - "@nx/nest": "22.6.5", - "@nx/node": "22.6.5", - "@nx/storybook": "22.6.5", - "@nx/web": "22.6.5", - "@nx/workspace": "22.6.5", + "@nx/angular": "22.7.1", + "@nx/eslint-plugin": "22.7.1", + "@nx/jest": "22.7.1", + "@nx/js": "22.7.1", + "@nx/module-federation": "22.7.1", + "@nx/nest": "22.7.1", + "@nx/node": "22.7.1", + "@nx/storybook": "22.7.1", + "@nx/web": "22.7.1", + "@nx/workspace": "22.7.1", "@schematics/angular": "21.2.6", "@storybook/addon-docs": "10.1.10", "@storybook/addon-themes": "10.1.10", @@ -149,7 +149,7 @@ "jest": "30.2.0", "jest-environment-jsdom": "30.2.0", "jest-preset-angular": "16.0.0", - "nx": "22.6.5", + "nx": "22.7.1", "prettier": "3.8.3", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "7.7.0", @@ -3661,9 +3661,9 @@ } }, "node_modules/@colordx/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.2.0.tgz", - "integrity": "sha512-wifnqsGCXRh+lJdX4975nKEPJaSk7k8rMiA/VeGrS4tOTn06WZrow6cUA7wFJKPXfcqj0rXeH4BMgGoKZvBf7g==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.4.3.tgz", + "integrity": "sha512-kIxYSfA5T8HXjav55UaaH/o/cKivF6jCCGIb8eqtcsfI46wsvlSiT8jMDyrl779qLec3c2c2oHBZo4oAhvbjrQ==", "dev": true, "license": "MIT" }, @@ -7393,13 +7393,13 @@ } }, "node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.3.3.tgz", - "integrity": "sha512-W2jQ3Wuqree9Dq3UAx8jGbYtvHuuYgzrd2j9FP8Bt6NaynaNU1yYG86MBnAhZJPTltex0CguudR1dgFpYdvLUg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-yxDv/FJoLiKo2eqIcEWvSnSpJgyYkCzJvNaFsQ2QE3rNv68IeAarlSzCo+d0QyQoPJnTETyHsOh1SSBazIzecw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "2.3.3", + "@module-federation/sdk": "2.4.0", "@types/semver": "7.5.8", "semver": "7.6.3" } @@ -7418,14 +7418,14 @@ } }, "node_modules/@module-federation/cli": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.3.3.tgz", - "integrity": "sha512-g3f3aEruv07zK4VcUlAllswrp2ncA/jF0P0yoEWNRa9K7N+xNCfqcdzw2aVWOJ30qNMurhLWuyzYqfDIx0LpfQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.4.0.tgz", + "integrity": "sha512-c46g9srroc2hDfrlHyd4Y404SLnw3v9t7Kqij+yK01Hx8C2FyZpyanTGUHVyrmzqp/0y3lPrWURUHkHfk/cJQA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "2.3.3", - "@module-federation/sdk": "2.3.3", + "@module-federation/dts-plugin": "2.4.0", + "@module-federation/sdk": "2.4.0", "commander": "11.1.0", "jiti": "2.4.2" }, @@ -7436,40 +7436,17 @@ "node": ">=16.0.0" } }, - "node_modules/@module-federation/data-prefetch": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-2.3.3.tgz", - "integrity": "sha512-ZM1QtyjbWYnhUizHFhwYjHGXlkZek3vzTpL35d5FkAhVrOU0u0Qv6zpZjdcCm0FJznqVsUQx1w0vagUyGWQf0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/runtime": "2.3.3", - "@module-federation/sdk": "2.3.3" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, "node_modules/@module-federation/dts-plugin": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.3.3.tgz", - "integrity": "sha512-VNtURt+hvieNKCBleAqHKffLAU4clKmuuqLQIbvDkFbGe4bo7hUaq5DruTnJBWWDOizZx0OQrdQYPijCnBK6UQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.4.0.tgz", + "integrity": "sha512-sa6v5ByyqMRHzpwDu0zc7s5mZ39EFIkG0jkRfZU09pzkrJEIy4uZ1Kt9SLysFB8RBMIAvAakAfqDlVWvf1lndg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.3.3", - "@module-federation/managers": "2.3.3", - "@module-federation/sdk": "2.3.3", - "@module-federation/third-party-dts-extractor": "2.3.3", + "@module-federation/error-codes": "2.4.0", + "@module-federation/managers": "2.4.0", + "@module-federation/sdk": "2.4.0", + "@module-federation/third-party-dts-extractor": "2.4.0", "adm-zip": "0.5.10", "ansi-colors": "4.1.3", "isomorphic-ws": "5.0.0", @@ -7498,24 +7475,23 @@ } }, "node_modules/@module-federation/enhanced": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.3.3.tgz", - "integrity": "sha512-BJSs56lqO9NI9aC+hVhg2CU/UwG1TphVl1b7WBx6Jv6DYUyVQbgXeQpgqYVsxYVRKYOl7eDZmjXl2eA/n1IP/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "2.3.3", - "@module-federation/cli": "2.3.3", - "@module-federation/data-prefetch": "2.3.3", - "@module-federation/dts-plugin": "2.3.3", - "@module-federation/error-codes": "2.3.3", - "@module-federation/inject-external-runtime-core-plugin": "2.3.3", - "@module-federation/managers": "2.3.3", - "@module-federation/manifest": "2.3.3", - "@module-federation/rspack": "2.3.3", - "@module-federation/runtime-tools": "2.3.3", - "@module-federation/sdk": "2.3.3", - "@module-federation/webpack-bundler-runtime": "2.3.3", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.4.0.tgz", + "integrity": "sha512-NiccK03x7V6bK2LvJNuW520kT+Onx+LJe8lyPsENjXctECCIFJdJOmYr8ABif/kLayWKrrYCzCGVNNiQXANEGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "2.4.0", + "@module-federation/cli": "2.4.0", + "@module-federation/dts-plugin": "2.4.0", + "@module-federation/error-codes": "2.4.0", + "@module-federation/inject-external-runtime-core-plugin": "2.4.0", + "@module-federation/managers": "2.4.0", + "@module-federation/manifest": "2.4.0", + "@module-federation/rspack": "2.4.0", + "@module-federation/runtime-tools": "2.4.0", + "@module-federation/sdk": "2.4.0", + "@module-federation/webpack-bundler-runtime": "2.4.0", "schema-utils": "4.3.0", "tapable": "2.3.0", "upath": "2.0.1" @@ -7579,56 +7555,56 @@ } }, "node_modules/@module-federation/error-codes": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.3.3.tgz", - "integrity": "sha512-UVtKBoKnRDcHgByIDvPRZSxQqjqbNH7NvJm1KHLoce33+EDiIdZYs0HvvUQv43RgESpB9s7HjrqFlq3bEcAgfQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.4.0.tgz", + "integrity": "sha512-ktCZtwOoiKR1URJyBt223OsOFAUvc13rICYif55mt7+DomtELlh5FicnEz6mPLBUwmNM9vyBMvkxOdp+fQ5oUg==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.3.3.tgz", - "integrity": "sha512-ImSft6hOkMdnpZX8O+RydwkYENxhAwT92n1OAT3Xf01DXMrEpSO0PqBlPGgontxuiaV9dM2/xWSLGuIWaOtupA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.4.0.tgz", + "integrity": "sha512-GucUMQmQXcnJC/OnJGvMz3Qy7ap8nAffhQPwDpOSi0Qwm+Iq/ppzG8N3tlLBDmv/O8hiF8HHlg789XK2kcCQtg==", "dev": true, "license": "MIT", "peerDependencies": { - "@module-federation/runtime-tools": "2.3.3" + "@module-federation/runtime-tools": "2.4.0" } }, "node_modules/@module-federation/managers": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.3.3.tgz", - "integrity": "sha512-sYL0t2guakJ+nDSQANH54uz5q1YxaNCn5C3lr+7BoRD49dX7Z6k7094yqOPEy8trzqdIoQVFpgewVA6IC/FeyQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.4.0.tgz", + "integrity": "sha512-Z8j6aog44G1gt4yIAaeDowwZ7xg0aAxTA1Hq69euJK9cR9MDEaLbLUk57jDoiRj6xLwlCiw7ozY+U15BQATk6Q==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "2.3.3", + "@module-federation/sdk": "2.4.0", "find-pkg": "2.0.0" } }, "node_modules/@module-federation/manifest": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.3.3.tgz", - "integrity": "sha512-mAEXuo5sGt8FUDzftU8f0ci0PbsZIDcLRYX9AkXwbXg0JRyVEvWyiBrEKF+zZuy7YM7eRdyp6JjLJPDzufhj5w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.4.0.tgz", + "integrity": "sha512-ZL+W5rbtgRf9TWRP7Dupt/Svia4bJEOS6gWSj9jzemiLPRPkMO5hjWZKVHIc8oG+Vb25yzozFMmQ+luGi695wg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "2.3.3", - "@module-federation/managers": "2.3.3", - "@module-federation/sdk": "2.3.3", + "@module-federation/dts-plugin": "2.4.0", + "@module-federation/managers": "2.4.0", + "@module-federation/sdk": "2.4.0", "find-pkg": "2.0.0" } }, "node_modules/@module-federation/node": { - "version": "2.7.41", - "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.41.tgz", - "integrity": "sha512-ZaNrfX+7ua8UvnRa6qgrDtViU9Oz3oBGpFprldU8ek0NB2QWNACu9RMU7fHdTD/FKlzGVLi/LgdKnNKkmJD2TA==", + "version": "2.7.42", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.42.tgz", + "integrity": "sha512-aX/T4L9bPbOgNLIW+30k/dA2Iohoy9/jf4yG1ka6Hkuo5h7iEBeZiQkwIqC06cnCbtKL1HnAiYlXHmrDPW5xvg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/enhanced": "2.3.3", - "@module-federation/runtime": "2.3.3", - "@module-federation/sdk": "2.3.3", + "@module-federation/enhanced": "2.4.0", + "@module-federation/runtime": "2.4.0", + "@module-federation/sdk": "2.4.0", "encoding": "0.1.13", "node-fetch": "2.7.0", "tapable": "2.3.0" @@ -7642,66 +7618,20 @@ } } }, - "node_modules/@module-federation/node/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@module-federation/node/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@module-federation/node/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/@module-federation/node/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/@module-federation/rspack": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.3.3.tgz", - "integrity": "sha512-4s3G+wXZ6J3rKe0EeZnGLQUM7y+qpiI5NM3U6ylZuxD8q7mAwQVHThbH6ruDYUNDVEOc6N0j/+/LdfGRw+e5xw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.4.0.tgz", + "integrity": "sha512-NWH5Vaj/fA9R7PfbwTuE1Ty/pfiAt12On0E3FzoeVPCyb5MxO1i0z+xxRHbPhF4ZOrAPGEMaMQ8Z9vH94EiElw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "2.3.3", - "@module-federation/dts-plugin": "2.3.3", - "@module-federation/inject-external-runtime-core-plugin": "2.3.3", - "@module-federation/managers": "2.3.3", - "@module-federation/manifest": "2.3.3", - "@module-federation/runtime-tools": "2.3.3", - "@module-federation/sdk": "2.3.3" + "@module-federation/bridge-react-webpack-plugin": "2.4.0", + "@module-federation/dts-plugin": "2.4.0", + "@module-federation/inject-external-runtime-core-plugin": "2.4.0", + "@module-federation/managers": "2.4.0", + "@module-federation/manifest": "2.4.0", + "@module-federation/runtime-tools": "2.4.0", + "@module-federation/sdk": "2.4.0" }, "peerDependencies": { "@rspack/core": "^0.7.0 || ^1.0.0 || ^2.0.0-0", @@ -7718,47 +7648,47 @@ } }, "node_modules/@module-federation/runtime": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.3.3.tgz", - "integrity": "sha512-JYJ3qv9V85DtBtT/ppDuJNwBTUrYqqZDYcyiTzwY5+44dC5QPvgJ//F+BOhAhZ02WkZV0b4jsKTyLOC3vXKGqQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.4.0.tgz", + "integrity": "sha512-IrLAMwUuteRgFlEkg9jrn4bk8uC897FnXvfNmkKD8/qIoNtSd+32e5ouQn+PEYbX/RjRUB1TYveY6rYHpTPkyg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.3.3", - "@module-federation/runtime-core": "2.3.3", - "@module-federation/sdk": "2.3.3" + "@module-federation/error-codes": "2.4.0", + "@module-federation/runtime-core": "2.4.0", + "@module-federation/sdk": "2.4.0" } }, "node_modules/@module-federation/runtime-core": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.3.3.tgz", - "integrity": "sha512-B07LDH9KxhBO3GbULGW64mQFVQBtrEd3PoaCBm7XR1IbU8rMQUJQjDNVZgXYcyhRPBVP+3KWZuiaKFRiNb6PQw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.4.0.tgz", + "integrity": "sha512-0S8fDw28DXDW17lTQwq5vfJWe2lG0Lw3+w4vk3DVVImLwXXay+OGxLDxzWUfypWcMznfpnoAnFUMO3PtuXziuA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.3.3", - "@module-federation/sdk": "2.3.3" + "@module-federation/error-codes": "2.4.0", + "@module-federation/sdk": "2.4.0" } }, "node_modules/@module-federation/runtime-tools": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.3.3.tgz", - "integrity": "sha512-XODzyLbBYcy4wnYBXKIBqaHPVfBx1HshGdjZmSctDDnx9/VYgdx9DShb6UI+WuQBKJgPzTcx4xbvbCM4SdMilQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.4.0.tgz", + "integrity": "sha512-BWQsGT4EWscV9bx3bVHEwp6lERBsiYm7rnPiDpwd2fx+hGEpz1IM9Pz35VryHNDXYxw7MzaAuwTMM+L7uN8OYQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "2.3.3", - "@module-federation/webpack-bundler-runtime": "2.3.3" + "@module-federation/runtime": "2.4.0", + "@module-federation/webpack-bundler-runtime": "2.4.0" } }, "node_modules/@module-federation/sdk": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.3.3.tgz", - "integrity": "sha512-mwCS+LQdqiSc6fM5iz/S60ibaFNSH6kNqlZkCRIuS4yjdZ+jgnihz+6xp1QzppvfFgKLhEHBiXOmcYOdk3Ckew==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.4.0.tgz", + "integrity": "sha512-eZDdF5B69W9npuka0VL24FY7XDM+YAwwfkscSeWOSqv4/8Hm0xmcmSurlP6NIOrwbeogerRCtEcnx/TFXYjoow==", "dev": true, "license": "MIT", "peerDependencies": { - "node-fetch": "^3.3.2" + "node-fetch": "^2.7.0 || ^3.3.2" }, "peerDependenciesMeta": { "node-fetch": { @@ -7767,9 +7697,9 @@ } }, "node_modules/@module-federation/third-party-dts-extractor": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.3.3.tgz", - "integrity": "sha512-rR94TjC1QVQLQPTazI0waLc76hI8dnv6aHTl+PUEIY9s5hXp8TA85XS0QJQqIf2KTjlPgZbWAwyFjOAJluTjaw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.4.0.tgz", + "integrity": "sha512-4v24t6L3dET/6abMOM2fiM3roT0c8mi21/i+uDc6WG7U0i+Xp2SojBppTs6gnT0lkwMTe+u6xIpNQakdUftHsg==", "dev": true, "license": "MIT", "dependencies": { @@ -7778,15 +7708,15 @@ } }, "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.3.3.tgz", - "integrity": "sha512-W+P6ZF9J3gwnQuoF07YV0OiR1D6sI/uErUu4+c3QXxka3orANUHujkddNSsDxL1obAGoJa7Da99crZKf7u2j/w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.4.0.tgz", + "integrity": "sha512-Ntx0+QsgcwtXlpGjL/Vf2PMdPjUHl07b3yM4kBc1kbRogW3Ee84QneBRi/X3w4/jlz4JKbHjD+CMXaqi2W6hgw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "2.3.3", - "@module-federation/runtime": "2.3.3", - "@module-federation/sdk": "2.3.3" + "@module-federation/error-codes": "2.4.0", + "@module-federation/runtime": "2.4.0", + "@module-federation/sdk": "2.4.0" } }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { @@ -9045,20 +8975,20 @@ } }, "node_modules/@nx/angular": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.6.5.tgz", - "integrity": "sha512-NPkrGGatlUUK7twHKYpv3mv6jYL6dRiqdPuqAhQfmUnuz5lA4ZhpCfwEBKUFEKsGNwOft0ZCGZdSdODliaKZzA==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-22.7.1.tgz", + "integrity": "sha512-tgEKO7fVQPchDISJZfI256ggzYoPcADomLDQFqs7oYTBaH7ZMDMzTOMRprrittbd1Me4o568ttdh/1Ya1fFv9g==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", - "@nx/eslint": "22.6.5", - "@nx/js": "22.6.5", - "@nx/module-federation": "22.6.5", - "@nx/rspack": "22.6.5", - "@nx/web": "22.6.5", - "@nx/webpack": "22.6.5", - "@nx/workspace": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/eslint": "22.7.1", + "@nx/js": "22.7.1", + "@nx/module-federation": "22.7.1", + "@nx/rspack": "22.7.1", + "@nx/web": "22.7.1", + "@nx/webpack": "22.7.1", + "@nx/workspace": "22.7.1", "@phenomnomnominal/tsquery": "~6.1.4", "@typescript-eslint/type-utils": "^8.0.0", "enquirer": "~2.3.6", @@ -9106,15 +9036,15 @@ } }, "node_modules/@nx/cypress": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-22.6.5.tgz", - "integrity": "sha512-8pVXkVryoLRDEFjKrOIcPArY8RObf7SC1U8WMyxNS28Hs32eaENWNXtOncrXQz98jWhpi4jvmr0WPLCr9NCFsA==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-22.7.1.tgz", + "integrity": "sha512-ieypLZFh4iCjfrcSWeYOPk/2Vg8O/CtmQBqqVhPdBLP9p0zgMBvym0XAtyaywhKphrYfVs1eIwwMMRA6Jn55Ng==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", - "@nx/eslint": "22.6.5", - "@nx/js": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/eslint": "22.7.1", + "@nx/js": "22.7.1", "@phenomnomnominal/tsquery": "~6.1.4", "detect-port": "^1.5.1", "semver": "^7.6.3", @@ -9131,9 +9061,9 @@ } }, "node_modules/@nx/devkit": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.6.5.tgz", - "integrity": "sha512-9kvAI+kk2pfEXLqS8OyjI9XvWmp+Gdn7jPfxDAz8BOqxMyPy3p5hYl+jc4TIsLOWunAFl8azqrcYsHzEpaWCIA==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-22.7.1.tgz", + "integrity": "sha512-z2ayFHq406MyVpNtksGnsfHOYZVTSInwQgZeg6u+S4sD21Wvb+oldhqkbYX46jiGJSaw5aUjFdzXJu2l4MYP1A==", "dev": true, "license": "MIT", "dependencies": { @@ -9202,49 +9132,53 @@ } }, "node_modules/@nx/docker": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/docker/-/docker-22.6.5.tgz", - "integrity": "sha512-kEZi8sC7hL5WsUCJkmj7hvrTahK8yOsRfgRljbSQnQ6vAZPHHZQnB36ybgrb0JbhFPciRV5Mf9UQm13Ev49M2Q==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/docker/-/docker-22.7.1.tgz", + "integrity": "sha512-jTB9pczTG7gQsaWdycWw8azm8iZ4AkuFttjmIVK4gGtoRf8rzJadn+pID/DHAwKay/Kxb7w2RyfFDJcyNCtvsQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", + "@nx/devkit": "22.7.1", "enquirer": "~2.3.6", "tslib": "^2.3.0" } }, "node_modules/@nx/eslint": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.6.5.tgz", - "integrity": "sha512-rEV8CveVA3CCW8MHSKauUI+6XSpQ0nZ/z64fBvBulLUoUO10/mVpkbl3NpRyhCKXzOHYhW35wwuzq6YrfSi6gA==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-22.7.1.tgz", + "integrity": "sha512-wBx/U1NTZ4arbjFrI7bI0zd1FMSBpqIszzfJ0pXyqrHA3KxNLFTQI713XoSD2hxTNrbh4owFQD7SYG4WpNN3CA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", - "@nx/js": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/js": "22.7.1", "semver": "^7.6.3", "tslib": "^2.3.0", "typescript": "~5.9.2" }, "peerDependencies": { + "@nx/jest": "22.7.1", "@zkochan/js-yaml": "0.0.7", "eslint": "^8.0.0 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { + "@nx/jest": { + "optional": true + }, "@zkochan/js-yaml": { "optional": true } } }, "node_modules/@nx/eslint-plugin": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.6.5.tgz", - "integrity": "sha512-G1DkvBMzBAqxxrJ7Zfky5HN4HQjrULKZQ5J5YCnTm5qZpah58U7xAP4g8D0aJzKMWMUJkgXAU1ojiLbeZUDJkw==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-22.7.1.tgz", + "integrity": "sha512-LkW2QwkiB0MslknVN8If2JQZHFPgD1FkfTkVzgw2j+3B/+4dBN8aJsWgr6b3T4vn/n6XxtwFd7NVuJlsk5nyyQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", - "@nx/js": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/js": "22.7.1", "@phenomnomnominal/tsquery": "~6.1.4", "@typescript-eslint/type-utils": "^8.0.0", "@typescript-eslint/utils": "^8.0.0", @@ -9279,16 +9213,16 @@ } }, "node_modules/@nx/jest": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.6.5.tgz", - "integrity": "sha512-Px+ROXwl3s8tjS3OEVMtNY5krQ2zAWyK7s922zmtbXjNKGZ8bg6krnkq7n5XpQwyXTZNVxku8TXcN7jXZECGFQ==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-22.7.1.tgz", + "integrity": "sha512-5e9O19Gv6vF/xgyu6fdW49fSB11VqAuWyI/ls0Fjy+2c71JuuJXftF/HfYf7SH008PqccVyXYMCZZNGRGuqWsg==", "dev": true, "license": "MIT", "dependencies": { "@jest/reporters": "^30.0.2", "@jest/test-result": "^30.0.2", - "@nx/devkit": "22.6.5", - "@nx/js": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/js": "22.7.1", "@phenomnomnominal/tsquery": "~6.1.4", "identity-obj-proxy": "3.0.0", "jest-config": "^30.0.2", @@ -9342,9 +9276,9 @@ } }, "node_modules/@nx/js": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.6.5.tgz", - "integrity": "sha512-bmikz6qaBHfuAgsqPB/TfLIKfvI4g+EKIRAiU2FHnEtVWOKDAmSQXHFwE3rMS49jl2JLgxkdNjZHpg4g/OLy0g==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-22.7.1.tgz", + "integrity": "sha512-zvPaamdAFehy4PsA963sJuwVXehsbpSJQJgEW6xcWy58lYLI/NRQHSZn4yJmuaFVnuuciRlmiacCom242byWnw==", "dev": true, "license": "MIT", "dependencies": { @@ -9355,8 +9289,8 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nx/devkit": "22.6.5", - "@nx/workspace": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/workspace": "22.7.1", "@zkochan/js-yaml": "0.0.7", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^3.1.0", @@ -9413,18 +9347,18 @@ } }, "node_modules/@nx/module-federation": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.6.5.tgz", - "integrity": "sha512-nQS3qFGs8lQ87ZQ8hab+oL+BfjCYjNPkGrpH4fXovnFgwaRNudnQnh2vTud1+JcUl0e+sJi/wIwZH4AB75jzSA==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-22.7.1.tgz", + "integrity": "sha512-dNPQU9Gx8PcdUjiSbQoya+/Q0oQvVT1l+tNDBx5M72zertoFdSogNqeudS0256/mHbbgGRYX6vteafJBOLuSjg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/enhanced": "^2.1.0", + "@module-federation/enhanced": "^2.3.3", "@module-federation/node": "^2.7.21", "@module-federation/sdk": "^2.1.0", - "@nx/devkit": "22.6.5", - "@nx/js": "22.6.5", - "@nx/web": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/js": "22.7.1", + "@nx/web": "22.7.1", "@rspack/core": "1.6.8", "express": "^4.21.2", "http-proxy-middleware": "^3.0.5", @@ -9563,9 +9497,9 @@ } }, "node_modules/@nx/module-federation/node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", "dev": true, "license": "MIT", "dependencies": { @@ -9577,7 +9511,7 @@ "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", - "qs": "~6.14.0", + "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" @@ -9657,6 +9591,22 @@ "url": "https://opencollective.com/express" } }, + "node_modules/@nx/module-federation/node_modules/express/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@nx/module-federation/node_modules/finalhandler": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", @@ -9766,22 +9716,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@nx/module-federation/node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@nx/module-federation/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", @@ -9861,41 +9795,41 @@ } }, "node_modules/@nx/nest": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-22.6.5.tgz", - "integrity": "sha512-HdQVzXEccVtoSakU+Mqib44DgbFi1JKkA0BVnUp6Fmp0/Bt0xo5l2lhP2x4qS8oKQCWHtoxNznWKLkmqGLRjig==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-22.7.1.tgz", + "integrity": "sha512-Neo6ejcY/7EbvpyzamXSbvknAUljwn68ZU/zNz3F8zDchqX4hrPVxpEr2tOY5JhEtx0ZgNk5gPUls7O80NNqPg==", "dev": true, "license": "MIT", "dependencies": { "@nestjs/schematics": "^11.0.0", - "@nx/devkit": "22.6.5", - "@nx/eslint": "22.6.5", - "@nx/js": "22.6.5", - "@nx/node": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/eslint": "22.7.1", + "@nx/js": "22.7.1", + "@nx/node": "22.7.1", "tslib": "^2.3.0" } }, "node_modules/@nx/node": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/node/-/node-22.6.5.tgz", - "integrity": "sha512-ahZRKpd6pqflRqBX4/oVSk5bAHtS2CM4I3T3c6iuTNenG8ehVxGmuJj8KpiC0tlLe3kJoR1oWQU1pDakXrVWow==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/node/-/node-22.7.1.tgz", + "integrity": "sha512-RCKCDvI3EYkAE7XlGmvNlgZj5zG3a+AaY1WTi/3GsaiuDCRPjZWg2Jm4H/ay4wGqE4JZeFMISjcA+n6ABrL2yA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", - "@nx/docker": "22.6.5", - "@nx/eslint": "22.6.5", - "@nx/jest": "22.6.5", - "@nx/js": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/docker": "22.7.1", + "@nx/eslint": "22.7.1", + "@nx/jest": "22.7.1", + "@nx/js": "22.7.1", "kill-port": "^1.6.1", "tcp-port-used": "^1.0.2", "tslib": "^2.3.0" } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.6.5.tgz", - "integrity": "sha512-qT77Omkg5xQuL2+pDbneX2tI+XW5ZeayMylu7UUgK8OhTrAkJLKjpuYRH4xT5XBipxbDtlxmO3aLS3Ib1pKzJQ==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.7.1.tgz", + "integrity": "sha512-m00ZmBn39VUgb0Ahhu5iY6D56ETdXjDbVnOz0XF3DacJrcLtq9sZ+cg1bj6PshqtvRWVg+zJRrZBU6vL7hGuFQ==", "cpu": [ "arm64" ], @@ -9907,9 +9841,9 @@ ] }, "node_modules/@nx/nx-darwin-x64": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.6.5.tgz", - "integrity": "sha512-9jICxb7vfJ56y/7Yuh3b/n1QJqWxO9xnXKYEs6SO8xPoW/KomVckILGc1C6RQSs6/3ixVJC7k1Dh1wm5tKPFrg==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.7.1.tgz", + "integrity": "sha512-DmD8Qow+Yt7Yrmjlz1AsfiwxW+0kRzg+6MY70+d7qChtD2bTzvA/k0ut8SMy+CxU3kxgUbKhGOtml5JDXoX2ww==", "cpu": [ "x64" ], @@ -9921,9 +9855,9 @@ ] }, "node_modules/@nx/nx-freebsd-x64": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.6.5.tgz", - "integrity": "sha512-6B1wEKpqz5dI3AGMqttAVnA6M3DB/besAtuGyQiymK9ROlta1iuWgCcIYwcCQyhLn2Rx7vqj447KKcgCa8HlVw==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.7.1.tgz", + "integrity": "sha512-HboVrUCHcuYTXtuX3dMyRszP7JO90ZVBLWgnmaM7jUM7jnllZjmezUMtpNHfN1GQbVFafJf/NBShDWsu9LuaUA==", "cpu": [ "x64" ], @@ -9935,9 +9869,9 @@ ] }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.6.5.tgz", - "integrity": "sha512-xV50B8mnDPboct7JkAHftajI02s+8FszA8WTzhore+YGR+lEKHTLpucwGEaQuMlSdLplH7pQix4B4uK5pcMhZw==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.7.1.tgz", + "integrity": "sha512-5Gm8Y7L8WXMLUjHhiy1eqGz5/PiRw1YLanFg5audBNkZvH6Jkwzdpoz0dbeKjwMDHz4NmniUV1s76Th8VLWmiQ==", "cpu": [ "arm" ], @@ -9949,9 +9883,9 @@ ] }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.6.5.tgz", - "integrity": "sha512-2JkWuMGj+HpW6oPAvU5VdAx1afTnEbiM10Y3YOrl3fipWV4BiP5VDx762QTrfCraP4hl6yqTgvTe7F9xaby+jQ==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.7.1.tgz", + "integrity": "sha512-GdgPYMfbijBRFJs1absL/9QdSNLsTAGdyKykDf9CaVxEMZ92VB+pncpX9Vn/ZBCSeeWTLF+bSK3UM5v+loIObQ==", "cpu": [ "arm64" ], @@ -9963,9 +9897,9 @@ ] }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.6.5.tgz", - "integrity": "sha512-Z/zMqFClnEyqDXouJKEPoWVhMQIif5F0YuECWBYjd3ZLwQsXGTItoh+6Wm3XF/nGMA2uLOHyTq/X7iFXQY3RzA==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.7.1.tgz", + "integrity": "sha512-HyBgPtY1hyNTk8683nt7F29jh3lVdS/zul9vS0NgKeCSoYL3GRM3nLoTPynoHUxyVP/tWYOE3ymvnk92qYwL4Q==", "cpu": [ "arm64" ], @@ -9977,9 +9911,9 @@ ] }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.6.5.tgz", - "integrity": "sha512-FlotSyqNnaXSn0K+yWw+hRdYBwusABrPgKLyixfJIYRzsy+xPKN6pON6vZfqGwzuWF/9mEGReRz+iM8PiW0XSg==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.7.1.tgz", + "integrity": "sha512-bQBgRiEsanNvKcDOjVAUPjvcp0iDLofYYUL2af2iuCDxreLOej+J6MeA5bWTLNly5ly1d4voKGTqa+OsouVyLg==", "cpu": [ "x64" ], @@ -9991,9 +9925,9 @@ ] }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.6.5.tgz", - "integrity": "sha512-RVOe2qcwhoIx6mxQURPjUfAW5SEOmT2gdhewvdcvX9ICq1hj5B2VarmkhTg0qroO7xiyqOqwq26mCzoV2I3NgQ==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.7.1.tgz", + "integrity": "sha512-gcco2GjcAztF/fRcAgFxtWxrWDnQdNmPaAN9FTt1+qQ9RUSLvdL8bQxKx4Kd9N9T+gXPlrWhMkBkKbbV09+X1Q==", "cpu": [ "x64" ], @@ -10005,9 +9939,9 @@ ] }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.6.5.tgz", - "integrity": "sha512-ZqurqI8VuYnsr2Kn4K4t+Gx6j/BZdf6qz/6Tv4A7XQQ6oNYVQgTqoNEFj+CCkVaIe6aIdCWpousFLqs+ZgBqYQ==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.7.1.tgz", + "integrity": "sha512-IT9oEn0YQ83iPH7666aoPyTRsUzBIBJdBLMXeLX4I60fHPXWhUSGpfiLtIsgU2OfeOVb9hU9idwNh1wc4u9rWQ==", "cpu": [ "arm64" ], @@ -10019,9 +9953,9 @@ ] }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.6.5.tgz", - "integrity": "sha512-i2QFBJIuaYg9BHxrrnBV4O7W9rVL2k0pSIdk/rRp3EYJEU93iUng+qbZiY9wh1xvmXuUCE2G7TRd+8/SG/RFKg==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.7.1.tgz", + "integrity": "sha512-P2zeSKXVH2Eiwsb8UfP2rMMS7//cHWpiO4M9zt6q0c4lI/hN1vXBciRKVWruGk9ZrWLHuhaMAhG94+MJtzKuRQ==", "cpu": [ "x64" ], @@ -10033,16 +9967,16 @@ ] }, "node_modules/@nx/rspack": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.6.5.tgz", - "integrity": "sha512-ugjdD7OY4Cy7AcSlEJcfcfDWxev5PnVagb4FEEEutneITLz8hrBmQ+uY5cJg07Vsx6eauskpirkwRtXAQeHgFQ==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-22.7.1.tgz", + "integrity": "sha512-zizR6BWvH9klo9QTkWNRwTO/Rhk2RxPZOZNnPt/bV9adDWSvY+8CYojxtkdXAfiwj65WenvL9WYJUhKu137W4g==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", - "@nx/js": "22.6.5", - "@nx/module-federation": "22.6.5", - "@nx/web": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/js": "22.7.1", + "@nx/module-federation": "22.7.1", + "@nx/web": "22.7.1", "@phenomnomnominal/tsquery": "~6.1.4", "@rspack/core": "1.6.8", "@rspack/dev-server": "^1.1.4", @@ -10072,7 +10006,7 @@ "webpack-node-externals": "^3.0.0" }, "peerDependencies": { - "@module-federation/enhanced": "^2.1.0", + "@module-federation/enhanced": "^2.3.3", "@module-federation/node": "^2.7.21" } }, @@ -10202,9 +10136,9 @@ } }, "node_modules/@nx/rspack/node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", "dev": true, "license": "MIT", "dependencies": { @@ -10216,7 +10150,7 @@ "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", - "qs": "~6.14.0", + "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" @@ -10332,6 +10266,22 @@ "url": "https://opencollective.com/express" } }, + "node_modules/@nx/rspack/node_modules/express/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@nx/rspack/node_modules/finalhandler": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", @@ -10463,22 +10413,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@nx/rspack/node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@nx/rspack/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", @@ -10558,49 +10492,83 @@ } }, "node_modules/@nx/storybook": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-22.6.5.tgz", - "integrity": "sha512-h0O8t7ir5hkqJhvT/g0E9KiILj3y9thZ7pOlB/Krc1G2GzYynSZJPElv//pibPhxtZl0Yk4AldkX9LqMkWtfFA==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-22.7.1.tgz", + "integrity": "sha512-bjYGB08/lBNNCvgIZijdACQzcb8asuRNlkU9j/D9mGk2wIWv7Ub+Sj3Q8HGnDvpPdSFgbbo0vGw1xGrX4votBw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/cypress": "22.6.5", - "@nx/devkit": "22.6.5", - "@nx/eslint": "22.6.5", - "@nx/js": "22.6.5", + "@nx/cypress": "22.7.1", + "@nx/devkit": "22.7.1", + "@nx/eslint": "22.7.1", + "@nx/js": "22.7.1", "@phenomnomnominal/tsquery": "~6.1.4", "semver": "^7.6.3", "tslib": "^2.3.0" }, "peerDependencies": { + "@nx/web": "22.7.1", "storybook": ">=7.0.0 <11.0.0" + }, + "peerDependenciesMeta": { + "@nx/web": { + "optional": true + } } }, "node_modules/@nx/web": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.6.5.tgz", - "integrity": "sha512-LjKPLWbgEI9FDIsMGqbW0tisVJfhme0EBi1kZfTi4cIu9Pna5nYkNBefD/d/DuK0ZrRqdONNjhRkCO3TcVbtIQ==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-22.7.1.tgz", + "integrity": "sha512-l3rwX1Oi307YAFmfZG6a8elZa/Faj2LvI6PuX7uaYsiSV7GcnFIId1DRCMfhGC/L63uqfcuy34X23+8jrXX9hw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", - "@nx/js": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/js": "22.7.1", "detect-port": "^1.5.1", "http-server": "^14.1.0", "picocolors": "^1.1.0", "tslib": "^2.3.0" + }, + "peerDependencies": { + "@nx/cypress": "22.7.1", + "@nx/eslint": "22.7.1", + "@nx/jest": "22.7.1", + "@nx/playwright": "22.7.1", + "@nx/vite": "22.7.1", + "@nx/webpack": "22.7.1" + }, + "peerDependenciesMeta": { + "@nx/cypress": { + "optional": true + }, + "@nx/eslint": { + "optional": true + }, + "@nx/jest": { + "optional": true + }, + "@nx/playwright": { + "optional": true + }, + "@nx/vite": { + "optional": true + }, + "@nx/webpack": { + "optional": true + } } }, "node_modules/@nx/webpack": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.6.5.tgz", - "integrity": "sha512-LN75xxd/6U/r8vI3nzs/N5sj22nrJdBhTfDPlYlhKz2caCCWImSvQSXmprU46xNbXuYAY0DmRcZ5fkeqjHegtw==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-22.7.1.tgz", + "integrity": "sha512-XMZPhLXN9d+Q1Axmc8nFSbUlxNfgM5Tvl1pdb+K4WPpQE9Q+hF+E2vNfQa1hgL0Hu6bmScSJAGmrllZ9dfQAjA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@nx/devkit": "22.6.5", - "@nx/js": "22.6.5", + "@nx/devkit": "22.7.1", + "@nx/js": "22.7.1", "@phenomnomnominal/tsquery": "~6.1.4", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", @@ -10812,17 +10780,17 @@ } }, "node_modules/@nx/workspace": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.6.5.tgz", - "integrity": "sha512-/CZtv1ESSfZ1MVqSlCsmnBWysU1z5VdNlwANlqL6BV2X6RUHKDPVj4YuNPvCK+0LsqyzfJdUt3pcnBYxnT5TIg==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-22.7.1.tgz", + "integrity": "sha512-wnBMgeogdGaRdxDDzZspSt1U87PMeYJhz1ygr42L9Lot9E5nCf17E85iyHl3YxcMSNslHxnHyTkq7MyQ8hHjdQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "22.6.5", + "@nx/devkit": "22.7.1", "@zkochan/js-yaml": "0.0.7", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "22.6.5", + "nx": "22.7.1", "picomatch": "4.0.4", "semver": "^7.6.3", "tslib": "^2.3.0", @@ -12809,9 +12777,9 @@ } }, "node_modules/@rspack/dev-server/node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", "dev": true, "license": "MIT", "dependencies": { @@ -12823,7 +12791,7 @@ "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", - "qs": "~6.14.0", + "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" @@ -12928,6 +12896,22 @@ "url": "https://opencollective.com/express" } }, + "node_modules/@rspack/dev-server/node_modules/express/node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@rspack/dev-server/node_modules/finalhandler": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", @@ -13107,22 +13091,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@rspack/dev-server/node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@rspack/dev-server/node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", @@ -16285,44 +16253,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", - "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=18.12.0" - } - }, - "node_modules/@yarnpkg/parsers/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@zkochan/js-yaml": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", @@ -19042,48 +18972,6 @@ "node-fetch": "^2.7.0" } }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/cross-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/cross-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/cross-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -19273,9 +19161,9 @@ } }, "node_modules/css-minimizer-webpack-plugin/node_modules/postcss": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", - "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.13.tgz", + "integrity": "sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==", "dev": true, "funding": [ { @@ -20605,18 +20493,6 @@ "lodash-es": "^4.17.21" } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/data-urls": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", @@ -22595,32 +22471,6 @@ } } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/fetch-mock-cache": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/fetch-mock-cache/-/fetch-mock-cache-2.3.1.tgz", @@ -23245,21 +23095,6 @@ "node": ">= 0.6" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -23292,40 +23127,6 @@ "node": ">= 0.8" } }, - "node_modules/front-matter": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", - "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1" - } - }, - "node_modules/front-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/front-matter/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -23464,48 +23265,6 @@ "node": ">= 6" } }, - "node_modules/gaxios/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/gaxios/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/gaxios/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/gaxios/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/gcp-metadata": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", @@ -30916,29 +30675,6 @@ "license": "MIT", "optional": true }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-exports-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", @@ -30969,24 +30705,23 @@ } }, "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "4.x || >=6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-fetch-native": { @@ -30996,6 +30731,28 @@ "devOptional": true, "license": "MIT" }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/node-forge": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", @@ -31269,65 +31026,139 @@ "license": "MIT" }, "node_modules/nx": { - "version": "22.6.5", - "resolved": "https://registry.npmjs.org/nx/-/nx-22.6.5.tgz", - "integrity": "sha512-VRKhDAt684dXNSz9MNjE7MekkCfQF41P2PSx5jEWQjDEP1Z4jFZbyeygWs5ZyOroG7/n0MoWAJTe6ftvIcBOAg==", + "version": "22.7.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-22.7.1.tgz", + "integrity": "sha512-SadJUQY57MiwRIetm9rhZhdpFeOe1Csib2Vg9C423Pw/h0fZE14qUo6+OBby9vLh5QCkRfRZ0WaHkeO5q6yNtA==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { + "@emnapi/core": "1.4.5", + "@emnapi/runtime": "1.4.5", + "@emnapi/wasi-threads": "1.0.4", + "@jest/diff-sequences": "30.0.1", "@napi-rs/wasm-runtime": "0.2.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.2", + "@tybys/wasm-util": "0.9.0", + "@yarnpkg/lockfile": "1.1.0", "@zkochan/js-yaml": "0.0.7", + "ansi-colors": "4.1.3", + "ansi-regex": "5.0.1", + "ansi-styles": "4.3.0", + "argparse": "2.0.1", + "asynckit": "0.4.0", "axios": "1.15.0", + "balanced-match": "4.0.3", + "base64-js": "1.5.1", + "bl": "4.1.0", + "brace-expansion": "5.0.2", + "buffer": "5.7.1", + "call-bind-apply-helpers": "1.0.2", + "chalk": "4.1.2", "cli-cursor": "3.1.0", "cli-spinners": "2.6.1", - "cliui": "^8.0.1", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", + "cliui": "8.0.1", + "clone": "1.0.4", + "color-convert": "2.0.1", + "color-name": "1.1.4", + "combined-stream": "1.0.8", + "defaults": "1.0.4", + "define-lazy-prop": "2.0.0", + "delayed-stream": "1.0.0", + "dotenv": "16.4.7", + "dotenv-expand": "12.0.3", + "dunder-proto": "1.0.1", "ejs": "5.0.1", - "enquirer": "~2.3.6", + "emoji-regex": "8.0.0", + "end-of-stream": "1.4.5", + "enquirer": "2.3.6", + "es-define-property": "1.0.1", + "es-errors": "1.3.0", + "es-object-atoms": "1.1.1", + "es-set-tostringtag": "2.1.0", + "escalade": "3.2.0", + "escape-string-regexp": "1.0.5", "figures": "3.2.0", - "flat": "^5.0.2", - "front-matter": "^4.0.2", - "ignore": "^7.0.5", - "jest-diff": "^30.0.2", + "flat": "5.0.2", + "follow-redirects": "1.15.11", + "form-data": "4.0.5", + "fs-constants": "1.0.0", + "function-bind": "1.1.2", + "get-caller-file": "2.0.5", + "get-intrinsic": "1.3.0", + "get-proto": "1.0.1", + "gopd": "1.2.0", + "has-flag": "4.0.0", + "has-symbols": "1.1.0", + "has-tostringtag": "1.0.2", + "hasown": "2.0.2", + "ieee754": "1.2.1", + "ignore": "7.0.5", + "inherits": "2.0.4", + "is-docker": "2.2.1", + "is-fullwidth-code-point": "3.0.0", + "is-interactive": "1.0.0", + "is-unicode-supported": "0.1.0", + "is-wsl": "2.2.0", + "json5": "2.2.3", "jsonc-parser": "3.2.0", "lines-and-columns": "2.0.3", + "log-symbols": "4.1.0", + "math-intrinsics": "1.1.0", + "mime-db": "1.52.0", + "mime-types": "2.1.35", + "mimic-fn": "2.1.0", "minimatch": "10.2.4", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", + "minimist": "1.2.8", + "npm-run-path": "4.0.1", + "once": "1.4.0", + "onetime": "5.1.2", + "open": "8.4.2", "ora": "5.3.0", - "picocolors": "^1.1.0", + "path-key": "3.1.1", + "picocolors": "1.1.1", + "proxy-from-env": "2.1.0", + "readable-stream": "3.6.2", + "require-directory": "2.1.1", "resolve.exports": "2.0.3", - "semver": "^7.6.3", + "restore-cursor": "3.1.0", + "safe-buffer": "5.2.1", + "semver": "7.7.4", + "signal-exit": "3.0.7", "smol-toml": "1.6.1", - "string-width": "^4.2.3", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tree-kill": "^1.2.2", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "yaml": "^2.6.0", - "yargs": "^17.6.2", + "string_decoder": "1.3.0", + "string-width": "4.2.3", + "strip-ansi": "6.0.1", + "strip-bom": "3.0.0", + "supports-color": "7.2.0", + "tar-stream": "2.2.0", + "tmp": "0.2.4", + "tree-kill": "1.2.2", + "tsconfig-paths": "4.2.0", + "tslib": "2.8.1", + "util-deprecate": "1.0.2", + "wcwidth": "1.0.1", + "wrap-ansi": "7.0.0", + "wrappy": "1.0.2", + "y18n": "5.0.8", + "yaml": "2.8.0", + "yargs": "17.7.2", "yargs-parser": "21.1.1" }, "bin": { - "nx": "bin/nx.js", - "nx-cloud": "bin/nx-cloud.js" + "nx": "dist/bin/nx.js", + "nx-cloud": "dist/bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "22.6.5", - "@nx/nx-darwin-x64": "22.6.5", - "@nx/nx-freebsd-x64": "22.6.5", - "@nx/nx-linux-arm-gnueabihf": "22.6.5", - "@nx/nx-linux-arm64-gnu": "22.6.5", - "@nx/nx-linux-arm64-musl": "22.6.5", - "@nx/nx-linux-x64-gnu": "22.6.5", - "@nx/nx-linux-x64-musl": "22.6.5", - "@nx/nx-win32-arm64-msvc": "22.6.5", - "@nx/nx-win32-x64-msvc": "22.6.5" + "@nx/nx-darwin-arm64": "22.7.1", + "@nx/nx-darwin-x64": "22.7.1", + "@nx/nx-freebsd-x64": "22.7.1", + "@nx/nx-linux-arm-gnueabihf": "22.7.1", + "@nx/nx-linux-arm64-gnu": "22.7.1", + "@nx/nx-linux-arm64-musl": "22.7.1", + "@nx/nx-linux-x64-gnu": "22.7.1", + "@nx/nx-linux-x64-musl": "22.7.1", + "@nx/nx-win32-arm64-msvc": "22.7.1", + "@nx/nx-win32-x64-msvc": "22.7.1" }, "peerDependencies": { "@swc-node/register": "^1.11.1", @@ -31342,27 +31173,78 @@ } } }, + "node_modules/nx/node_modules/@emnapi/core": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emnapi/wasi-threads": "1.0.4", + "tslib": "^2.4.0" + } + }, + "node_modules/nx/node_modules/@emnapi/runtime": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/nx/node_modules/@emnapi/wasi-threads": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/nx/node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/nx/node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/nx/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", + "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", "dev": true, "license": "MIT", "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/nx/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/nx/node_modules/cli-cursor": { @@ -31401,22 +31283,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/nx/node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/nx/node_modules/ejs": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ejs/-/ejs-5.0.1.tgz", @@ -31437,6 +31303,16 @@ "dev": true, "license": "MIT" }, + "node_modules/nx/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/nx/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", @@ -31533,6 +31409,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/nx/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nx/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/nx/node_modules/minimatch": { "version": "10.2.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", @@ -31651,6 +31550,37 @@ "node": ">=6" } }, + "node_modules/nx/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/nx/node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "node_modules/nx/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -37404,9 +37334,9 @@ "peer": true }, "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz", + "integrity": "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==", "dev": true, "license": "MIT", "engines": { @@ -39015,18 +38945,6 @@ "license": "MIT", "optional": true }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/webidl-conversions": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", @@ -40336,8 +40254,9 @@ "version": "2.8.3", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", - "devOptional": true, "license": "ISC", + "optional": true, + "peer": true, "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index 54c1f048f..0d7c961cc 100644 --- a/package.json +++ b/package.json @@ -158,16 +158,16 @@ "@eslint/js": "9.35.0", "@nestjs/schematics": "11.1.0", "@nestjs/testing": "11.1.19", - "@nx/angular": "22.6.5", - "@nx/eslint-plugin": "22.6.5", - "@nx/jest": "22.6.5", - "@nx/js": "22.6.5", - "@nx/module-federation": "22.6.5", - "@nx/nest": "22.6.5", - "@nx/node": "22.6.5", - "@nx/storybook": "22.6.5", - "@nx/web": "22.6.5", - "@nx/workspace": "22.6.5", + "@nx/angular": "22.7.1", + "@nx/eslint-plugin": "22.7.1", + "@nx/jest": "22.7.1", + "@nx/js": "22.7.1", + "@nx/module-federation": "22.7.1", + "@nx/nest": "22.7.1", + "@nx/node": "22.7.1", + "@nx/storybook": "22.7.1", + "@nx/web": "22.7.1", + "@nx/workspace": "22.7.1", "@schematics/angular": "21.2.6", "@storybook/addon-docs": "10.1.10", "@storybook/addon-themes": "10.1.10", @@ -194,7 +194,7 @@ "jest": "30.2.0", "jest-environment-jsdom": "30.2.0", "jest-preset-angular": "16.0.0", - "nx": "22.6.5", + "nx": "22.7.1", "prettier": "3.8.3", "prettier-plugin-organize-attributes": "1.0.0", "prisma": "7.7.0", From 073bb3b5c02077b669b4d197b1473a13cdc796cc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 7 May 2026 17:57:18 +0300 Subject: [PATCH 05/11] Task/refresh cryptocurrencies list (20260503) (#6838) * Update cryptocurrencies.json * Update changelog --- CHANGELOG.md | 1 + .../cryptocurrencies/cryptocurrencies.json | 132 ++++++++++++++---- 2 files changed, 109 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27a02a0e5..246e5e289 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Migrated various components from `NgClass` to class bindings +- Refreshed the cryptocurrencies list - Upgraded `Nx` from version `22.6.5` to `22.7.1` ### Fixed diff --git a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json index 7ca2d568f..ea88dd4c1 100644 --- a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json +++ b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json @@ -193,6 +193,7 @@ "AARK": "Aark", "AART": "ALL.ART", "AAST": "AASToken", + "AASTEROID": "Alien Asteroid", "AAT": "Agricultural Trade Chain", "AAVAWBTC": "Aave aWBTC", "AAVE": "Aave", @@ -280,7 +281,7 @@ "ACTA": "Acta Finance", "ACTIN": "Actinium", "ACTN": "Action Coin", - "ACU": "ACU Platform", + "ACU": "Acurast Token", "ACX": "Across Protocol", "ACXT": "ACDX Exchange Token", "ACYC": "All Coins Yield Capital", @@ -389,7 +390,7 @@ "AGATA": "Agatech", "AGATOKEN": "AGA Token", "AGB": "Apes Go Bananas", - "AGC": "Argocoin", + "AGC": "Alien Green Cat", "AGEN": "Agent Krasnov", "AGENT": "AgentLayer", "AGENTFUN": "AgentFun.AI", @@ -417,6 +418,7 @@ "AGOV": "Answer Governance", "AGPC": "AGPC", "AGRI": "AgriDex Token", + "AGRICULTURALUNIONS": "Agricultural Unions", "AGRO": "Bit Agro", "AGRS": "Agoras Token", "AGS": "Aegis", @@ -605,6 +607,7 @@ "ALBART": "AlbΓ€rt", "ALBE": "ALBETROS", "ALBEDO": "ALBEDO", + "ALBON": "Albemarle (Ondo Tokenized)", "ALBT": "AllianceBlock", "ALC": "Arab League Coin", "ALCAZAR": "Alcazar", @@ -700,6 +703,7 @@ "ALTMAN": "SAM", "ALTOCAR": "AltoCar", "ALTR": "Altranium", + "ALTSZN": "ALTSEASON", "ALTT": "Altcoinist", "ALU": "Altura", "ALUSD": "Alchemix USD", @@ -994,6 +998,7 @@ "ARG": "Argentine Football Association Fan Token", "ARGENTUM": "Argentum", "ARGO": "ArGoApp", + "ARGOCOIN": "Argocoin", "ARGON": "Argon", "ARGUS": "ArgusCoin", "ARI": "AriCoin", @@ -1123,10 +1128,11 @@ "ASTA": "ASTA", "ASTER": "Aster", "ASTERINU": "Aster INU", - "ASTEROID": "ASTEROID", + "ASTEROID": "Asteroid Shiba", "ASTEROIDBOT": "Asteroid Bot", "ASTEROIDCOIN": "ASTEROID", "ASTEROIDETH": "Asteroid", + "ASTEROIDFIT": "ASTEROID", "ASTHERUSUSDF": "Astherus USDF", "ASTO": "Altered State Token", "ASTON": "Aston", @@ -1396,7 +1402,6 @@ "BABI": "Babylons", "BABL": "Babylon Finance", "BABY": "Babylon", - "BABY4": "Baby 4", "BABYANDY": "Baby Andy", "BABYASTER": "Baby Aster", "BABYB": "Baby Bali", @@ -1778,7 +1783,7 @@ "BDID": "BDID", "BDIN": "BendDAO BDIN", "BDL": "Bitdeal", - "BDOG": "Bulldog Token", + "BDOG": "BurnDog", "BDOGITO": "BullDogito", "BDOT": "Binance Wrapped DOT", "BDP": "Big Data Protocol", @@ -1846,6 +1851,7 @@ "BELA": "Bela", "BELG": "Belgian Malinois", "BELIEVE": "Believe", + "BELKA": "The Dancing Squirrel", "BELL": "Bellscoin", "BELLE": "Isabelle", "BELLS": "Bellscoin", @@ -1882,8 +1888,9 @@ "BERN": "BERNcash", "BERNIE": "BERNIE SENDERS", "BERRIE": "Berrie Token", - "BERRY": "Berry", + "BERRY": "Strawberry AI", "BERRYS": "BerrySwap", + "BERRYSTORE": "Berry", "BERT": "Bertram The Pomeranian", "BES": "battle esports coin", "BESA": "Besa Gaming", @@ -1935,6 +1942,7 @@ "BGB": "Bitget token", "BGBG": "BigMouthFrog", "BGBP": "Binance GBP Stable Coin", + "BGBTC": "Bitget Wrapped BTC", "BGBV1": "Bitget Token v1", "BGC": "Bee Token", "BGCI": "Bloomberg Galaxy Crypto Index", @@ -1989,6 +1997,7 @@ "BIDI": "Bidipass", "BIDP": "BID Protocol", "BIDR": "Binance IDR Stable Coin", + "BIDUON": "Baidu (Ondo Tokenized)", "BIDZ": "BIDZ Coin", "BIDZV1": "BIDZ Coin v1", "BIFI": "Beefy.Finance", @@ -2133,6 +2142,7 @@ "BITTO": "BITTO", "BITTON": "Bitton", "BITTY": "The Bitcoin Mascot", + "BITUBU": "UBU", "BITUPTOKEN": "BitUP Token", "BITUSD": "bitUSD", "BITV": "Bitvolt", @@ -2196,6 +2206,7 @@ "BLC": "BlakeCoin", "BLCT": "Bloomzed Loyalty Club Ticket", "BLD": "Agoric", + "BLEND": "Fluent", "BLENDR": "Blendr Network", "BLEPE": "Blepe", "BLERF": "BLERF", @@ -2218,7 +2229,7 @@ "BLKC": "BlackHat Coin", "BLKD": "Blinked", "BLKS": "Blockshipping", - "BLM": "Blombard", + "BLM": "BLM coin", "BLN": "Bulleon", "BLNM": "Bolenum", "BLOB": "B.O.B the Blob", @@ -2247,6 +2258,7 @@ "BLOCX": "BLOCX.", "BLOGGE": "Bloggercube", "BLOK": "Bloktopia", + "BLOMBARD": "Blombard", "BLOO": "bloo foster coin", "BLOOCYS": "BlooCYS", "BLOODY": "Bloody Token", @@ -2880,6 +2892,7 @@ "BTFA": "Banana Task Force Ape", "BTG": "Bitcoin Gold", "BTGON": "B2Gold (Ondo Tokenized)", + "BTGOON": "BitGo Holdings (Ondo Tokenized)", "BTH": "Bithereum", "BTK": "Bostoken", "BTL": "Bitlocus", @@ -2973,11 +2986,12 @@ "BUL": "bul", "BULDAK": "Buldak", "BULEI": "Bulei", - "BULL": "Tron Bull", + "BULL": "Bull", "BULLA": "BULLA", "BULLBEAR": "BullBear AI", "BULLC": "BuySell", "BULLDOG": "BullDog Coin", + "BULLDOGTOKEN": "Bulldog Token", "BULLF": "BULL FINANCE", "BULLGOD": "Bull God", "BULLI": "Bullish On Ethereum", @@ -3392,7 +3406,6 @@ "CDOGE": "cyberdoge", "CDPT": "Creditor Data Platform", "CDRX": "CDRX", - "CDT": "CheckDot", "CDX": "CDX Network", "CDY": "Bitcoin Candy", "CDragon": "Clumsy Dragon", @@ -3513,6 +3526,7 @@ "CHC": "ChainCoin", "CHD": "CharityDAO", "CHECK": "Checkmate", + "CHECKDOT": "CheckDot", "CHECKR": "CheckerChain", "CHECOIN": "CheCoin", "CHED": "Giggleched", @@ -3573,6 +3587,7 @@ "CHINU": "Chubby Inu", "CHIP": "Chip", "CHIPI": "chipi", + "CHIPP": "Chip", "CHIPPY": "Chippy", "CHIPS": "CHIPS", "CHIRP": "Chirp Token", @@ -4350,6 +4365,7 @@ "CVX": "Convex Finance", "CVXCRV": "Convex CRV", "CVXFXS": "Convex FXS", + "CVXON": "Chevron (Ondo Tokenized)", "CVXX": "Chevron xStock", "CW": "CardWallet", "CWA": "Chris World Asset", @@ -4741,6 +4757,7 @@ "DEPAY": "DePay", "DEPIN": "DEPIN", "DEPINU": "Depression Inu", + "DEPLOYR": "Deployr", "DEPO": "Depo", "DEPTH": "Depth Token", "DEQ": "Dequant", @@ -5363,6 +5380,7 @@ "DUA": "Brillion", "DUAL": "DUAL", "DUALDAOTOKEN": "Dual Finance", + "DUALV1": "BLOCKv", "DUB": "DubCoin", "DUBAICAT": "Dubai Cat", "DUBBZ": "Dubbz", @@ -5548,6 +5566,7 @@ "ECHO": "Echo", "ECHOBOT": "ECHO BOT", "ECHOD": "EchoDEX", + "ECHON": "iShares MSCI Chile ETF (Ondo Tokenized)", "ECHT": "e-Chat", "ECI": "Euro Cup Inu", "ECKODAO": "eckoDAO", @@ -6110,6 +6129,7 @@ "EVERGROW": "EverGrowCoin", "EVERLIFE": "EverLife.AI", "EVERMOON": "EverMoon", + "EVERRISE": "EverRise", "EVERV": "EverValue Coin", "EVERY": "Everyworld", "EVIL": "EvilCoin", @@ -6160,6 +6180,7 @@ "EXN": "Exeno", "EXNT": "EXNT", "EXO": "Exosis", + "EXODON": "Exodus Movement (Ondo Tokenized)", "EXOS": "Exobots", "EXP": "Expanse", "EXPAND": "Gems", @@ -6213,6 +6234,7 @@ "FACTR": "Defactor", "FACTRPAY": "FactR", "FACY": "ArAIstotle Fact Checker", + "FADEWALLET": "FadeWallet Token", "FADO": "FADO Go", "FAFO": "FAFO", "FAFOSOL": "Fafo", @@ -6312,6 +6334,7 @@ "FCT": "FirmaChain", "FCTC": "FaucetCoin", "FCTR": "FactorDAO", + "FCXON": "Freeport-McMoRan (Ondo Tokenized)", "FDC": "FDrive Coin", "FDGC": "FINTECH DIGITAL GOLD COIN", "FDLS": "FIDELIS", @@ -6364,6 +6387,7 @@ "FFCT": "FortFC", "FFM": "Files.fm Library", "FFN": "Fairy Forest", + "FFOGON": "Franklin Focused Growth ETF (Ondo Tokenized)", "FFTP": "FIGHT FOR THE PEOPLE", "FFUEL": "getFIFO", "FFYI": "Fiscus FYI", @@ -6535,6 +6559,7 @@ "FLOOR": "FloorDAO", "FLOP": "Big Floppa", "FLOPPA": "Floppa Cat", + "FLOR": "FLORK", "FLORK": "FLORK BNB", "FLORKY": "Florky", "FLOSHIDO": "FLOSHIDO INU", @@ -6549,6 +6574,7 @@ "FLOWP": "Flow Protocol", "FLOYX": "Floyx", "FLP": "Gameflip", + "FLQLON": "Franklin US Large Cap Multifactor Index ETF (Ondo Tokenized)", "FLR": "Flare", "FLRBRG": "Floor Cheese Burger", "FLRS": "Flourish Coin", @@ -6802,6 +6828,7 @@ "FSN": "Fusion", "FSNV1": "Fusion v1", "FSO": "FSociety", + "FSOLON": "Fidelity Solana Fund (Ondo Tokenized)", "FST": "FreeStyle Token", "FSTC": "FastCoin", "FSTR": "Fourth Star", @@ -7131,6 +7158,7 @@ "GENS": "Genshiro", "GENSLR": "Good Gensler", "GENSTAKE": "Genstake", + "GENSYN": "Gensyn", "GENT": "Gentleman", "GENX": "Genx Token", "GENXNET": "Genesis Network", @@ -7313,6 +7341,7 @@ "GLR": "Glory Finance", "GLS": "Glacier", "GLT": "GlobalToken", + "GLTRON": "abrdn Physical Precious Metals Basket Shares ETF (Ondo Tokenized)", "GLUE": "Glue", "GLX": "GalaxyCoin", "GLYPH": "GlyphCoin", @@ -7569,10 +7598,11 @@ "GRIDZ": "GridZone.io", "GRIFFAIN": "GRIFFAIN", "GRIFT": "ORBIT", - "GRIM": "GRIMREAPER", + "GRIM": "GrimHustle", "GRIMACE": "Grimace", "GRIMEVO": "Grim EVO", "GRIMEX": "SpaceGrime", + "GRIMREAPER": "GRIMREAPER", "GRIN": "Grin", "GRIND": "Self Improving", "GRIPPY": "GRIPPY", @@ -7955,6 +7985,7 @@ "HEWE": "Health & Wealth", "HEX": "HEX", "HEXC": "HexCoin", + "HEYFLORK": "HeyFlork", "HEZ": "Hermez Network Token", "HF": "Have Fun", "HFI": "Holder Finance", @@ -8348,11 +8379,12 @@ "IBG": "iBG Token", "IBGT": "Infrared BGT", "IBIT": "InfinityBit Token", + "IBITON": "iShares Bitcoin Trust (Ondo Tokenized)", "IBMX": "International Business Machines xStock", "IBNB": "iBNB", "IBP": "Innovation Blockchain Payment", "IBS": "Irbis Network", - "IC": "Ignition", + "IC": "Icy", "ICA": "Icarus Network", "ICAP": "ICAP Token", "ICASH": "ICASH", @@ -8442,6 +8474,7 @@ "IGGT": "The Invincible Game Token", "IGI": "Igi", "IGNIS": "Ignis", + "IGNITION": "Ignition", "IGT": "Infinitar", "IGTT": "IGT", "IGU": "IguVerse", @@ -8496,7 +8529,6 @@ "IMS": "Independent Money System", "IMST": "Imsmart", "IMT": "Immortal Token", - "IMU": "Immunefi", "IMUSIFY": "imusify", "IMVR": "ImmVRse", "IMX": "Immutable X", @@ -8509,11 +8541,13 @@ "INCEPT": "Incept", "INCNT": "Incent", "INCO": "InfinitiCoin", + "INCOME": "Universal High Income", "INCORGNITO": "Incorgnito", "INCP": "InceptionCoin", "INCREMENTUM": "Incrementum", "INCX": "INCX Coin", "IND": "Indorse", + "INDAON": "iShares MSCI India ETF (Ondo Tokenized)", "INDAY": "Independence Day", "INDEPENDENCEDAY": "Independence Day", "INDEX": "Index Cooperative", @@ -8621,6 +8655,7 @@ "IONC": "IONChain", "IONOMY": "Ionomy", "IONP": "Ion Power Token", + "IONQON": "IonQ (Ondo Tokenized)", "IONX": "Charged Particles", "IONZ": "IONZ", "IOP": "Internet of People", @@ -8704,6 +8739,7 @@ "ITALOCOIN": "Italocoin", "ITAM": "ITAM Games", "ITAMCUBE": "CUBE", + "ITAON": "iShares US Aerospace and Defense ETF (Ondo Tokenized)", "ITC": "IoT Chain", "ITE": "Idle Tribe Era", "ITEM": "ITEMVERSE", @@ -9377,6 +9413,7 @@ "KONET": "KONET", "KONG": "KONG", "KONO": "Konomi Network", + "KOON": "Coca-Cola (Ondo Tokenized)", "KORA": "Kortana", "KORC": "King of Referral Coin", "KORE": "KORE Vault", @@ -9490,6 +9527,7 @@ "KWAI": "KWAI", "KWATT": "4New", "KWD": "KIWI DEFI", + "KWEBON": "KraneShares CSI China Internet ETF (Ondo Tokenized)", "KWEEN": "KWEEN", "KWENTA": "Kwenta", "KWH": "KWHCoin", @@ -9877,6 +9915,7 @@ "LMR": "Lumerin", "LMT": "LIMITUS", "LMTOKEN": "LM Token", + "LMTON": "Lockheed (Ondo Tokenized)", "LMTS": "Limitless Official Token", "LMWR": "LimeWire Token", "LMXC": "LimonX", @@ -10118,6 +10157,7 @@ "LUNES": "Lunes", "LUNG": "LunaGens", "LUNR": "Lunr Token", + "LUNRON": "Intuitive Machines (Ondo Tokenized)", "LUPIN": "LUPIN", "LUR": "Lumera", "LUS": "Luna Rush", @@ -10295,7 +10335,8 @@ "MANUSAI": "Manus AI Agent", "MANYU": "Manyu", "MANYUDOG": "MANYU", - "MAO": "Mao", + "MAO": "MAO", + "MAOMEME": "Mao", "MAOW": "MAOW", "MAP": "MAP Protocol", "MAPC": "MapCoin", @@ -11573,6 +11614,7 @@ "NBAR": "NOBAR", "NBC": "Niobium", "NBD": "Never Back Down", + "NBISON": "Nebius Group (Ondo Tokenized)", "NBIT": "NetBit", "NBL": "Nobility", "NBLU": "NuriTopia", @@ -11649,6 +11691,7 @@ "NEKOS": "Nekocoin", "NEKTAR": "Nektar Token", "NEMO": "NEMO", + "NEMON": "Newmont (Ondo Tokenized)", "NEMS": "The Nemesis", "NEO": "NEO", "NEOG": "NEO Gold", @@ -11938,6 +11981,7 @@ "NOVA": "Nova Finance", "NOVAAI": "Nova AI", "NOW": "NOW Token", + "NOWON": "ServiceNow (Ondo Tokenized)", "NOX": "NITRO", "NOXB": "Noxbox", "NPAS": "New Paradigm Assets Solution", @@ -12218,6 +12262,7 @@ "OHNOGG": "OHNHO (ohno.gg)", "OHO": "OHO", "OICOIN": "Osmium Investment Coin", + "OIHON": "VanEck Oil Services ETF (Ondo Tokenized)", "OIIAOIIA": "spinning cat", "OIK": "Space Nation", "OIL": "Oiler", @@ -12314,8 +12359,9 @@ "ONION": "DeepOnion", "ONIT": "ONBUFF", "ONIX": "Onix", - "ONL": "On.Live", + "ONL": "OneLink", "ONLINE": "Onlinebase", + "ONLIVE": "On.Live", "ONLY": "OnlyCam", "ONLYCUMIES": "OnlyCumies", "ONLYFANSCOINS": "$OFC Coin", @@ -12375,6 +12421,7 @@ "OPES": "Opes", "OPET": "Γ•petFoundation", "OPEX": "Optherium Token", + "OPG": "OpenGradient", "OPHX": "Operation Phoenix", "OPINU": "Optimus Inu", "OPIUM": "Opium", @@ -12675,6 +12722,7 @@ "PATRIOT": "Patriot", "PATTON": "Patton", "PAUL": "Elephant Penguin", + "PAVEON": "Global X US Infrastructure Development ETF (Ondo Tokenized)", "PAVIA": "Pavia", "PAVO": "Pavocoin", "PAW": "PAWSWAP", @@ -13397,6 +13445,7 @@ "PPI": "Primpy", "PPIZZA": "P Pizza", "PPL": "Pink Panther Lovers", + "PPLTON": "abrdn Physical Platinum Shares ETF (Ondo Tokenized)", "PPM": "Punk Panda Messenger", "PPN": "Puppies Network", "PPOVR": "POVR", @@ -13443,6 +13492,7 @@ "PRIMATE": "Primate", "PRIME": "Echelon Prime", "PRIMECHAIN": "PrimeChain", + "PRIMECOIN": "PrimeCoin", "PRIMEETH": "Prime Staked ETH", "PRIMEX": "Primex Finance", "PRIN": "Print The Pepe", @@ -13792,6 +13842,7 @@ "QUBE": "Qube", "QUBIC": "Qubic", "QUBITICA": "Qubitica", + "QUBTON": "Quantum Computing (Ondo Tokenized)", "QUBY": "Quby", "QUDEFI": "Qudefi", "QUE": "Queen Of Memes", @@ -13966,6 +14017,7 @@ "RDR": "Rise of Defenders", "RDS": "Reger Diamond", "RDT": "Ridotto", + "RDWON": "Redwire (Ondo Tokenized)", "RDX": "Redux Protocol", "REA": "Realisto", "REACH": "/Reach", @@ -14028,6 +14080,7 @@ "REFI": "Realfinance Network", "REFLECT": "REFLECT", "REFLECTO": "Reflecto", + "REFLECTOUSD": "Reflecto USD", "REFTOKEN": "RefToken", "REFUND": "Refund", "REG": "RealToken Ecosystem Governance", @@ -14037,6 +14090,7 @@ "REGEN": "Regen Network", "REGENT": "REGENT COIN", "REGI": "Resistance Girl", + "REGNON": "Regeneron Pharmaceuticals (Ondo Tokenized)", "REGRET": "Regret", "REHA": "Resistance Hamster", "REHAB": "NFT Rehab", @@ -14202,7 +14256,7 @@ "RIPT": "RiptideCoin", "RIPTO": "RiptoBuX", "RIS": "Riser", - "RISE": "EverRise", + "RISE": "Rise NASA", "RISECOIN": "Rise coin", "RISEP": "Rise Protocol", "RISEVISION": "Rise", @@ -14227,6 +14281,7 @@ "RKC": "Royal Kingdom Coin", "RKEY": "RKEY", "RKI": "RAKHI", + "RKLBON": "Rocket Lab (Ondo Tokenized)", "RKN": "RAKON", "RKR": "REAKTOR", "RKT": "Rock Token", @@ -14426,6 +14481,7 @@ "RUGPROOF": "Launchpad", "RUGPULL": "Captain Rug Pull", "RUGZ": "pulltherug.finance", + "RUJI": "Rujira", "RULER": "Ruler Protocol", "RUM": "RUM Pirates of The Arrland Token", "RUN": "Speedrun", @@ -14440,7 +14496,7 @@ "RUP": "Rupee", "RUPX": "Rupaya", "RURI": "Ruri - Truth Terminal's Crush", - "RUSD": "Reflecto USD", + "RUSD": "Royal Dollar", "RUSH": "RUSH COIN", "RUSHCMC": "RUSHCMC", "RUSSELL": "Russell", @@ -14659,6 +14715,7 @@ "SBSC": "Subscriptio", "SBT": "SOLBIT", "SBTC": "Super Bitcoin", + "SBUXON": "Starbucks (Ondo Tokenized)", "SC": "Siacoin", "SC20": "Shine Chain", "SCA": "Scallop", @@ -14675,6 +14732,7 @@ "SCASH": "SpaceCash", "SCAT": "Sad Cat Token", "SCC": "StockChain Coin", + "SCCOON": "Southern Copper (Ondo Tokenized)", "SCCP": "S.C. Corinthians Fan Token", "SCDS": "Shrine Cloud Storage Network", "SCF": "Smoking Chicken Fish", @@ -15054,6 +15112,7 @@ "SHX": "Stronghold Token", "SHXV1": "Stronghold Token v1", "SHY": "Shytoshi Kusama", + "SHYON": "iShares 1-3 Year Treasury Bond ETF (Ondo Tokenized)", "SHYTCOIN": "ShytCoin", "SI": "Siren", "SI14": "Si14", @@ -15248,6 +15307,7 @@ "SLUGDENG": "SLUG DENG", "SLUMBO": "SLUMBO", "SLVLUSD": "Staked Level USD", + "SLVN": "SLVNToken", "SLVON": "iShares Silver Trust (Ondo Tokenized)", "SLVX": "eToro Silver", "SLX": "SLIMEX", @@ -15339,6 +15399,7 @@ "SNC": "SunContract", "SNCT": "SnakeCity", "SND": "Sandcoin", + "SNDKON": "SanDisk (Ondo Tokenized)", "SNE": "StrongNode", "SNEED": "Sneed", "SNEK": "Snek", @@ -15632,10 +15693,11 @@ "SPIDERMAN": "SPIDERMAN BITCOIN", "SPIDEY": "Spidey", "SPIK": "Spike", - "SPIKE": "Spiking", + "SPIKE": "SPIKE", "SPIKE1984": "Spike 1984", "SPIKECOIN": "SPIKE", "SPIKEFURIE": "SPIKE", + "SPIKING": "Spiking", "SPILLWAYS": "SpillWays", "SPIN": "SPIN Protocol", "SPINT": "Spintria", @@ -15934,6 +15996,7 @@ "STRA": "STRAY", "STRAKS": "Straks", "STRAT": "Strategic Hub for Innovation in Blockchain", + "STRAWBE": "Strawberry In Bloom", "STRAX": "Stratis", "STRAY": "Stray Dog", "STRAYDOG": "Stray Dog", @@ -15981,6 +16044,7 @@ "STV": "Sativa Coin", "STWEMIX": "Staked WEMIX", "STX": "Stacks", + "STXON": "Seagate (Ondo Tokenized)", "STYL": "Stylike Governance", "STYLE": "Style", "STZ": "99Starz", @@ -16801,6 +16865,7 @@ "TRADECHAIN": "Trade Chain", "TRADETIDE": "Trade Tide Token", "TRADEX": "TradeX AI", + "TRADIX": "Tradix", "TRADOOR": "Tradoor", "TRAI": "Trackgood AI", "TRAID": "Traid", @@ -16881,6 +16946,7 @@ "TROLLRUN": "TROLL", "TROLLS": "trolls in a memes world", "TRONBETLIVE": "TRONbetLive", + "TRONBULL": "Tron Bull", "TRONDOG": "TronDog", "TRONI": "Tron Inu", "TRONP": "Donald Tronp", @@ -17015,6 +17081,7 @@ "TTM": "Tradetomato", "TTN": "TTN", "TTNT": "TITA Project", + "TTPA": "TRUMPTOPIA", "TTT": "TRUMPETTOKEN", "TTTU": "T-Project", "TTU": "TaTaTu", @@ -17077,7 +17144,7 @@ "TWP": "TrumpWifPanda", "TWT": "Trust Wallet Token", "TWURTLE": "twurtle the turtle", - "TX": "Tradix", + "TX": "tx", "TX20": "Trex20", "TXA": "TXA", "TXAG": "tSILVER", @@ -17160,6 +17227,7 @@ "UDT": "Unlock Protocol", "UE": "UE Coin", "UEC": "United Emirates Coin", + "UECON": "Uranium Energy (Ondo Tokenized)", "UEDC": "United Emirate Decentralized Coin", "UENC": "UniversalEnergyChain", "UET": "Useless Ethereum Token", @@ -17239,6 +17307,7 @@ "UNF": "Unfed Coin", "UNFI": "Unifi Protocol DAO", "UNFK": "UNFK", + "UNGON": "US Natural Gas Fund (Ondo Tokenized)", "UNHX": "UnitedHealth xStock", "UNI": "Uniswap Protocol Token", "UNIART": "UNIART", @@ -17276,6 +17345,7 @@ "UNITE": "Unite", "UNITED": "UnitedCoins", "UNITEDTRADERS": "United Traders Token", + "UNITOKEN": "Uni Token", "UNITPROV2": "Unit Protocol New", "UNITRADE": "UniTrade", "UNITREEAI": "Unitree G1 AI", @@ -17292,17 +17362,18 @@ "UNO": "UnoRe", "UNOB": "Unobtanium", "UNP": "UNIPOLY", + "UNPON": "Union Pacific Corporation (Ondo Tokenized)", "UNQ": "UNQ", "UNQT": "Unique Utility Token", "UNR": "Unirealchain", "UNRC": "UniversalRoyalCoin", "UNS": "UNS TOKEN", "UNSHETH": "unshETH Ether", - "UNT": "Uni Token", + "UNT": "UnityWallet Token", "UNW": "UniWorld", "UOP": "Utopia Genesis Foundation", "UOS": "UOS", - "UP": "UpToken", + "UP": "Superform", "UPC": "UPCX", "UPCG": "Upcomings", "UPCO2": "Universal Carbon", @@ -17317,6 +17388,7 @@ "UPRO": "ULTRAPRO", "UPS": "UPFI Network", "UPT": "UPROCK", + "UPTOKEN": "UpToken", "UPTOP": "UPTOP", "UPTOS": "UPTOS", "UPUNK": "Unicly CryptoPunks Collection", @@ -17327,6 +17399,7 @@ "URAC": "Uranus", "URALS": "Urals Coin", "URANUS": "Uranus", + "URAON": "Global X Uranium ETF (Ondo Tokenized)", "URFA": "Urfaspor Token", "URMOM": "urmom", "URO": "Urolithin A", @@ -17575,7 +17648,7 @@ "VEC2": "VectorCoin 2.0", "VECT": "Vectorium", "VECTOR": "VectorChat.ai", - "VEE": "BLOCKv", + "VEE": "Vee Token", "VEED": "VEED", "VEEN": "LIVEEN", "VEETOKEN": "Vee Token", @@ -17638,6 +17711,7 @@ "VEXT": "Veloce", "VFIL": "Venus Filecoin", "VFOX": "VFOX", + "VFSON": "VinFast Auto (Ondo Tokenized)", "VFT": "Value Finance", "VFX": "ViFoxCoin", "VFY": "zkVerify", @@ -17758,6 +17832,7 @@ "VNM": "Venom", "VNN": "VINU Network", "VNO": "Veno Finance", + "VNQON": "Vanguard Real Estate ETF (Ondo Tokenized)", "VNST": "VNST Stablecoin", "VNT": "VNT Chain", "VNTR": "Venture Mind AI", @@ -17831,6 +17906,7 @@ "VRSW": "VirtuSwap", "VRT": "Venus Reward Token", "VRTX": "Vertex Protocol", + "VRTXON": "Vertex Pharmaceuticals (Ondo Tokenized)", "VRTY": "Verity", "VRX": "Verox", "VS": "veSync", @@ -17844,6 +17920,7 @@ "VSOL": "VSolidus", "VSP": "Vesper Finance", "VSTA": "Vesta Finance", + "VSTON": "Vistra (Ondo Tokenized)", "VSTR": "Vestra DAO", "VSUI": "Volo Staked SUI", "VSX": "Versus-X", @@ -18038,6 +18115,7 @@ "WCUSD": "Wrapped Celo Dollar", "WDAI": "Dai (Wormhole)", "WDC": "WorldCoin", + "WDCON": "Western Digital (Ondo Tokenized)", "WDOG": "Winterdog", "WDOGE": "Wrapped Dogecoin", "WDOT": "WDOT", @@ -18273,6 +18351,7 @@ "WMM": "Weird Medieval Memes", "WMN": "WebMind Network", "WMNT": "Wrapped Mantle", + "WMON": "Waste Management (Ondo Tokenized)", "WMOXY": "Moxy", "WMT": "World Mobile Token v1", "WMTON": "Walmart (Ondo Tokenized)", @@ -18304,9 +18383,10 @@ "WOID": "WORLD ID", "WOJ": "Wojak Finance", "WOJA": "Wojak", - "WOJAK": "Wojak", + "WOJAK": "wojak", "WOJAK2": "Wojak 2.0 Coin", "WOJAKC": "Wojak Coin", + "WOJAKIO": "Wojak", "WOKB": "Wrapped OKB", "WOKIE": "Wokie Plumpkin by Virtuals", "WOKT": "Wrapped OKT", @@ -18462,6 +18542,7 @@ "WXRP": "Wrapped XRP", "WXT": "WXT", "WYAC": "Woman Yelling At Cat", + "WYDE": "WYDE: End Hunger", "WYN": "Wynn", "WYNN": "Anita Max Wynn", "WYS": "Wysker", @@ -18683,6 +18764,7 @@ "XMN": "xMoney", "XMO": "Monero Original", "XMON": "XMON", + "XMONEY": "X Money", "XMOON": "r/CryptoCurrency Moons v1", "XMP": "Mapt.Coin", "XMR": "Monero", @@ -18741,7 +18823,7 @@ "XPL": "Plasma", "XPLA": "XPLA", "XPLL": "ParallelChain", - "XPM": "PrimeCoin", + "XPM": "XPMarket Token", "XPN": "PANTHEON X", "XPND": "Time Raiders", "XPNET": "XP Network", @@ -18860,6 +18942,7 @@ "XVS": "Venus", "XWC": "WhiteCoin", "XWG": "X World Games", + "XWGT": "Wodo Gaming Token", "XWIN": "xWIN Finance", "XWP": "Swap", "XWT": "World Trade Funds", @@ -19102,7 +19185,8 @@ "ZEBU": "ZEBU", "ZEC": "ZCash", "ZECD": "ZCashDarkCoin", - "ZED": "ZedCoins", + "ZED": "ZED Token", + "ZEDCOIN": "ZedCoin", "ZEDD": "ZedDex", "ZEDTOKEN": "Zed Token", "ZEDX": "ZEDX Π‘oin", From 80de33fdcb0a9b824a1bd85b729191b649237e1e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 7 May 2026 18:12:03 +0300 Subject: [PATCH 06/11] Task/upgrade @ionic/angular to version 8.8.5 (#6829) * Upgrade @ionic/angular to version 8.8.5 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 16 ++++++++-------- package.json | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 246e5e289..91999d3dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Migrated various components from `NgClass` to class bindings - Refreshed the cryptocurrencies list +- Upgraded `@ionic/angular` from version `8.8.1` to `8.8.5` - Upgraded `Nx` from version `22.6.5` to `22.7.1` ### Fixed diff --git a/package-lock.json b/package-lock.json index e730f44f0..07e6116d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "@codewithdan/observable-store": "2.2.15", "@date-fns/utc": "2.1.1", "@internationalized/number": "3.6.5", - "@ionic/angular": "8.8.1", + "@ionic/angular": "8.8.5", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.4", "@nestjs/cache-manager": "3.1.0", @@ -5005,12 +5005,12 @@ } }, "node_modules/@ionic/angular": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-8.8.1.tgz", - "integrity": "sha512-Jp7LbouSHAnR00Dsa8qE1CSOZNqAfBCO0XKXScJNz8NKVoZe5fPGy/CboehGtAQ1xgzh2eDa15zMmyetXjAkYA==", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-8.8.5.tgz", + "integrity": "sha512-wUYKPhLzyrlRIoqM5lk0wCx2CCebxHdQBMXZdBQBvE69XlqEmkoxbbPW0YpYJvY5wkhZaDa2lzLIHo/lfijqqQ==", "license": "MIT", "dependencies": { - "@ionic/core": "8.8.1", + "@ionic/core": "8.8.5", "ionicons": "^8.0.13", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -5024,9 +5024,9 @@ } }, "node_modules/@ionic/core": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.1.tgz", - "integrity": "sha512-ksOUHyOEqoyUIVWcwCNSFZVGwNfP1DKrUVeN/Cdk/Xl9Rdd/5MLHGsrOQpWQfoCf3Csdnw+KHHPrXz/2fzMkMA==", + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.8.5.tgz", + "integrity": "sha512-gVaEeLVNn6QGTmxmiC5J82k0WYEqDSuP6Hxmf4zHsBQptlIDmVOmbqzz8BIevQgb8q/s7ykwE0NGyqRu4BVsqg==", "license": "MIT", "dependencies": { "@stencil/core": "4.43.0", diff --git a/package.json b/package.json index 0d7c961cc..2d7b56031 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "@codewithdan/observable-store": "2.2.15", "@date-fns/utc": "2.1.1", "@internationalized/number": "3.6.5", - "@ionic/angular": "8.8.1", + "@ionic/angular": "8.8.5", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.4", "@nestjs/cache-manager": "3.1.0", From c2dc2163054a6b91fd562bc1051133eca7b5d5d2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 8 May 2026 07:35:23 +0300 Subject: [PATCH 07/11] Task/upgrade fuse.js to version 7.3.0 (#6819) * Upgrade fuse.js to version 7.3.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 12 ++++++++---- package.json | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91999d3dd..d679654f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Migrated various components from `NgClass` to class bindings - Refreshed the cryptocurrencies list - Upgraded `@ionic/angular` from version `8.8.1` to `8.8.5` +- Upgraded `fuse.js` from version `7.1.0` to `7.3.0` - Upgraded `Nx` from version `22.6.5` to `22.7.1` ### Fixed diff --git a/package-lock.json b/package-lock.json index 07e6116d1..ed0bc794e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,7 +68,7 @@ "dotenv-expand": "12.0.3", "envalid": "8.1.1", "fast-redact": "3.5.0", - "fuse.js": "7.1.0", + "fuse.js": "7.3.0", "google-spreadsheet": "3.2.0", "helmet": "7.0.0", "http-status-codes": "2.3.0", @@ -23216,12 +23216,16 @@ } }, "node_modules/fuse.js": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", - "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.3.0.tgz", + "integrity": "sha512-plz8RVjfcDedTGfVngWH1jmJvBvAwi1v2jecfDerbEnMcmOYUEEwKFTHbNoCiYyzaK2Ws8lABkTCcRSqCY1q4w==", "license": "Apache-2.0", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/krisk" } }, "node_modules/gaxios": { diff --git a/package.json b/package.json index 2d7b56031..c347eeed7 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "dotenv-expand": "12.0.3", "envalid": "8.1.1", "fast-redact": "3.5.0", - "fuse.js": "7.1.0", + "fuse.js": "7.3.0", "google-spreadsheet": "3.2.0", "helmet": "7.0.0", "http-status-codes": "2.3.0", From c7806038d409691d11efb4ded2f0baf4689dca79 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 9 May 2026 08:37:14 +0300 Subject: [PATCH 08/11] Task/upgrade countries-and-timezones to version 3.9.0 (#6817) * Upgrade countries-and-timezones to version 3.9.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 d679654f5..1f80a4399 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Migrated various components from `NgClass` to class bindings - Refreshed the cryptocurrencies list - Upgraded `@ionic/angular` from version `8.8.1` to `8.8.5` +- Upgraded `countries-and-timezones` from version `3.8.0` to `3.9.0` - Upgraded `fuse.js` from version `7.1.0` to `7.3.0` - Upgraded `Nx` from version `22.6.5` to `22.7.1` diff --git a/package-lock.json b/package-lock.json index ed0bc794e..0f1bd2dc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,7 @@ "class-validator": "0.15.1", "color": "5.0.3", "cookie-parser": "1.4.7", - "countries-and-timezones": "3.8.0", + "countries-and-timezones": "3.9.0", "countries-list": "3.3.0", "countup.js": "2.10.0", "date-fns": "4.1.0", @@ -18906,9 +18906,9 @@ } }, "node_modules/countries-and-timezones": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/countries-and-timezones/-/countries-and-timezones-3.8.0.tgz", - "integrity": "sha512-+Ze9h5f4dQpUwbzTm0DEkiPiZyim9VHV4/mSnT4zNYJnrnfwsKjAZPtnp7J5VzejCDgySs+2SSc6MDdCnD43GA==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/countries-and-timezones/-/countries-and-timezones-3.9.0.tgz", + "integrity": "sha512-3upkVtUfZgdp5xOQI/Deg1ye73ae6bygJMO4UvtUi6wLjwcj7cBqx2PzSZ1VL8i5iveBbjhsQp2Judx7kPKivA==", "license": "MIT", "engines": { "node": ">=8.x", diff --git a/package.json b/package.json index c347eeed7..efd32c985 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "class-validator": "0.15.1", "color": "5.0.3", "cookie-parser": "1.4.7", - "countries-and-timezones": "3.8.0", + "countries-and-timezones": "3.9.0", "countries-list": "3.3.0", "countup.js": "2.10.0", "date-fns": "4.1.0", From 4ce87eab1a0de6e1d24ba795300f72b2f8ae0ac3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 10 May 2026 11:37:15 +0300 Subject: [PATCH 09/11] Task/upgrade Bull Board to version 7.0.0 (#6786) * Upgrade bull-board to version 7.0.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 61 +++++++++++++++++++++++++++++++---------------- package.json | 6 ++--- 3 files changed, 44 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f80a4399..1f7d95cb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Migrated various components from `NgClass` to class bindings - Refreshed the cryptocurrencies list - Upgraded `@ionic/angular` from version `8.8.1` to `8.8.5` +- Upgraded `bull-board` from version `6.20.3` to `7.0.0` - Upgraded `countries-and-timezones` from version `3.8.0` to `3.9.0` - Upgraded `fuse.js` from version `7.1.0` to `7.3.0` - Upgraded `Nx` from version `22.6.5` to `22.7.1` diff --git a/package-lock.json b/package-lock.json index 0f1bd2dc7..d061349b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,9 +21,9 @@ "@angular/platform-browser-dynamic": "21.2.7", "@angular/router": "21.2.7", "@angular/service-worker": "21.2.7", - "@bull-board/api": "6.20.3", - "@bull-board/express": "6.20.3", - "@bull-board/nestjs": "6.20.3", + "@bull-board/api": "7.0.0", + "@bull-board/express": "7.0.0", + "@bull-board/nestjs": "7.0.0", "@codewithdan/observable-store": "2.2.15", "@date-fns/utc": "2.1.1", "@internationalized/number": "3.6.5", @@ -3547,36 +3547,48 @@ "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@bull-board/api": { - "version": "6.20.3", - "resolved": "https://registry.npmjs.org/@bull-board/api/-/api-6.20.3.tgz", - "integrity": "sha512-cDrsJJsmF4DbbY8/5oHxO4qFtyFjxexsWQKHowsud/8H4mtZN7MZg4fCmNzfaxc9Ov7V6r9Y9F5G2Mq6t7ZEJg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@bull-board/api/-/api-7.0.0.tgz", + "integrity": "sha512-ISNspLHVmUWUSq/eLw+wd1FuBBUnqpLbYP2xUNmehpfKhS+NoZWMbBvqjUYVeE/HLfUkRcR1edzMKpl5n9zlSw==", "license": "MIT", "dependencies": { "redis-info": "^3.1.0" }, "peerDependencies": { - "@bull-board/ui": "6.20.3" + "@bull-board/ui": "7.0.0" } }, "node_modules/@bull-board/express": { - "version": "6.20.3", - "resolved": "https://registry.npmjs.org/@bull-board/express/-/express-6.20.3.tgz", - "integrity": "sha512-S6BGeSf/PLwjx5W1IrKxoV8G6iiMmLqT/pldZ6BiC1IDldedisTtAdL1z117swXPv1H7/3hy0vr03dUr8bUCPg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@bull-board/express/-/express-7.0.0.tgz", + "integrity": "sha512-3Tc/EyU5PQMTcTzcafFSrmRDiEbJBEU/EaVQ5OVYcuJ7DZCp5Pkvm0/2VtaCe2uywdtwn0ZaynlSIpB27FKX6A==", "license": "MIT", "dependencies": { - "@bull-board/api": "6.20.3", - "@bull-board/ui": "6.20.3", - "ejs": "^3.1.10", + "@bull-board/api": "7.0.0", + "@bull-board/ui": "7.0.0", + "ejs": "^5.0.2", "express": "^5.2.1" } }, + "node_modules/@bull-board/express/node_modules/ejs": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-5.0.2.tgz", + "integrity": "sha512-IpbUaI/CAW86l3f+T8zN0iggSc0LmMZLcIW5eRVStLVNCoTXkE0YlncbbH50fp8Cl6zHIky0sW2uUbhBqGw0Jw==", + "license": "Apache-2.0", + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.12.18" + } + }, "node_modules/@bull-board/nestjs": { - "version": "6.20.3", - "resolved": "https://registry.npmjs.org/@bull-board/nestjs/-/nestjs-6.20.3.tgz", - "integrity": "sha512-VFi96Z2M8k3G26H1ivzQnpjKszxh90vrUm78VtMZH/sh8wjm88mJFDXcOgFutOaddx7cc9VNXlKsTTcu6okPFQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@bull-board/nestjs/-/nestjs-7.0.0.tgz", + "integrity": "sha512-ypXm0eJHIMQzjN+3fjf84cVxugBg/K4Bpo0eYcV4u/AsteR/dnr6e7F79ICRgg1WWoczqmSMl0JhlmykpyhAMg==", "license": "MIT", "peerDependencies": { - "@bull-board/api": "^6.20.3", + "@bull-board/api": "^7.0.0", "@nestjs/bull-shared": "^10.0.0 || ^11.0.0", "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0", "@nestjs/core": "^9.0.0 || ^10.0.0 || ^11.0.0", @@ -3585,12 +3597,12 @@ } }, "node_modules/@bull-board/ui": { - "version": "6.20.3", - "resolved": "https://registry.npmjs.org/@bull-board/ui/-/ui-6.20.3.tgz", - "integrity": "sha512-oANyYoW0X+xd0j/09DRyh3u7Q3wqBtXiLEWyZUJIi/Bjp/hINwiw20RwWuRcaFkqkFylEJL9l+pjmeSA9X5L2A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@bull-board/ui/-/ui-7.0.0.tgz", + "integrity": "sha512-AnKeklpDn0iMFgu4ukDU6uTNmw4oudl07G4k2Fh95SknKDrXSiWRV0N1TGUawMqyfG1Yi5P/W/8d7raBq/Uw6w==", "license": "MIT", "dependencies": { - "@bull-board/api": "6.20.3" + "@bull-board/api": "7.0.0" } }, "node_modules/@cacheable/utils": { @@ -16843,6 +16855,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, "license": "MIT" }, "node_modules/async-function": { @@ -17160,6 +17173,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, "node_modules/base64-js": { @@ -21132,6 +21146,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" @@ -22542,6 +22557,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" @@ -22551,6 +22567,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -22560,6 +22577,7 @@ "version": "5.1.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -25476,6 +25494,7 @@ "version": "10.9.4", "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "async": "^3.2.6", diff --git a/package.json b/package.json index efd32c985..9ed027e9c 100644 --- a/package.json +++ b/package.json @@ -66,9 +66,9 @@ "@angular/platform-browser-dynamic": "21.2.7", "@angular/router": "21.2.7", "@angular/service-worker": "21.2.7", - "@bull-board/api": "6.20.3", - "@bull-board/express": "6.20.3", - "@bull-board/nestjs": "6.20.3", + "@bull-board/api": "7.0.0", + "@bull-board/express": "7.0.0", + "@bull-board/nestjs": "7.0.0", "@codewithdan/observable-store": "2.2.15", "@date-fns/utc": "2.1.1", "@internationalized/number": "3.6.5", From 4da5c3cac9a2b3b9870e303614130949db238376 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 11 May 2026 08:04:49 +0300 Subject: [PATCH 10/11] Task/upgrade ai to version 6.0.174 (#6828) * Upgrade ai * @openrouter/ai-sdk-provider to version 2.9.0 * ai to version 6.0.174 * Add AI service health check and improve layout * Update changelog --- CHANGELOG.md | 2 + apps/api/src/app/endpoints/ai/ai.module.ts | 1 + apps/api/src/app/endpoints/ai/ai.service.ts | 13 +- apps/api/src/app/health/health.controller.ts | 31 ++- apps/api/src/app/health/health.module.ts | 2 + .../src/app/pages/api/api-page.component.ts | 65 ++++- apps/client/src/app/pages/api/api-page.html | 244 ++++++++++++------ .../app/pages/api/interfaces/interfaces.ts | 5 + libs/common/src/lib/interfaces/index.ts | 2 + .../ai-service-health-response.interface.ts | 3 + package-lock.json | 202 ++++----------- package.json | 4 +- 12 files changed, 335 insertions(+), 239 deletions(-) create mode 100644 apps/client/src/app/pages/api/interfaces/interfaces.ts create mode 100644 libs/common/src/lib/interfaces/responses/ai-service-health-response.interface.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f7d95cb7..b32868336 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Migrated various components from `NgClass` to class bindings - Refreshed the cryptocurrencies list - Upgraded `@ionic/angular` from version `8.8.1` to `8.8.5` +- Upgraded `@openrouter/ai-sdk-provider` from version `0.7.2` to `2.9.0` +- Upgraded `ai` from version `4.3.16` to `6.0.174` - Upgraded `bull-board` from version `6.20.3` to `7.0.0` - Upgraded `countries-and-timezones` from version `3.8.0` to `3.9.0` - Upgraded `fuse.js` from version `7.1.0` to `7.3.0` diff --git a/apps/api/src/app/endpoints/ai/ai.module.ts b/apps/api/src/app/endpoints/ai/ai.module.ts index eab4ecf8b..5267f40c8 100644 --- a/apps/api/src/app/endpoints/ai/ai.module.ts +++ b/apps/api/src/app/endpoints/ai/ai.module.ts @@ -28,6 +28,7 @@ import { AiService } from './ai.service'; @Module({ controllers: [AiController], + exports: [AiService], imports: [ ActivitiesModule, ApiModule, diff --git a/apps/api/src/app/endpoints/ai/ai.service.ts b/apps/api/src/app/endpoints/ai/ai.service.ts index d07768d69..362f4a728 100644 --- a/apps/api/src/app/endpoints/ai/ai.service.ts +++ b/apps/api/src/app/endpoints/ai/ai.service.ts @@ -1,4 +1,5 @@ import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { PROPERTY_API_KEY_OPENROUTER, @@ -36,11 +37,18 @@ export class AiService { ]; public constructor( + private readonly configurationService: ConfigurationService, private readonly portfolioService: PortfolioService, private readonly propertyService: PropertyService ) {} - public async generateText({ prompt }: { prompt: string }) { + public async generateText({ + prompt, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') + }: { + prompt: string; + requestTimeout?: number; + }) { const openRouterApiKey = await this.propertyService.getByKey( PROPERTY_API_KEY_OPENROUTER ); @@ -55,7 +63,8 @@ export class AiService { return generateText({ prompt, - model: openRouterService.chat(openRouterModel) + model: openRouterService.chat(openRouterModel), + timeout: requestTimeout }); } diff --git a/apps/api/src/app/health/health.controller.ts b/apps/api/src/app/health/health.controller.ts index 5542ae933..35f3fa348 100644 --- a/apps/api/src/app/health/health.controller.ts +++ b/apps/api/src/app/health/health.controller.ts @@ -1,5 +1,7 @@ +import { AiService } from '@ghostfolio/api/app/endpoints/ai/ai.service'; import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { + AiServiceHealthResponse, DataEnhancerHealthResponse, DataProviderHealthResponse } from '@ghostfolio/common/interfaces'; @@ -9,6 +11,7 @@ import { Get, HttpException, HttpStatus, + Logger, Param, Res, UseInterceptors @@ -21,7 +24,10 @@ import { HealthService } from './health.service'; @Controller('health') export class HealthController { - public constructor(private readonly healthService: HealthService) {} + public constructor( + private readonly aiService: AiService, + private readonly healthService: HealthService + ) {} @Get() public async getHealth(@Res() response: Response) { @@ -40,6 +46,29 @@ export class HealthController { } } + @Get('ai') + public async getHealthOfAiService( + @Res() response: Response + ): Promise> { + try { + const { text } = await this.aiService.generateText({ + prompt: `Reply with the word "OK" and nothing else.` + }); + + if (text === 'OK') { + return response + .status(HttpStatus.OK) + .json({ status: getReasonPhrase(StatusCodes.OK) }); + } + } catch (error) { + Logger.error(error, 'HealthController'); + } + + return response + .status(HttpStatus.SERVICE_UNAVAILABLE) + .json({ status: getReasonPhrase(StatusCodes.SERVICE_UNAVAILABLE) }); + } + @Get('data-enhancer/:name') public async getHealthOfDataEnhancer( @Param('name') name: string, diff --git a/apps/api/src/app/health/health.module.ts b/apps/api/src/app/health/health.module.ts index b8c4d5810..c36924121 100644 --- a/apps/api/src/app/health/health.module.ts +++ b/apps/api/src/app/health/health.module.ts @@ -1,3 +1,4 @@ +import { AiModule } from '@ghostfolio/api/app/endpoints/ai/ai.module'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { DataEnhancerModule } from '@ghostfolio/api/services/data-provider/data-enhancer/data-enhancer.module'; @@ -12,6 +13,7 @@ import { HealthService } from './health.service'; @Module({ controllers: [HealthController], imports: [ + AiModule, DataEnhancerModule, DataProviderModule, PropertyModule, diff --git a/apps/client/src/app/pages/api/api-page.component.ts b/apps/client/src/app/pages/api/api-page.component.ts index 357a08bbd..e75a51c73 100644 --- a/apps/client/src/app/pages/api/api-page.component.ts +++ b/apps/client/src/app/pages/api/api-page.component.ts @@ -4,6 +4,7 @@ import { } from '@ghostfolio/common/config'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { + AiServiceHealthResponse, DataProviderGhostfolioAssetProfileResponse, DataProviderGhostfolioStatusResponse, DividendsResponse, @@ -13,27 +14,42 @@ import { } from '@ghostfolio/common/interfaces'; import { CommonModule } from '@angular/common'; -import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { + HttpClient, + HttpErrorResponse, + HttpHeaders, + HttpParams +} from '@angular/common/http'; import { Component, DestroyRef, OnInit } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { MatCardModule } from '@angular/material/card'; import { format, startOfYear } from 'date-fns'; -import { map, Observable } from 'rxjs'; +import { isObject } from 'lodash'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +import { catchError, map, Observable, of, OperatorFunction } from 'rxjs'; + +import { FetchFailure, FetchResult } from './interfaces/interfaces'; @Component({ host: { class: 'page' }, - imports: [CommonModule], + imports: [CommonModule, MatCardModule, NgxSkeletonLoaderModule], selector: 'gf-api-page', styleUrls: ['./api-page.scss'], templateUrl: './api-page.html' }) export class GfApiPageComponent implements OnInit { - public assetProfile$: Observable; - public dividends$: Observable; - public historicalData$: Observable; - public isinLookupItems$: Observable; - public lookupItems$: Observable; - public quotes$: Observable; - public status$: Observable; + public aiServiceHealth$: Observable>; + public assetProfile$: Observable< + FetchResult + >; + public dividends$: Observable>; + public historicalData$: Observable< + FetchResult + >; + public isinLookupItems$: Observable>; + public lookupItems$: Observable>; + public quotes$: Observable>; + public status$: Observable>; private apiKey: string; @@ -45,6 +61,7 @@ export class GfApiPageComponent implements OnInit { public ngOnInit() { this.apiKey = prompt($localize`Please enter your Ghostfolio API key:`); + this.aiServiceHealth$ = this.fetchAiServiceHealth(); this.assetProfile$ = this.fetchAssetProfile({ symbol: 'AAPL' }); this.dividends$ = this.fetchDividends({ symbol: 'KO' }); this.historicalData$ = this.fetchHistoricalData({ symbol: 'AAPL' }); @@ -54,13 +71,33 @@ export class GfApiPageComponent implements OnInit { this.status$ = this.fetchStatus(); } + public isFetchFailure(value: unknown): value is FetchFailure { + return isObject(value) && value !== null && 'fetchError' in value; + } + + private catchFetchFailure(): OperatorFunction { + return catchError(({ error }: HttpErrorResponse) => { + const body = error as { message?: string; status?: string }; + const status = body?.status ?? 'Error'; + const fetchError = body?.message ? `${status}: ${body.message}` : status; + + return of({ fetchError }); + }) as OperatorFunction; + } + + private fetchAiServiceHealth() { + return this.http + .get('/api/v1/health/ai') + .pipe(this.catchFetchFailure(), takeUntilDestroyed(this.destroyRef)); + } + private fetchAssetProfile({ symbol }: { symbol: string }) { return this.http .get( `/api/v1/data-providers/ghostfolio/asset-profile/${symbol}`, { headers: this.getHeaders() } ) - .pipe(takeUntilDestroyed(this.destroyRef)); + .pipe(this.catchFetchFailure(), takeUntilDestroyed(this.destroyRef)); } private fetchDividends({ symbol }: { symbol: string }) { @@ -80,6 +117,7 @@ export class GfApiPageComponent implements OnInit { map(({ dividends }) => { return dividends; }), + this.catchFetchFailure(), takeUntilDestroyed(this.destroyRef) ); } @@ -101,6 +139,7 @@ export class GfApiPageComponent implements OnInit { map(({ historicalData }) => { return historicalData; }), + this.catchFetchFailure(), takeUntilDestroyed(this.destroyRef) ); } @@ -127,6 +166,7 @@ export class GfApiPageComponent implements OnInit { map(({ items }) => { return items; }), + this.catchFetchFailure(), takeUntilDestroyed(this.destroyRef) ); } @@ -143,6 +183,7 @@ export class GfApiPageComponent implements OnInit { map(({ quotes }) => { return quotes; }), + this.catchFetchFailure(), takeUntilDestroyed(this.destroyRef) ); } @@ -153,7 +194,7 @@ export class GfApiPageComponent implements OnInit { '/api/v2/data-providers/ghostfolio/status', { headers: this.getHeaders() } ) - .pipe(takeUntilDestroyed(this.destroyRef)); + .pipe(this.catchFetchFailure(), takeUntilDestroyed(this.destroyRef)); } private getHeaders() { diff --git a/apps/client/src/app/pages/api/api-page.html b/apps/client/src/app/pages/api/api-page.html index 3c43484e6..07f5ec981 100644 --- a/apps/client/src/app/pages/api/api-page.html +++ b/apps/client/src/app/pages/api/api-page.html @@ -1,77 +1,173 @@
-
-

Status

-
{{ status$ | async | json }}
-
-
-

Asset Profile

-
{{ assetProfile$ | async | json }}
-
-
-

Lookup

- @if (lookupItems$) { - @let symbols = lookupItems$ | async; -
    - @for (item of symbols; track item.symbol) { -
  • {{ item.name }} ({{ item.symbol }})
  • - } -
- } -
-
-

Lookup (ISIN)

- @if (isinLookupItems$) { - @let symbols = isinLookupItems$ | async; -
    - @for (item of symbols; track item.symbol) { -
  • {{ item.name }} ({{ item.symbol }})
  • - } -
- } -
-
-

Quotes

- @if (quotes$) { - @let quotes = quotes$ | async; -
    - @for (quote of quotes | keyvalue; track quote) { -
  • - {{ quote.key }}: {{ quote.value.marketPrice }} - {{ quote.value.currency }} -
  • - } -
- } -
-
-

Historical

- @if (historicalData$) { - @let historicalData = historicalData$ | async; -
    - @for ( - historicalDataItem of historicalData | keyvalue; - track historicalDataItem - ) { -
  • - {{ historicalDataItem.key }}: - {{ historicalDataItem.value.marketPrice }} -
  • - } -
- } -
-
-

Dividends

- @if (dividends$) { - @let dividends = dividends$ | async; -
    - @for (dividend of dividends | keyvalue; track dividend) { -
  • - {{ dividend.key }}: - {{ dividend.value.marketPrice }} -
  • - } -
- } +
+
+ + + AI Service Health + + + @let aiServiceHealth = aiServiceHealth$ | async; + @if (isFetchFailure(aiServiceHealth)) { + πŸ”΄ {{ aiServiceHealth.fetchError }} + } @else if (aiServiceHealth) { + 🟒 {{ aiServiceHealth.status }} + } @else { + + } + + + + + Status + + + @let status = status$ | async; + @if (isFetchFailure(status)) { + πŸ”΄ {{ status.fetchError }} + } @else if (status) { +
{{ status | json }}
+ } @else { + + } +
+
+ + + Asset Profile + + + @let assetProfile = assetProfile$ | async; + @if (isFetchFailure(assetProfile)) { + πŸ”΄ {{ assetProfile.fetchError }} + } @else if (assetProfile) { +
{{ assetProfile | json }}
+ } @else { + + } +
+
+ + + Lookup + + + @let symbols = lookupItems$ | async; + @if (isFetchFailure(symbols)) { + πŸ”΄ {{ symbols.fetchError }} + } @else if (symbols) { +
    + @for (item of symbols; track item.symbol) { +
  • {{ item.name }} ({{ item.symbol }})
  • + } +
+ } @else { + + } +
+
+ + + Lookup (ISIN) + + + @let isinSymbols = isinLookupItems$ | async; + @if (isFetchFailure(isinSymbols)) { + πŸ”΄ {{ isinSymbols.fetchError }} + } @else if (isinSymbols) { +
    + @for (item of isinSymbols; track item.symbol) { +
  • {{ item.name }} ({{ item.symbol }})
  • + } +
+ } @else { + + } +
+
+ + + Quotes + + + @let quotes = quotes$ | async; + @if (isFetchFailure(quotes)) { + πŸ”΄ {{ quotes.fetchError }} + } @else if (quotes) { +
    + @for (quote of quotes | keyvalue; track quote) { +
  • + {{ quote.key }}: {{ quote.value.marketPrice }} + {{ quote.value.currency }} +
  • + } +
+ } @else { + + } +
+
+ + + Historical + + + @let historicalData = historicalData$ | async; + @if (isFetchFailure(historicalData)) { + πŸ”΄ {{ historicalData.fetchError }} + } @else if (historicalData) { +
    + @for (item of historicalData | keyvalue; track item) { +
  • {{ item.key }}: {{ item.value.marketPrice }}
  • + } +
+ } @else { + + } +
+
+ + + Dividends + + + @let dividends = dividends$ | async; + @if (isFetchFailure(dividends)) { + πŸ”΄ {{ dividends.fetchError }} + } @else if (dividends) { +
    + @for (dividend of dividends | keyvalue; track dividend) { +
  • {{ dividend.key }}: {{ dividend.value.marketPrice }}
  • + } +
+ } @else { + + } +
+
+
diff --git a/apps/client/src/app/pages/api/interfaces/interfaces.ts b/apps/client/src/app/pages/api/interfaces/interfaces.ts new file mode 100644 index 000000000..07de2b2f7 --- /dev/null +++ b/apps/client/src/app/pages/api/interfaces/interfaces.ts @@ -0,0 +1,5 @@ +export interface FetchFailure { + fetchError: string; +} + +export type FetchResult = T | FetchFailure; diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index ad747d94e..89874da60 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -44,6 +44,7 @@ import type { ActivityResponse } from './responses/activity-response.interface'; import type { AdminUserResponse } from './responses/admin-user-response.interface'; import type { AdminUsersResponse } from './responses/admin-users-response.interface'; import type { AiPromptResponse } from './responses/ai-prompt-response.interface'; +import type { AiServiceHealthResponse } from './responses/ai-service-health-response.interface'; import type { ApiKeyResponse } from './responses/api-key-response.interface'; import type { AssetResponse } from './responses/asset-response.interface'; import type { BenchmarkMarketDataDetailsResponse } from './responses/benchmark-market-data-details-response.interface'; @@ -117,6 +118,7 @@ export { AdminUserResponse, AdminUsersResponse, AiPromptResponse, + AiServiceHealthResponse, ApiKeyResponse, AssertionCredentialJSON, AssetClassSelectorOption, diff --git a/libs/common/src/lib/interfaces/responses/ai-service-health-response.interface.ts b/libs/common/src/lib/interfaces/responses/ai-service-health-response.interface.ts new file mode 100644 index 000000000..58ffafafc --- /dev/null +++ b/libs/common/src/lib/interfaces/responses/ai-service-health-response.interface.ts @@ -0,0 +1,3 @@ +export interface AiServiceHealthResponse { + status: string; +} diff --git a/package-lock.json b/package-lock.json index d061349b4..70873b53f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,12 +40,12 @@ "@nestjs/platform-express": "11.1.19", "@nestjs/schedule": "6.1.3", "@nestjs/serve-static": "5.0.5", - "@openrouter/ai-sdk-provider": "0.7.2", + "@openrouter/ai-sdk-provider": "2.9.0", "@prisma/adapter-pg": "7.7.0", "@prisma/client": "7.7.0", "@simplewebauthn/browser": "13.2.2", "@simplewebauthn/server": "13.2.2", - "ai": "4.3.16", + "ai": "6.0.174", "alphavantage": "2.2.0", "big.js": "7.0.1", "bootstrap": "4.6.2", @@ -175,74 +175,50 @@ "dev": true, "license": "MIT" }, - "node_modules/@ai-sdk/provider": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", - "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", - "license": "Apache-2.0", - "dependencies": { - "json-schema": "^0.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ai-sdk/provider-utils": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", - "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", + "node_modules/@ai-sdk/gateway": { + "version": "3.0.109", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.109.tgz", + "integrity": "sha512-r6dOqThjODp1vOhGRJg2OCmyB/ZOQtGx1esZ2SDvwDX5XoX8dBqYaYjLg8MPXTzMGJSgOkJyCxWgUcZtAl16pw==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.3", - "nanoid": "^3.3.8", - "secure-json-parse": "^2.7.0" + "@ai-sdk/provider": "3.0.10", + "@ai-sdk/provider-utils": "4.0.26", + "@vercel/oidc": "3.2.0" }, "engines": { "node": ">=18" }, "peerDependencies": { - "zod": "^3.23.8" + "zod": "^3.25.76 || ^4.1.8" } }, - "node_modules/@ai-sdk/react": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-1.2.12.tgz", - "integrity": "sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==", + "node_modules/@ai-sdk/provider": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-3.0.10.tgz", + "integrity": "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider-utils": "2.2.8", - "@ai-sdk/ui-utils": "1.2.11", - "swr": "^2.2.5", - "throttleit": "2.1.0" + "json-schema": "^0.4.0" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } } }, - "node_modules/@ai-sdk/ui-utils": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.2.11.tgz", - "integrity": "sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==", + "node_modules/@ai-sdk/provider-utils": { + "version": "4.0.26", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.26.tgz", + "integrity": "sha512-CsKNLKsOpvPujRlIYvoz+Ybw+kGn7J4/fIZa/58+R7iWLLfwn6ifE2G6Yq8K9XvH/I/3bzaDAJ3NhRwEMsLBKQ==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.3", - "@ai-sdk/provider-utils": "2.2.8", - "zod-to-json-schema": "^3.24.1" + "@ai-sdk/provider": "3.0.10", + "@standard-schema/spec": "^1.1.0", + "eventsource-parser": "^3.0.8" }, "engines": { "node": ">=18" }, "peerDependencies": { - "zod": "^3.23.8" + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/@algolia/abtesting": { @@ -10810,20 +10786,16 @@ } }, "node_modules/@openrouter/ai-sdk-provider": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-0.7.2.tgz", - "integrity": "sha512-Fry2mV7uGGJRmP9JntTZRc8ElESIk7AJNTacLbF6Syoeb5k8d7HPGkcK9rTXDlqBb8HgU1hOKtz23HojesTmnw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-2.9.0.tgz", + "integrity": "sha512-Seva+NCa0WUQnJIUE5GzHsUv1WTIeyqwz0ELl2VtS6NP+eF+77yCXGFVOMbvoCM7QMjlnhv7931e89R+8pJdcQ==", "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "1.1.3", - "@ai-sdk/provider-utils": "2.2.8" - }, "engines": { "node": ">=18" }, "peerDependencies": { - "ai": "^4.3.16", - "zod": "^3.25.34" + "ai": "^6.0.0", + "zod": "^3.25.0 || ^4.0.0" } }, "node_modules/@opentelemetry/api": { @@ -14455,12 +14427,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/diff-match-patch": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", - "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==", - "license": "MIT" - }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -15986,6 +15952,15 @@ "d3-transition": "^3.0.1" } }, + "node_modules/@vercel/oidc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.2.0.tgz", + "integrity": "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20" + } + }, "node_modules/@vitejs/plugin-basic-ssl": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.4.tgz", @@ -16440,29 +16415,21 @@ } }, "node_modules/ai": { - "version": "4.3.16", - "resolved": "https://registry.npmjs.org/ai/-/ai-4.3.16.tgz", - "integrity": "sha512-KUDwlThJ5tr2Vw0A1ZkbDKNME3wzWhuVfAOwIvFUzl1TPVDFAXDFTXio3p+jaKneB+dKNCvFFlolYmmgHttG1g==", + "version": "6.0.174", + "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.174.tgz", + "integrity": "sha512-bTrfLUWHWtkjzWyCY4bmyuk4Qvmj4S4NSNsXyNSVVqkmftQNtxRj7dzUoMeQDBBwlJO6fC7m2Q/lNOPqQQfAGA==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.3", - "@ai-sdk/provider-utils": "2.2.8", - "@ai-sdk/react": "1.2.12", - "@ai-sdk/ui-utils": "1.2.11", - "@opentelemetry/api": "1.9.0", - "jsondiffpatch": "0.6.0" + "@ai-sdk/gateway": "3.0.109", + "@ai-sdk/provider": "3.0.10", + "@ai-sdk/provider-utils": "4.0.26", + "@opentelemetry/api": "1.9.0" }, "engines": { "node": ">=18" }, "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - } + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/ajv": { @@ -20844,7 +20811,9 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" } @@ -20922,12 +20891,6 @@ "node": ">=0.3.1" } }, - "node_modules/diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", - "license": "Apache-2.0" - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -22137,10 +22100,9 @@ } }, "node_modules/eventsource-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", - "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", - "dev": true, + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.8.tgz", + "integrity": "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -28868,35 +28830,6 @@ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "license": "MIT" }, - "node_modules/jsondiffpatch": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", - "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", - "license": "MIT", - "dependencies": { - "@types/diff-match-patch": "^1.0.36", - "chalk": "^5.3.0", - "diff-match-patch": "^1.0.5" - }, - "bin": { - "jsondiffpatch": "bin/jsondiffpatch.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/jsondiffpatch/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/jsonfile": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", @@ -29727,6 +29660,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "devOptional": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -33634,6 +33568,7 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "devOptional": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -35337,12 +35272,6 @@ "dev": true, "license": "MIT" }, - "node_modules/secure-json-parse": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", - "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", - "license": "BSD-3-Clause" - }, "node_modules/select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -36838,19 +36767,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/swr": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.4.1.tgz", - "integrity": "sha512-2CC6CiKQtEwaEeNiqWTAw9PGykW8SR5zZX8MZk6TeAvEAnVS7Visz8WzphqgtQ8v2xz/4Q5K+j+SeMaKXeeQIA==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.3", - "use-sync-external-store": "^1.6.0" - }, - "peerDependencies": { - "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -37254,18 +37170,6 @@ "tslib": "^2" } }, - "node_modules/throttleit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", - "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -38654,6 +38558,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "dev": true, "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -40490,6 +40395,7 @@ "version": "3.25.2", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "dev": true, "license": "ISC", "peerDependencies": { "zod": "^3.25.28 || ^4" diff --git a/package.json b/package.json index 9ed027e9c..ebc8a775e 100644 --- a/package.json +++ b/package.json @@ -85,12 +85,12 @@ "@nestjs/platform-express": "11.1.19", "@nestjs/schedule": "6.1.3", "@nestjs/serve-static": "5.0.5", - "@openrouter/ai-sdk-provider": "0.7.2", + "@openrouter/ai-sdk-provider": "2.9.0", "@prisma/adapter-pg": "7.7.0", "@prisma/client": "7.7.0", "@simplewebauthn/browser": "13.2.2", "@simplewebauthn/server": "13.2.2", - "ai": "4.3.16", + "ai": "6.0.174", "alphavantage": "2.2.0", "big.js": "7.0.1", "bootstrap": "4.6.2", From f31fac76f92f89ee02dd5e469b17c2a18faf4f1e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 12 May 2026 07:59:56 +0300 Subject: [PATCH 11/11] Task/upgrade papaparse to version 5.5.3 (#6787) * Upgrade papaparse to version 5.5.3 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 16 ++++++++-------- package.json | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b32868336..4202b4868 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `countries-and-timezones` from version `3.8.0` to `3.9.0` - Upgraded `fuse.js` from version `7.1.0` to `7.3.0` - Upgraded `Nx` from version `22.6.5` to `22.7.1` +- Upgraded `papaparse` from version `5.3.1` to `5.5.3` ### Fixed diff --git a/package-lock.json b/package-lock.json index 70873b53f..c93593880 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,7 +82,7 @@ "ngx-markdown": "21.2.0", "ngx-skeleton-loader": "12.0.0", "open-color": "1.9.1", - "papaparse": "5.3.1", + "papaparse": "5.5.3", "passport": "0.7.0", "passport-google-oauth20": "2.0.0", "passport-headerapikey": "1.2.2", @@ -136,7 +136,7 @@ "@types/jsonpath": "0.2.4", "@types/lodash": "4.17.24", "@types/node": "22.15.17", - "@types/papaparse": "5.3.7", + "@types/papaparse": "5.5.2", "@types/passport-google-oauth20": "2.0.17", "@types/passport-openidconnect": "0.1.3", "@typescript-eslint/eslint-plugin": "8.43.0", @@ -14737,9 +14737,9 @@ } }, "node_modules/@types/papaparse": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.7.tgz", - "integrity": "sha512-f2HKmlnPdCvS0WI33WtCs5GD7X1cxzzS/aduaxSu3I7TbhWlENjSPs6z5TaB9K0J+BH1jbmqTaM+ja5puis4wg==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.5.2.tgz", + "integrity": "sha512-gFnFp/JMzLHCwRf7tQHrNnfhN4eYBVYYI897CGX4MY1tzY9l2aLkVyx2IlKZ/SAqDbB3I1AOZW5gTMGGsqWliA==", "dev": true, "license": "MIT", "dependencies": { @@ -32070,9 +32070,9 @@ } }, "node_modules/papaparse": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz", - "integrity": "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.3.tgz", + "integrity": "sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==", "license": "MIT" }, "node_modules/param-case": { diff --git a/package.json b/package.json index ebc8a775e..7190ff92d 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "ngx-markdown": "21.2.0", "ngx-skeleton-loader": "12.0.0", "open-color": "1.9.1", - "papaparse": "5.3.1", + "papaparse": "5.5.3", "passport": "0.7.0", "passport-google-oauth20": "2.0.0", "passport-headerapikey": "1.2.2", @@ -181,7 +181,7 @@ "@types/jsonpath": "0.2.4", "@types/lodash": "4.17.24", "@types/node": "22.15.17", - "@types/papaparse": "5.3.7", + "@types/papaparse": "5.5.2", "@types/passport-google-oauth20": "2.0.17", "@types/passport-openidconnect": "0.1.3", "@typescript-eslint/eslint-plugin": "8.43.0",