- |
- Name
+ |
+ Name
|
diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts
index 3af9bc674..bb66acba8 100644
--- a/libs/ui/src/lib/benchmark/benchmark.component.ts
+++ b/libs/ui/src/lib/benchmark/benchmark.component.ts
@@ -155,14 +155,17 @@ export class GfBenchmarkComponent implements OnChanges, OnDestroy {
dataSource,
symbol
}: AssetProfileIdentifier) {
- const dialogRef = this.dialog.open(GfBenchmarkDetailDialogComponent, {
+ const dialogRef = this.dialog.open<
+ GfBenchmarkDetailDialogComponent,
+ BenchmarkDetailDialogParams
+ >(GfBenchmarkDetailDialogComponent, {
data: {
dataSource,
symbol,
colorScheme: this.user?.settings?.colorScheme,
deviceType: this.deviceType,
locale: this.locale
- } as BenchmarkDetailDialogParams,
+ },
height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
index df7ca79fa..44276ec43 100644
--- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
+++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
@@ -185,7 +185,7 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy {
'principalInvestmentAmount'
).value,
projectedTotalAmount:
- Number(this.getProjectedTotalAmount().toFixed(0)) ?? 0,
+ Math.round(this.getProjectedTotalAmount()) || 0,
retirementDate:
this.getRetirementDate() ?? this.DEFAULT_RETIREMENT_DATE
},
diff --git a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
index 7fbb1e621..002422c57 100644
--- a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
+++ b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
@@ -199,21 +199,21 @@ export class GfHistoricalMarketDataEditorComponent
}) {
const marketPrice = this.marketDataByMonth[yearMonth]?.[day]?.marketPrice;
- const dialogRef = this.dialog.open(
+ const dialogRef = this.dialog.open<
GfHistoricalMarketDataEditorDialogComponent,
- {
- data: {
- marketPrice,
- currency: this.currency,
- dataSource: this.dataSource,
- dateString: `${yearMonth}-${day}`,
- symbol: this.symbol,
- user: this.user
- } as HistoricalMarketDataEditorDialogParams,
- height: this.deviceType === 'mobile' ? '98vh' : '80vh',
- width: this.deviceType === 'mobile' ? '100vw' : '50rem'
- }
- );
+ HistoricalMarketDataEditorDialogParams
+ >(GfHistoricalMarketDataEditorDialogComponent, {
+ data: {
+ marketPrice,
+ currency: this.currency,
+ dataSource: this.dataSource,
+ dateString: `${yearMonth}-${day}`,
+ symbol: this.symbol,
+ user: this.user
+ },
+ height: this.deviceType === 'mobile' ? '98vh' : '80vh',
+ width: this.deviceType === 'mobile' ? '100vw' : '50rem'
+ });
dialogRef
.afterClosed()
diff --git a/libs/ui/src/lib/logo-carousel/logo-carousel.component.scss b/libs/ui/src/lib/logo-carousel/logo-carousel.component.scss
index 18c3a26cb..89a837195 100644
--- a/libs/ui/src/lib/logo-carousel/logo-carousel.component.scss
+++ b/libs/ui/src/lib/logo-carousel/logo-carousel.component.scss
@@ -139,6 +139,15 @@
max-height: 1.25rem;
}
+ &.logo-selfhostedhub {
+ background-image: url('/assets/images/logo-selfhostedhub.svg');
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ filter: grayscale(1);
+ opacity: 0.5;
+ }
+
&.logo-sourceforge {
mask-image: url('/assets/images/logo-sourceforge.svg');
}
diff --git a/libs/ui/src/lib/logo-carousel/logo-carousel.component.ts b/libs/ui/src/lib/logo-carousel/logo-carousel.component.ts
index d7d3fa6af..ea6344694 100644
--- a/libs/ui/src/lib/logo-carousel/logo-carousel.component.ts
+++ b/libs/ui/src/lib/logo-carousel/logo-carousel.component.ts
@@ -82,6 +82,12 @@ export class GfLogoCarouselComponent {
title: 'selfh.st — Self-hosted content and software',
url: 'https://selfh.st'
},
+ {
+ className: 'logo-selfhostedhub',
+ name: 'SelfhostedHub',
+ title: 'SelfhostedHub — Discover best self-hosted software',
+ url: 'https://selfhostedhub.com'
+ },
{
className: 'logo-sourceforge',
isMask: true,
diff --git a/libs/ui/src/lib/portfolio-filter-form/index.ts b/libs/ui/src/lib/portfolio-filter-form/index.ts
new file mode 100644
index 000000000..51d22c034
--- /dev/null
+++ b/libs/ui/src/lib/portfolio-filter-form/index.ts
@@ -0,0 +1,2 @@
+export * from './interfaces';
+export * from './portfolio-filter-form.component';
diff --git a/libs/ui/src/lib/portfolio-filter-form/interfaces/index.ts b/libs/ui/src/lib/portfolio-filter-form/interfaces/index.ts
new file mode 100644
index 000000000..62feaa56a
--- /dev/null
+++ b/libs/ui/src/lib/portfolio-filter-form/interfaces/index.ts
@@ -0,0 +1 @@
+export * from './portfolio-filter-form-value.interface';
diff --git a/libs/ui/src/lib/portfolio-filter-form/interfaces/portfolio-filter-form-value.interface.ts b/libs/ui/src/lib/portfolio-filter-form/interfaces/portfolio-filter-form-value.interface.ts
new file mode 100644
index 000000000..21ff0ae3b
--- /dev/null
+++ b/libs/ui/src/lib/portfolio-filter-form/interfaces/portfolio-filter-form-value.interface.ts
@@ -0,0 +1,8 @@
+import { PortfolioPosition } from '@ghostfolio/common/interfaces';
+
+export interface PortfolioFilterFormValue {
+ account: string;
+ assetClass: string;
+ holding: PortfolioPosition;
+ tag: string;
+}
diff --git a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html
new file mode 100644
index 000000000..e017d33d6
--- /dev/null
+++ b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html
@@ -0,0 +1,75 @@
+
diff --git a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.scss b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.scss
new file mode 100644
index 000000000..5d4e87f30
--- /dev/null
+++ b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.scss
@@ -0,0 +1,3 @@
+:host {
+ display: block;
+}
diff --git a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.stories.ts b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.stories.ts
new file mode 100644
index 000000000..710a4e9c5
--- /dev/null
+++ b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.stories.ts
@@ -0,0 +1,79 @@
+import '@angular/localize/init';
+import { Meta, moduleMetadata, StoryObj } from '@storybook/angular';
+
+import { GfPortfolioFilterFormComponent } from './portfolio-filter-form.component';
+
+const meta: Meta = {
+ title: 'Portfolio Filter Form',
+ component: GfPortfolioFilterFormComponent,
+ decorators: [
+ moduleMetadata({
+ imports: [GfPortfolioFilterFormComponent]
+ })
+ ]
+};
+
+export default meta;
+type Story = StoryObj;
+
+export const Default: Story = {
+ args: {
+ accounts: [
+ {
+ id: '733110b6-7c55-44eb-8cc5-c4c3e9d48a79',
+ name: 'Trading Account',
+ platform: {
+ name: 'Interactive Brokers',
+ url: 'https://interactivebrokers.com'
+ }
+ },
+ {
+ id: '24ba27d6-e04b-4fb4-b856-b24c2ef0422a',
+ name: 'Investment Account',
+ platform: {
+ name: 'Fidelity',
+ url: 'https://fidelity.com'
+ }
+ }
+ ] as any,
+ assetClasses: [
+ { id: 'COMMODITY', label: 'Commodity', type: 'ASSET_CLASS' },
+ { id: 'EQUITY', label: 'Equity', type: 'ASSET_CLASS' },
+ { id: 'FIXED_INCOME', label: 'Fixed Income', type: 'ASSET_CLASS' }
+ ] as any,
+ holdings: [
+ {
+ currency: 'USD',
+ dataSource: 'YAHOO',
+ name: 'Apple Inc.',
+ symbol: 'AAPL'
+ },
+ {
+ currency: 'USD',
+ dataSource: 'YAHOO',
+ name: 'Microsoft Corporation',
+ symbol: 'MSFT'
+ }
+ ] as any,
+ tags: [
+ {
+ id: 'EMERGENCY_FUND',
+ label: 'Emergency Fund',
+ type: 'TAG'
+ },
+ {
+ id: 'RETIREMENT_FUND',
+ label: 'Retirement Fund',
+ type: 'TAG'
+ }
+ ] as any,
+ disabled: false
+ }
+};
+
+export const Disabled: Story = {
+ args: {
+ ...Default.args,
+ disabled: true
+ }
+};
diff --git a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.ts b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.ts
new file mode 100644
index 000000000..794f43d4d
--- /dev/null
+++ b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.ts
@@ -0,0 +1,177 @@
+import { GfSymbolPipe } from '@ghostfolio/client/pipes/symbol/symbol.pipe';
+import { getAssetProfileIdentifier } from '@ghostfolio/common/helper';
+import { Filter, PortfolioPosition } from '@ghostfolio/common/interfaces';
+import { AccountWithPlatform } from '@ghostfolio/common/types';
+
+import {
+ CUSTOM_ELEMENTS_SCHEMA,
+ ChangeDetectionStrategy,
+ ChangeDetectorRef,
+ Component,
+ Input,
+ OnChanges,
+ OnDestroy,
+ OnInit,
+ forwardRef
+} from '@angular/core';
+import {
+ ControlValueAccessor,
+ FormBuilder,
+ FormControl,
+ FormGroup,
+ FormsModule,
+ NG_VALUE_ACCESSOR,
+ ReactiveFormsModule
+} from '@angular/forms';
+import { MatFormFieldModule } from '@angular/material/form-field';
+import { MatSelectModule } from '@angular/material/select';
+import { Subject, takeUntil } from 'rxjs';
+
+import { GfEntityLogoComponent } from '../entity-logo/entity-logo.component';
+import { PortfolioFilterFormValue } from './interfaces';
+
+@Component({
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ imports: [
+ FormsModule,
+ GfEntityLogoComponent,
+ GfSymbolPipe,
+ MatFormFieldModule,
+ MatSelectModule,
+ ReactiveFormsModule
+ ],
+ providers: [
+ {
+ multi: true,
+ provide: NG_VALUE_ACCESSOR,
+ useExisting: forwardRef(() => GfPortfolioFilterFormComponent)
+ }
+ ],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+ selector: 'gf-portfolio-filter-form',
+ styleUrls: ['./portfolio-filter-form.component.scss'],
+ templateUrl: './portfolio-filter-form.component.html'
+})
+export class GfPortfolioFilterFormComponent
+ implements ControlValueAccessor, OnInit, OnChanges, OnDestroy
+{
+ @Input() accounts: AccountWithPlatform[] = [];
+ @Input() assetClasses: Filter[] = [];
+ @Input() holdings: PortfolioPosition[] = [];
+ @Input() tags: Filter[] = [];
+ @Input() disabled = false;
+
+ public filterForm: FormGroup;
+
+ private unsubscribeSubject = new Subject();
+
+ public constructor(
+ private changeDetectorRef: ChangeDetectorRef,
+ private formBuilder: FormBuilder
+ ) {
+ this.filterForm = this.formBuilder.group({
+ account: new FormControl(null),
+ assetClass: new FormControl(null),
+ holding: new FormControl(null),
+ tag: new FormControl(null)
+ });
+ }
+
+ public ngOnInit() {
+ this.filterForm.valueChanges
+ .pipe(takeUntil(this.unsubscribeSubject))
+ .subscribe((value) => {
+ this.onChange(value as PortfolioFilterFormValue);
+ this.onTouched();
+ });
+ }
+
+ public hasFilters() {
+ const formValue = this.filterForm.value;
+
+ return Object.values(formValue).some((value) => {
+ return !!value;
+ });
+ }
+
+ public holdingComparisonFunction(
+ option: PortfolioPosition,
+ value: PortfolioPosition
+ ) {
+ if (value === null) {
+ return false;
+ }
+
+ return (
+ getAssetProfileIdentifier(option) === getAssetProfileIdentifier(value)
+ );
+ }
+
+ public ngOnChanges() {
+ if (this.disabled) {
+ this.filterForm.disable({ emitEvent: false });
+ } else {
+ this.filterForm.enable({ emitEvent: false });
+ }
+
+ const tagControl = this.filterForm.get('tag');
+
+ if (this.tags.length === 0) {
+ tagControl?.disable({ emitEvent: false });
+ } else if (!this.disabled) {
+ tagControl?.enable({ emitEvent: false });
+ }
+
+ this.changeDetectorRef.markForCheck();
+ }
+
+ public registerOnChange(fn: (value: PortfolioFilterFormValue) => void) {
+ this.onChange = fn;
+ }
+
+ public registerOnTouched(fn: () => void) {
+ this.onTouched = fn;
+ }
+
+ public setDisabledState(isDisabled: boolean) {
+ this.disabled = isDisabled;
+
+ if (this.disabled) {
+ this.filterForm.disable({ emitEvent: false });
+ } else {
+ this.filterForm.enable({ emitEvent: false });
+ }
+
+ this.changeDetectorRef.markForCheck();
+ }
+
+ public writeValue(value: PortfolioFilterFormValue | null) {
+ if (value) {
+ this.filterForm.setValue(
+ {
+ account: value.account ?? null,
+ assetClass: value.assetClass ?? null,
+ holding: value.holding ?? null,
+ tag: value.tag ?? null
+ },
+ { emitEvent: false }
+ );
+ } else {
+ this.filterForm.reset({}, { emitEvent: false });
+ }
+ }
+
+ public ngOnDestroy() {
+ this.unsubscribeSubject.next();
+ this.unsubscribeSubject.complete();
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ private onChange = (_value: PortfolioFilterFormValue): void => {
+ // ControlValueAccessor onChange callback
+ };
+
+ private onTouched = (): void => {
+ // ControlValueAccessor onTouched callback
+ };
+}
diff --git a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
index 3f062a374..2d8a03ac0 100644
--- a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
+++ b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
@@ -31,6 +31,7 @@ import ChartDataLabels from 'chartjs-plugin-datalabels';
import { isUUID } from 'class-validator';
import Color from 'color';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
+import OpenColor from 'open-color';
import { translate } from '../i18n';
@@ -47,7 +48,7 @@ const {
teal,
violet,
yellow
-} = require('open-color');
+} = OpenColor;
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
diff --git a/libs/ui/src/lib/tags-selector/tags-selector.component.ts b/libs/ui/src/lib/tags-selector/tags-selector.component.ts
index 05a4b3e7a..7f1a8805e 100644
--- a/libs/ui/src/lib/tags-selector/tags-selector.component.ts
+++ b/libs/ui/src/lib/tags-selector/tags-selector.component.ts
@@ -5,12 +5,10 @@ import {
Component,
CUSTOM_ELEMENTS_SCHEMA,
ElementRef,
- EventEmitter,
Input,
OnChanges,
OnDestroy,
OnInit,
- Output,
signal,
ViewChild
} from '@angular/core';
@@ -66,8 +64,6 @@ export class GfTagsSelectorComponent
@Input() tags: Tag[];
@Input() tagsAvailable: Tag[];
- @Output() tagsChanged = new EventEmitter();
-
@ViewChild('tagInput') tagInput: ElementRef;
public filteredOptions: Subject = new BehaviorSubject([]);
@@ -115,7 +111,6 @@ export class GfTagsSelectorComponent
});
const newTags = this.tagsSelected();
- this.tagsChanged.emit(newTags);
this.onChange(newTags);
this.onTouched();
this.tagInput.nativeElement.value = '';
@@ -130,7 +125,6 @@ export class GfTagsSelectorComponent
});
const newTags = this.tagsSelected();
- this.tagsChanged.emit(newTags);
this.onChange(newTags);
this.onTouched();
this.updateFilters();
diff --git a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
index 4e06d49cc..6ae958b83 100644
--- a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
+++ b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
@@ -33,10 +33,11 @@ import { isUUID } from 'class-validator';
import { differenceInDays, max } from 'date-fns';
import { orderBy } from 'lodash';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
+import OpenColor from 'open-color';
import { GetColorParams } from './interfaces/interfaces';
-const { gray, green, red } = require('open-color');
+const { gray, green, red } = OpenColor;
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
diff --git a/package-lock.json b/package-lock.json
index e65c23ac7..095b9f7f3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "ghostfolio",
- "version": "2.208.0",
+ "version": "2.215.0-beta.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ghostfolio",
- "version": "2.208.0",
+ "version": "2.215.0-beta.1",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
@@ -23,27 +23,22 @@
"@angular/service-worker": "20.2.4",
"@codewithdan/observable-store": "2.2.15",
"@date-fns/utc": "2.1.0",
- "@dfinity/agent": "0.15.7",
- "@dfinity/auth-client": "0.15.7",
- "@dfinity/candid": "0.15.7",
- "@dfinity/identity": "0.15.7",
- "@dfinity/principal": "0.15.7",
"@internationalized/number": "3.6.3",
"@ionic/angular": "8.7.3",
"@keyv/redis": "4.4.0",
- "@nestjs/bull": "11.0.2",
+ "@nestjs/bull": "11.0.4",
"@nestjs/cache-manager": "3.0.1",
- "@nestjs/common": "11.1.3",
+ "@nestjs/common": "11.1.8",
"@nestjs/config": "4.0.2",
- "@nestjs/core": "11.1.3",
+ "@nestjs/core": "11.1.8",
"@nestjs/event-emitter": "3.0.1",
- "@nestjs/jwt": "11.0.0",
+ "@nestjs/jwt": "11.0.1",
"@nestjs/passport": "11.0.5",
- "@nestjs/platform-express": "11.1.3",
- "@nestjs/schedule": "6.0.0",
- "@nestjs/serve-static": "5.0.3",
+ "@nestjs/platform-express": "11.1.8",
+ "@nestjs/schedule": "6.0.1",
+ "@nestjs/serve-static": "5.0.4",
"@openrouter/ai-sdk-provider": "0.7.2",
- "@prisma/client": "6.17.1",
+ "@prisma/client": "6.18.0",
"@simplewebauthn/browser": "13.1.0",
"@simplewebauthn/server": "13.1.1",
"@stripe/stripe-js": "7.9.0",
@@ -62,9 +57,11 @@
"class-validator": "0.14.2",
"color": "5.0.0",
"countries-and-timezones": "3.8.0",
- "countries-list": "3.1.1",
+ "countries-list": "3.2.0",
"countup.js": "2.9.0",
"date-fns": "4.1.0",
+ "dotenv": "17.2.3",
+ "dotenv-expand": "12.0.3",
"envalid": "8.1.0",
"fuse.js": "7.1.0",
"google-spreadsheet": "3.2.0",
@@ -75,7 +72,7 @@
"lodash": "4.17.21",
"marked": "15.0.4",
"ms": "3.0.0-canary.1",
- "ng-extract-i18n-merge": "3.0.0",
+ "ng-extract-i18n-merge": "3.1.0",
"ngx-device-detector": "10.1.0",
"ngx-markdown": "20.0.0",
"ngx-skeleton-loader": "11.3.0",
@@ -90,7 +87,8 @@
"rxjs": "7.8.1",
"stripe": "18.5.0",
"svgmap": "2.12.2",
- "twitter-api-v2": "1.23.0",
+ "tablemark": "4.1.0",
+ "twitter-api-v2": "1.27.0",
"uuid": "11.1.0",
"yahoo-finance2": "3.10.0",
"zone.js": "0.15.1"
@@ -109,8 +107,8 @@
"@angular/pwa": "20.2.2",
"@eslint/eslintrc": "3.3.1",
"@eslint/js": "9.35.0",
- "@nestjs/schematics": "11.0.5",
- "@nestjs/testing": "11.1.3",
+ "@nestjs/schematics": "11.0.9",
+ "@nestjs/testing": "11.1.8",
"@nx/angular": "21.5.1",
"@nx/cypress": "21.5.1",
"@nx/eslint-plugin": "21.5.1",
@@ -148,7 +146,7 @@
"nx": "21.5.1",
"prettier": "3.6.2",
"prettier-plugin-organize-attributes": "1.0.0",
- "prisma": "6.17.1",
+ "prisma": "6.18.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"replace-in-file": "8.3.0",
@@ -4710,6 +4708,7 @@
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
@@ -4722,6 +4721,7 @@
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
@@ -4950,73 +4950,6 @@
"node": "^16.13.0 || >=18.0.0"
}
},
- "node_modules/@dfinity/agent": {
- "version": "0.15.7",
- "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.15.7.tgz",
- "integrity": "sha512-w34yvlUTpPBG8nLOD0t/ao3k2xonOFq4QGvfJ1HiS/nIggdza/3xC3nLBszGrjVYWj1jqu8BLFvQXCAeWin75A==",
- "license": "Apache-2.0",
- "dependencies": {
- "base64-arraybuffer": "^0.2.0",
- "bignumber.js": "^9.0.0",
- "borc": "^2.1.1",
- "js-sha256": "0.9.0",
- "simple-cbor": "^0.4.1",
- "ts-node": "^10.8.2"
- },
- "peerDependencies": {
- "@dfinity/candid": "^0.15.7",
- "@dfinity/principal": "^0.15.7"
- }
- },
- "node_modules/@dfinity/auth-client": {
- "version": "0.15.7",
- "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.15.7.tgz",
- "integrity": "sha512-f6cRqXayCf+7+9gNcDnAZZwJrgBYKIzfxjxeRLlpsueQeo+E/BX2yVSANxzTkCNc4U3p+ttHI1RNtasLunYTcA==",
- "license": "Apache-2.0",
- "dependencies": {
- "idb": "^7.0.2"
- },
- "peerDependencies": {
- "@dfinity/agent": "^0.15.7",
- "@dfinity/identity": "^0.15.7",
- "@dfinity/principal": "^0.15.7"
- }
- },
- "node_modules/@dfinity/candid": {
- "version": "0.15.7",
- "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.15.7.tgz",
- "integrity": "sha512-lTcjK/xrSyT7wvUQ2pApG+yklQAwxaofQ04D1IWv0/8gKbY0eUbh8G2w6+CypJ15Hb1CH24ijUj8nWdeX/z3jg==",
- "license": "Apache-2.0",
- "dependencies": {
- "ts-node": "^10.8.2"
- }
- },
- "node_modules/@dfinity/identity": {
- "version": "0.15.7",
- "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.15.7.tgz",
- "integrity": "sha512-kBAkx9wq78jSQf6T5aayLyWm8YgtOZw8bW6+OuzX6tR3hkAEa85A9TcKA7BjkmMWSIskjEDVQub4fFfKWS2vOQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "borc": "^2.1.1",
- "js-sha256": "^0.9.0",
- "tweetnacl": "^1.0.1"
- },
- "peerDependencies": {
- "@dfinity/agent": "^0.15.7",
- "@dfinity/principal": "^0.15.7",
- "@peculiar/webcrypto": "^1.4.0"
- }
- },
- "node_modules/@dfinity/principal": {
- "version": "0.15.7",
- "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.15.7.tgz",
- "integrity": "sha512-6/AkYzpGEH6Jw/0+B/EeeQn+5u2GDDvRLt1kQPhIG4txQYFnOy04H3VvyrymmfAj6/CXUgrOrux6OxgYSLYVJg==",
- "license": "Apache-2.0",
- "dependencies": {
- "js-sha256": "^0.9.0",
- "ts-node": "^10.8.2"
- }
- },
"node_modules/@discoveryjs/json-ext": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz",
@@ -6112,9 +6045,9 @@
}
},
"node_modules/@ioredis/commands": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.3.0.tgz",
- "integrity": "sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz",
+ "integrity": "sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==",
"license": "MIT"
},
"node_modules/@isaacs/balanced-match": {
@@ -8994,12 +8927,12 @@
}
},
"node_modules/@nestjs/bull": {
- "version": "11.0.2",
- "resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-11.0.2.tgz",
- "integrity": "sha512-RjyP9JZUuLmMhmq1TMNIZqolkAd14az1jyXMMVki+C9dYvaMjWzBSwcZAtKs9Pk15Rm7qN1xn3R11aMV2Xv4gg==",
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-11.0.4.tgz",
+ "integrity": "sha512-QVz2PR/rJF/isy7otVnMTSqLf/O71p9Ka7lBZt9Gm+NQFv8fcH2L11GL7TA0whyCcw/kAX5iRepUXz/wed4JoA==",
"license": "MIT",
"dependencies": {
- "@nestjs/bull-shared": "^11.0.2",
+ "@nestjs/bull-shared": "^11.0.4",
"tslib": "2.8.1"
},
"peerDependencies": {
@@ -9009,9 +8942,9 @@
}
},
"node_modules/@nestjs/bull-shared": {
- "version": "11.0.3",
- "resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.3.tgz",
- "integrity": "sha512-CaHniPkLAxis6fAB1DB8WZELQv8VPCLedbj7iP0VQ1pz74i6NSzG9mBg6tOomXq/WW4la4P4OMGEQ48UAJh20A==",
+ "version": "11.0.4",
+ "resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.4.tgz",
+ "integrity": "sha512-VBJcDHSAzxQnpcDfA0kt9MTGUD1XZzfByV70su0W0eDCQ9aqIEBlzWRW21tv9FG9dIut22ysgDidshdjlnczLw==",
"license": "MIT",
"dependencies": {
"tslib": "2.8.1"
@@ -9035,14 +8968,14 @@
}
},
"node_modules/@nestjs/common": {
- "version": "11.1.3",
- "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.3.tgz",
- "integrity": "sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==",
+ "version": "11.1.8",
+ "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.8.tgz",
+ "integrity": "sha512-bbsOqwld/GdBfiRNc4nnjyWWENDEicq4SH+R5AuYatvf++vf1x5JIsHB1i1KtfZMD3eRte0D4K9WXuAYil6XAg==",
"license": "MIT",
"dependencies": {
"file-type": "21.0.0",
"iterare": "1.2.1",
- "load-esm": "1.0.2",
+ "load-esm": "1.0.3",
"tslib": "2.8.1",
"uid": "2.0.2"
},
@@ -9080,17 +9013,44 @@
"rxjs": "^7.1.0"
}
},
+ "node_modules/@nestjs/config/node_modules/dotenv": {
+ "version": "16.4.7",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
+ "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/@nestjs/config/node_modules/dotenv-expand": {
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz",
+ "integrity": "sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dotenv": "^16.4.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
"node_modules/@nestjs/core": {
- "version": "11.1.3",
- "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.3.tgz",
- "integrity": "sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==",
+ "version": "11.1.8",
+ "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.8.tgz",
+ "integrity": "sha512-7riWfmTmMhCJHZ5ZiaG+crj4t85IPCq/wLRuOUSigBYyFT2JZj0lVHtAdf4Davp9ouNI8GINBDt9h9b5Gz9nTw==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@nuxt/opencollective": "0.4.1",
"fast-safe-stringify": "2.1.1",
"iterare": "1.2.1",
- "path-to-regexp": "8.2.0",
+ "path-to-regexp": "8.3.0",
"tslib": "2.8.1",
"uid": "2.0.2"
},
@@ -9135,12 +9095,12 @@
}
},
"node_modules/@nestjs/jwt": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.0.tgz",
- "integrity": "sha512-v7YRsW3Xi8HNTsO+jeHSEEqelX37TVWgwt+BcxtkG/OfXJEOs6GZdbdza200d6KqId1pJQZ6UPj1F0M6E+mxaA==",
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.1.tgz",
+ "integrity": "sha512-HXSsc7SAnCnjA98TsZqrE7trGtHDnYXWp4Ffy6LwSmck1QvbGYdMzBquXofX5l6tIRpeY4Qidl2Ti2CVG77Pdw==",
"license": "MIT",
"dependencies": {
- "@types/jsonwebtoken": "9.0.7",
+ "@types/jsonwebtoken": "9.0.10",
"jsonwebtoken": "9.0.2"
},
"peerDependencies": {
@@ -9158,15 +9118,15 @@
}
},
"node_modules/@nestjs/platform-express": {
- "version": "11.1.3",
- "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.3.tgz",
- "integrity": "sha512-hEDNMlaPiBO72fxxX/CuRQL3MEhKRc/sIYGVoXjrnw6hTxZdezvvM6A95UaLsYknfmcZZa/CdG1SMBZOu9agHQ==",
+ "version": "11.1.8",
+ "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.8.tgz",
+ "integrity": "sha512-rL6pZH9BW7BnL5X2eWbJMtt86uloAKjFgyY5+L2UkizgfEp7rgAs0+Z1z0BcW2Pgu5+q8O7RKPNyHJ/9ZNz/ZQ==",
"license": "MIT",
"dependencies": {
"cors": "2.8.5",
"express": "5.1.0",
- "multer": "2.0.1",
- "path-to-regexp": "8.2.0",
+ "multer": "2.0.2",
+ "path-to-regexp": "8.3.0",
"tslib": "2.8.1"
},
"funding": {
@@ -9179,12 +9139,12 @@
}
},
"node_modules/@nestjs/schedule": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.0.0.tgz",
- "integrity": "sha512-aQySMw6tw2nhitELXd3EiRacQRgzUKD9mFcUZVOJ7jPLqIBvXOyvRWLsK9SdurGA+jjziAlMef7iB5ZEFFoQpw==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.0.1.tgz",
+ "integrity": "sha512-v3yO6cSPAoBSSyH67HWnXHzuhPhSNZhRmLY38JvCt2sqY8sPMOODpcU1D79iUMFf7k16DaMEbL4Mgx61ZhiC8Q==",
"license": "MIT",
"dependencies": {
- "cron": "4.3.0"
+ "cron": "4.3.3"
},
"peerDependencies": {
"@nestjs/common": "^10.0.0 || ^11.0.0",
@@ -9192,15 +9152,15 @@
}
},
"node_modules/@nestjs/schematics": {
- "version": "11.0.5",
- "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.5.tgz",
- "integrity": "sha512-T50SCNyqCZ/fDssaOD7meBKLZ87ebRLaJqZTJPvJKjlib1VYhMOCwXYsr7bjMPmuPgiQHOwvppz77xN/m6GM7A==",
+ "version": "11.0.9",
+ "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.9.tgz",
+ "integrity": "sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "19.2.6",
- "@angular-devkit/schematics": "19.2.6",
- "comment-json": "4.2.5",
+ "@angular-devkit/core": "19.2.17",
+ "@angular-devkit/schematics": "19.2.17",
+ "comment-json": "4.4.1",
"jsonc-parser": "3.3.1",
"pluralize": "8.0.0"
},
@@ -9209,9 +9169,9 @@
}
},
"node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": {
- "version": "19.2.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.6.tgz",
- "integrity": "sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ==",
+ "version": "19.2.17",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.17.tgz",
+ "integrity": "sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9237,13 +9197,13 @@
}
},
"node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": {
- "version": "19.2.6",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.6.tgz",
- "integrity": "sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ==",
+ "version": "19.2.17",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.17.tgz",
+ "integrity": "sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "19.2.6",
+ "@angular-devkit/core": "19.2.17",
"jsonc-parser": "3.3.1",
"magic-string": "0.30.17",
"ora": "5.4.1",
@@ -9341,12 +9301,12 @@
"license": "ISC"
},
"node_modules/@nestjs/serve-static": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-5.0.3.tgz",
- "integrity": "sha512-0jFjTlSVSLrI+mot8lfm+h2laXtKzCvgsVStv9T1ZBZTDwS26gM5czIhIESmWAod0PfrbCDFiu9C1MglObL8VA==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-5.0.4.tgz",
+ "integrity": "sha512-3kO1M9D3vsPyWPFardxIjUYeuolS58PnhCoBTkS7t3BrdZFZCKHnBZ15js+UOzOR2Q6HmD7ssGjLd0DVYVdvOw==",
"license": "MIT",
"dependencies": {
- "path-to-regexp": "8.2.0"
+ "path-to-regexp": "8.3.0"
},
"peerDependencies": {
"@fastify/static": "^8.0.4",
@@ -9368,9 +9328,9 @@
}
},
"node_modules/@nestjs/testing": {
- "version": "11.1.3",
- "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.3.tgz",
- "integrity": "sha512-CeXG6/eEqgFIkPkmU00y18Dd3DLOIDFhPItzJK1SWckKo6IhcnfoRJzGx75bmuvUMjb51j6An96S/+MJ2ty9jA==",
+ "version": "11.1.8",
+ "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.8.tgz",
+ "integrity": "sha512-E6K+0UTKztcPxJzLnQa7S34lFjZbrj3Z1r7c5y5WDrL1m5HD1H4AeyBhicHgdaFmxjLAva2bq0sYKy/S7cdeYA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11878,36 +11838,6 @@
"tslib": "^2.8.1"
}
},
- "node_modules/@peculiar/json-schema": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz",
- "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@peculiar/webcrypto": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz",
- "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@peculiar/asn1-schema": "^2.3.8",
- "@peculiar/json-schema": "^1.1.12",
- "pvtsutils": "^1.3.5",
- "tslib": "^2.6.2",
- "webcrypto-core": "^1.8.0"
- },
- "engines": {
- "node": ">=10.12.0"
- }
- },
"node_modules/@phenomnomnominal/tsquery": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz",
@@ -11953,9 +11883,9 @@
"license": "MIT"
},
"node_modules/@prisma/client": {
- "version": "6.17.1",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.17.1.tgz",
- "integrity": "sha512-zL58jbLzYamjnNnmNA51IOZdbk5ci03KviXCuB0Tydc9btH2kDWsi1pQm2VecviRTM7jGia0OPPkgpGnT3nKvw==",
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.18.0.tgz",
+ "integrity": "sha512-jnL2I9gDnPnw4A+4h5SuNn8Gc+1mL1Z79U/3I9eE2gbxJG1oSA+62ByPW4xkeDgwE0fqMzzpAZ7IHxYnLZ4iQA==",
"hasInstallScript": true,
"license": "Apache-2.0",
"engines": {
@@ -11975,66 +11905,66 @@
}
},
"node_modules/@prisma/config": {
- "version": "6.17.1",
- "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.17.1.tgz",
- "integrity": "sha512-fs8wY6DsvOCzuiyWVckrVs1LOcbY4LZNz8ki4uUIQ28jCCzojTGqdLhN2Jl5lDnC1yI8/gNIKpsWDM8pLhOdwA==",
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.18.0.tgz",
+ "integrity": "sha512-rgFzspCpwsE+q3OF/xkp0fI2SJ3PfNe9LLMmuSVbAZ4nN66WfBiKqJKo/hLz3ysxiPQZf8h1SMf2ilqPMeWATQ==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"c12": "3.1.0",
"deepmerge-ts": "7.1.5",
- "effect": "3.16.12",
+ "effect": "3.18.4",
"empathic": "2.0.0"
}
},
"node_modules/@prisma/debug": {
- "version": "6.17.1",
- "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.17.1.tgz",
- "integrity": "sha512-Vf7Tt5Wh9XcndpbmeotuqOMLWPTjEKCsgojxXP2oxE1/xYe7PtnP76hsouG9vis6fctX+TxgmwxTuYi/+xc7dQ==",
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.18.0.tgz",
+ "integrity": "sha512-PMVPMmxPj0ps1VY75DIrT430MoOyQx9hmm174k6cmLZpcI95rAPXOQ+pp8ANQkJtNyLVDxnxVJ0QLbrm/ViBcg==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/engines": {
- "version": "6.17.1",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.17.1.tgz",
- "integrity": "sha512-D95Ik3GYZkqZ8lSR4EyFOJ/tR33FcYRP8kK61o+WMsyD10UfJwd7+YielflHfKwiGodcqKqoraWw8ElAgMDbPw==",
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.18.0.tgz",
+ "integrity": "sha512-i5RzjGF/ex6AFgqEe2o1IW8iIxJGYVQJVRau13kHPYEL1Ck8Zvwuzamqed/1iIljs5C7L+Opiz5TzSsUebkriA==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "6.17.1",
- "@prisma/engines-version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac",
- "@prisma/fetch-engine": "6.17.1",
- "@prisma/get-platform": "6.17.1"
+ "@prisma/debug": "6.18.0",
+ "@prisma/engines-version": "6.18.0-8.34b5a692b7bd79939a9a2c3ef97d816e749cda2f",
+ "@prisma/fetch-engine": "6.18.0",
+ "@prisma/get-platform": "6.18.0"
}
},
"node_modules/@prisma/engines-version": {
- "version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac.tgz",
- "integrity": "sha512-17140E3huOuD9lMdJ9+SF/juOf3WR3sTJMVyyenzqUPbuH+89nPhSWcrY+Mf7tmSs6HvaO+7S+HkELinn6bhdg==",
+ "version": "6.18.0-8.34b5a692b7bd79939a9a2c3ef97d816e749cda2f",
+ "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.18.0-8.34b5a692b7bd79939a9a2c3ef97d816e749cda2f.tgz",
+ "integrity": "sha512-T7Af4QsJQnSgWN1zBbX+Cha5t4qjHRxoeoWpK4JugJzG/ipmmDMY5S+O0N1ET6sCBNVkf6lz+Y+ZNO9+wFU8pQ==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/fetch-engine": {
- "version": "6.17.1",
- "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.17.1.tgz",
- "integrity": "sha512-AYZiHOs184qkDMiTeshyJCtyL4yERkjfTkJiSJdYuSfc24m94lTNL5+GFinZ6vVz+ktX4NJzHKn1zIFzGTWrWg==",
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.18.0.tgz",
+ "integrity": "sha512-TdaBvTtBwP3IoqVYoGIYpD4mWlk0pJpjTJjir/xLeNWlwog7Sl3bD2J0jJ8+5+q/6RBg+acb9drsv5W6lqae7A==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "6.17.1",
- "@prisma/engines-version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac",
- "@prisma/get-platform": "6.17.1"
+ "@prisma/debug": "6.18.0",
+ "@prisma/engines-version": "6.18.0-8.34b5a692b7bd79939a9a2c3ef97d816e749cda2f",
+ "@prisma/get-platform": "6.18.0"
}
},
"node_modules/@prisma/get-platform": {
- "version": "6.17.1",
- "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.17.1.tgz",
- "integrity": "sha512-AKEn6fsfz0r482S5KRDFlIGEaq9wLNcgalD1adL+fPcFFblIKs1sD81kY/utrHdqKuVC6E1XSRpegDK3ZLL4Qg==",
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.18.0.tgz",
+ "integrity": "sha512-uXNJCJGhxTCXo2B25Ta91Rk1/Nmlqg9p7G9GKh8TPhxvAyXCvMNQoogj4JLEUy+3ku8g59cpyQIKFhqY2xO2bg==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "6.17.1"
+ "@prisma/debug": "6.18.0"
}
},
"node_modules/@redis/client": {
@@ -13724,24 +13654,28 @@
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
"integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
+ "dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true,
"license": "MIT"
},
"node_modules/@tsconfig/node16": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true,
"license": "MIT"
},
"node_modules/@tufjs/canonical-json": {
@@ -14419,11 +14353,12 @@
"license": "MIT"
},
"node_modules/@types/jsonwebtoken": {
- "version": "9.0.7",
- "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz",
- "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==",
+ "version": "9.0.10",
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz",
+ "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==",
"license": "MIT",
"dependencies": {
+ "@types/ms": "*",
"@types/node": "*"
}
},
@@ -14435,9 +14370,9 @@
"license": "MIT"
},
"node_modules/@types/luxon": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.6.2.tgz",
- "integrity": "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==",
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz",
+ "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==",
"license": "MIT"
},
"node_modules/@types/mdx": {
@@ -14454,6 +14389,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/ms": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
+ "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
+ "license": "MIT"
+ },
"node_modules/@types/node": {
"version": "22.15.17",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz",
@@ -15649,6 +15590,7 @@
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "devOptional": true,
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -15695,6 +15637,7 @@
"version": "8.3.4",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
"integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"acorn": "^8.11.0"
@@ -16020,6 +15963,7 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true,
"license": "MIT"
},
"node_modules/argparse": {
@@ -16672,14 +16616,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/base64-arraybuffer": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz",
- "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -17003,30 +16939,6 @@
"popper.js": "^1.16.1"
}
},
- "node_modules/borc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/borc/-/borc-2.1.2.tgz",
- "integrity": "sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w==",
- "license": "MIT",
- "dependencies": {
- "bignumber.js": "^9.0.0",
- "buffer": "^5.5.0",
- "commander": "^2.15.0",
- "ieee754": "^1.1.13",
- "iso-url": "~0.4.7",
- "json-text-sequence": "~0.1.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/borc/node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "license": "MIT"
- },
"node_modules/brace-expansion": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
@@ -17123,6 +17035,7 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
"funding": [
{
"type": "github",
@@ -17565,6 +17478,12 @@
"node": ">=8"
}
},
+ "node_modules/change-case": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz",
+ "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==",
+ "license": "MIT"
+ },
"node_modules/char-regex": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
@@ -18230,17 +18149,15 @@
}
},
"node_modules/comment-json": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz",
- "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.4.1.tgz",
+ "integrity": "sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==",
"dev": true,
"license": "MIT",
"dependencies": {
"array-timsort": "^1.0.3",
"core-util-is": "^1.0.3",
- "esprima": "^4.0.1",
- "has-own-prop": "^2.0.0",
- "repeat-string": "^1.6.1"
+ "esprima": "^4.0.1"
},
"engines": {
"node": ">= 6"
@@ -18606,9 +18523,9 @@
}
},
"node_modules/countries-list": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/countries-list/-/countries-list-3.1.1.tgz",
- "integrity": "sha512-nPklKJ5qtmY5MdBKw1NiBAoyx5Sa7p2yPpljZyQ7gyCN1m+eMFs9I6CT37Mxt8zvR5L3VzD3DJBE4WQzX3WF4A==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/countries-list/-/countries-list-3.2.0.tgz",
+ "integrity": "sha512-HYHAo2fwEsG3TmbsNdVmIQPHizRlqeYMTtLEAl0IANG/3jRYX7p3NR6VapDqKP0n60TmsRy1dyRjVN5JbywDbA==",
"license": "MIT"
},
"node_modules/countup.js": {
@@ -19284,16 +19201,17 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true,
"license": "MIT"
},
"node_modules/cron": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/cron/-/cron-4.3.0.tgz",
- "integrity": "sha512-ciiYNLfSlF9MrDqnbMdRWFiA6oizSF7kA1osPP9lRzNu0Uu+AWog1UKy7SkckiDY2irrNjeO6qLyKnXC8oxmrw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/cron/-/cron-4.3.3.tgz",
+ "integrity": "sha512-B/CJj5yL3sjtlun6RtYHvoSB26EmQ2NUmhq9ZiJSyKIM4K/fqfh9aelDFlIayD2YMeFZqWLi9hHV+c+pq2Djkw==",
"license": "MIT",
"dependencies": {
- "@types/luxon": "~3.6.0",
- "luxon": "~3.6.0"
+ "@types/luxon": "~3.7.0",
+ "luxon": "~3.7.0"
},
"engines": {
"node": ">=18.x"
@@ -20767,12 +20685,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/delimit-stream": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz",
- "integrity": "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==",
- "license": "BSD-2-Clause"
- },
"node_modules/denque": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
@@ -20867,6 +20779,7 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
@@ -21036,9 +20949,9 @@
}
},
"node_modules/dotenv": {
- "version": "16.4.7",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
- "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
+ "version": "17.2.3",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
+ "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
@@ -21048,9 +20961,9 @@
}
},
"node_modules/dotenv-expand": {
- "version": "12.0.1",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz",
- "integrity": "sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==",
+ "version": "12.0.3",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz",
+ "integrity": "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==",
"license": "BSD-2-Clause",
"dependencies": {
"dotenv": "^16.4.5"
@@ -21062,6 +20975,18 @@
"url": "https://dotenvx.com"
}
},
+ "node_modules/dotenv-expand/node_modules/dotenv": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -21124,9 +21049,9 @@
"license": "MIT"
},
"node_modules/effect": {
- "version": "3.16.12",
- "resolved": "https://registry.npmjs.org/effect/-/effect-3.16.12.tgz",
- "integrity": "sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==",
+ "version": "3.18.4",
+ "resolved": "https://registry.npmjs.org/effect/-/effect-3.18.4.tgz",
+ "integrity": "sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -24157,16 +24082,6 @@
"node": ">=8"
}
},
- "node_modules/has-own-prop": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
- "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/has-property-descriptors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
@@ -24797,12 +24712,6 @@
"postcss": "^8.1.0"
}
},
- "node_modules/idb": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
- "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==",
- "license": "ISC"
- },
"node_modules/identity-obj-proxy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
@@ -25057,12 +24966,12 @@
}
},
"node_modules/ioredis": {
- "version": "5.6.1",
- "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.1.tgz",
- "integrity": "sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==",
+ "version": "5.8.2",
+ "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.8.2.tgz",
+ "integrity": "sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q==",
"license": "MIT",
"dependencies": {
- "@ioredis/commands": "^1.1.1",
+ "@ioredis/commands": "1.4.0",
"cluster-key-slot": "^1.1.0",
"debug": "^4.3.4",
"denque": "^2.1.0",
@@ -25794,15 +25703,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/iso-url": {
- "version": "0.4.7",
- "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-0.4.7.tgz",
- "integrity": "sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
@@ -30055,12 +29955,6 @@
"license": "MIT",
"peer": true
},
- "node_modules/js-sha256": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz",
- "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==",
- "license": "MIT"
- },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -30273,15 +30167,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/json-text-sequence": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz",
- "integrity": "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==",
- "license": "MIT",
- "dependencies": {
- "delimit-stream": "0.1.0"
- }
- },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -31572,9 +31457,9 @@
}
},
"node_modules/load-esm": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.2.tgz",
- "integrity": "sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz",
+ "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==",
"funding": [
{
"type": "github",
@@ -31992,9 +31877,9 @@
"license": "ISC"
},
"node_modules/luxon": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz",
- "integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
+ "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -32040,6 +31925,7 @@
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true,
"license": "ISC"
},
"node_modules/make-fetch-happen": {
@@ -32585,9 +32471,9 @@
}
},
"node_modules/multer": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.1.tgz",
- "integrity": "sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz",
+ "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==",
"license": "MIT",
"dependencies": {
"append-field": "^1.0.0",
@@ -32737,9 +32623,9 @@
"license": "MIT"
},
"node_modules/ng-extract-i18n-merge": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-3.0.0.tgz",
- "integrity": "sha512-vTWtAz6a/wVYxnUMFHp1ur6o4JSLm+LcxdSMV8o8Ml2p5oCsSB4iFd5E6h8Yb8X8D596qyBz0ELgiDmbn4YyRQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-3.1.0.tgz",
+ "integrity": "sha512-4rJRcpTcP54xf5cjoz3S1By0T04X2RoyQcMDxr4wLdRx3fVxkeP8jeuLzmj9F4G5n0yMQb+6jhUiFERxpkfs1w==",
"license": "MIT",
"dependencies": {
"@angular-devkit/architect": "^0.2000.0",
@@ -33451,6 +33337,19 @@
"node": ">=8"
}
},
+ "node_modules/nx/node_modules/dotenv": {
+ "version": "16.4.7",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
+ "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "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",
@@ -34695,12 +34594,13 @@
"license": "ISC"
},
"node_modules/path-to-regexp": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
- "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
"license": "MIT",
- "engines": {
- "node": ">=16"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/path-type": {
@@ -35740,15 +35640,15 @@
}
},
"node_modules/prisma": {
- "version": "6.17.1",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.17.1.tgz",
- "integrity": "sha512-ac6h0sM1Tg3zu8NInY+qhP/S9KhENVaw9n1BrGKQVFu05JT5yT5Qqqmb8tMRIE3ZXvVj4xcRA5yfrsy4X7Yy5g==",
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.18.0.tgz",
+ "integrity": "sha512-bXWy3vTk8mnRmT+SLyZBQoC2vtV9Z8u7OHvEu+aULYxwiop/CPiFZ+F56KsNRNf35jw+8wcu8pmLsjxpBxAO9g==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/config": "6.17.1",
- "@prisma/engines": "6.17.1"
+ "@prisma/config": "6.18.0",
+ "@prisma/engines": "6.18.0"
},
"bin": {
"prisma": "build/index.js"
@@ -36453,16 +36353,6 @@
"entities": "^2.0.0"
}
},
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/replace-in-file": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-8.3.0.tgz",
@@ -38034,12 +37924,6 @@
"node": "^18.17.0 || >=20.5.0"
}
},
- "node_modules/simple-cbor": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/simple-cbor/-/simple-cbor-0.4.1.tgz",
- "integrity": "sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==",
- "license": "ISC"
- },
"node_modules/sirv": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
@@ -39046,6 +38930,117 @@
"url": "https://opencollective.com/synckit"
}
},
+ "node_modules/tablemark": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/tablemark/-/tablemark-4.1.0.tgz",
+ "integrity": "sha512-B3LDjbDo+ac+D5RwkBOPZZ6ua8716KdT+6NO3DKOCHJq0ezE6vV2r92rjrC1ci2H+ocuysl5ytf1T0QqV65yoA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2",
+ "change-case": "^5.4.4",
+ "string-width": "^8.1.0",
+ "wordwrapjs": "^5.1.0",
+ "wrap-ansi": "^9.0.2"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/tablemark/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/tablemark/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/tablemark/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "license": "MIT"
+ },
+ "node_modules/tablemark/node_modules/string-width": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz",
+ "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==",
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tablemark/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/tablemark/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/tablemark/node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/tapable": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz",
@@ -39884,6 +39879,7 @@
"version": "10.9.2",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
@@ -40061,16 +40057,10 @@
"node": "*"
}
},
- "node_modules/tweetnacl": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
- "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==",
- "license": "Unlicense"
- },
"node_modules/twitter-api-v2": {
- "version": "1.23.0",
- "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.23.0.tgz",
- "integrity": "sha512-5i1agETVpTuY68Zuk9i2B3N9wHzc4JIWw0WKyG4CEaFv9mRKmU87roa+U1oYYXTChWb0HMcqfkwoBJHYmLbeDA==",
+ "version": "1.27.0",
+ "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.27.0.tgz",
+ "integrity": "sha512-hbIFwzg0NeOcFOdmJqtKMCXjLjc0INff/7NwhnZ2zpnw65oku8i+0eMxo5M0iTc1hs+inD/IpDw3S0Xh2c45QQ==",
"license": "Apache-2.0"
},
"node_modules/type-check": {
@@ -40637,6 +40627,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
+ "dev": true,
"license": "MIT"
},
"node_modules/v8-to-istanbul": {
@@ -40952,20 +40943,6 @@
"license": "MIT",
"optional": true
},
- "node_modules/webcrypto-core": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.1.tgz",
- "integrity": "sha512-P+x1MvlNCXlKbLSOY4cYrdreqPG5hbzkmawbcXLKN/mf6DZW0SdNNkZ+sjwsqVkI4A4Ko2sPZmkZtCKY58w83A==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@peculiar/asn1-schema": "^2.3.13",
- "@peculiar/json-schema": "^1.1.12",
- "asn1js": "^3.0.5",
- "pvtsutils": "^1.3.5",
- "tslib": "^2.7.0"
- }
- },
"node_modules/webidl-conversions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
@@ -41928,6 +41905,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/wordwrapjs": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.1.tgz",
+ "integrity": "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.17"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -42257,6 +42243,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
diff --git a/package.json b/package.json
index cb0ba6731..ea8646565 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ghostfolio",
- "version": "2.208.0",
+ "version": "2.215.0-beta.1",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",
@@ -69,27 +69,22 @@
"@angular/service-worker": "20.2.4",
"@codewithdan/observable-store": "2.2.15",
"@date-fns/utc": "2.1.0",
- "@dfinity/agent": "0.15.7",
- "@dfinity/auth-client": "0.15.7",
- "@dfinity/candid": "0.15.7",
- "@dfinity/identity": "0.15.7",
- "@dfinity/principal": "0.15.7",
"@internationalized/number": "3.6.3",
"@ionic/angular": "8.7.3",
"@keyv/redis": "4.4.0",
- "@nestjs/bull": "11.0.2",
+ "@nestjs/bull": "11.0.4",
"@nestjs/cache-manager": "3.0.1",
- "@nestjs/common": "11.1.3",
+ "@nestjs/common": "11.1.8",
"@nestjs/config": "4.0.2",
- "@nestjs/core": "11.1.3",
+ "@nestjs/core": "11.1.8",
"@nestjs/event-emitter": "3.0.1",
- "@nestjs/jwt": "11.0.0",
+ "@nestjs/jwt": "11.0.1",
"@nestjs/passport": "11.0.5",
- "@nestjs/platform-express": "11.1.3",
- "@nestjs/schedule": "6.0.0",
- "@nestjs/serve-static": "5.0.3",
+ "@nestjs/platform-express": "11.1.8",
+ "@nestjs/schedule": "6.0.1",
+ "@nestjs/serve-static": "5.0.4",
"@openrouter/ai-sdk-provider": "0.7.2",
- "@prisma/client": "6.17.1",
+ "@prisma/client": "6.18.0",
"@simplewebauthn/browser": "13.1.0",
"@simplewebauthn/server": "13.1.1",
"@stripe/stripe-js": "7.9.0",
@@ -108,9 +103,11 @@
"class-validator": "0.14.2",
"color": "5.0.0",
"countries-and-timezones": "3.8.0",
- "countries-list": "3.1.1",
+ "countries-list": "3.2.0",
"countup.js": "2.9.0",
"date-fns": "4.1.0",
+ "dotenv": "17.2.3",
+ "dotenv-expand": "12.0.3",
"envalid": "8.1.0",
"fuse.js": "7.1.0",
"google-spreadsheet": "3.2.0",
@@ -121,7 +118,7 @@
"lodash": "4.17.21",
"marked": "15.0.4",
"ms": "3.0.0-canary.1",
- "ng-extract-i18n-merge": "3.0.0",
+ "ng-extract-i18n-merge": "3.1.0",
"ngx-device-detector": "10.1.0",
"ngx-markdown": "20.0.0",
"ngx-skeleton-loader": "11.3.0",
@@ -136,7 +133,8 @@
"rxjs": "7.8.1",
"stripe": "18.5.0",
"svgmap": "2.12.2",
- "twitter-api-v2": "1.23.0",
+ "tablemark": "4.1.0",
+ "twitter-api-v2": "1.27.0",
"uuid": "11.1.0",
"yahoo-finance2": "3.10.0",
"zone.js": "0.15.1"
@@ -155,8 +153,8 @@
"@angular/pwa": "20.2.2",
"@eslint/eslintrc": "3.3.1",
"@eslint/js": "9.35.0",
- "@nestjs/schematics": "11.0.5",
- "@nestjs/testing": "11.1.3",
+ "@nestjs/schematics": "11.0.9",
+ "@nestjs/testing": "11.1.8",
"@nx/angular": "21.5.1",
"@nx/cypress": "21.5.1",
"@nx/eslint-plugin": "21.5.1",
@@ -194,7 +192,7 @@
"nx": "21.5.1",
"prettier": "3.6.2",
"prettier-plugin-organize-attributes": "1.0.0",
- "prisma": "6.17.1",
+ "prisma": "6.18.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"replace-in-file": "8.3.0",
diff --git a/prisma.config.ts b/prisma.config.ts
deleted file mode 100644
index 24da6d886..000000000
--- a/prisma.config.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import 'dotenv/config';
-import { join } from 'node:path';
-import { defineConfig } from 'prisma/config';
-
-export default defineConfig({
- migrations: {
- path: join('prisma', 'migrations'),
- seed: `node ${join('prisma', 'seed.mts')}`
- },
- schema: join('prisma', 'schema.prisma')
-});
diff --git a/test/import/not-ok/invalid-data-source.json b/test/import/not-ok/invalid-data-source.json
index 472e295ee..f8e920c67 100644
--- a/test/import/not-ok/invalid-data-source.json
+++ b/test/import/not-ok/invalid-data-source.json
@@ -14,5 +14,11 @@
"type": "BUY",
"unitPrice": 100.0
}
- ]
+ ],
+ "user": {
+ "settings": {
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
+ }
+ }
}
diff --git a/test/import/not-ok/invalid-date-before-min.json b/test/import/not-ok/invalid-date-before-min.json
index 3040581b2..260d79166 100644
--- a/test/import/not-ok/invalid-date-before-min.json
+++ b/test/import/not-ok/invalid-date-before-min.json
@@ -14,5 +14,11 @@
"type": "BUY",
"unitPrice": 100.0
}
- ]
+ ],
+ "user": {
+ "settings": {
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
+ }
+ }
}
diff --git a/test/import/not-ok/invalid-date.json b/test/import/not-ok/invalid-date.json
index 99cd6d156..4522c6dcc 100644
--- a/test/import/not-ok/invalid-date.json
+++ b/test/import/not-ok/invalid-date.json
@@ -14,5 +14,11 @@
"type": "BUY",
"unitPrice": 100.0
}
- ]
+ ],
+ "user": {
+ "settings": {
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
+ }
+ }
}
diff --git a/test/import/not-ok/invalid-symbol.json b/test/import/not-ok/invalid-symbol.json
index 14f0051ec..0bbbf53db 100644
--- a/test/import/not-ok/invalid-symbol.json
+++ b/test/import/not-ok/invalid-symbol.json
@@ -14,5 +14,11 @@
"type": "BUY",
"unitPrice": 100.0
}
- ]
+ ],
+ "user": {
+ "settings": {
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
+ }
+ }
}
diff --git a/test/import/not-ok/invalid-type.json b/test/import/not-ok/invalid-type.json
index a23f72411..a8967d81a 100644
--- a/test/import/not-ok/invalid-type.json
+++ b/test/import/not-ok/invalid-type.json
@@ -14,5 +14,11 @@
"type": "",
"unitPrice": 100.0
}
- ]
+ ],
+ "user": {
+ "settings": {
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
+ }
+ }
}
diff --git a/test/import/not-ok/unavailable-exchange-rate.json b/test/import/not-ok/unavailable-exchange-rate.json
index 4d8be156a..66c7044d7 100644
--- a/test/import/not-ok/unavailable-exchange-rate.json
+++ b/test/import/not-ok/unavailable-exchange-rate.json
@@ -15,5 +15,11 @@
"date": "1990-01-01T00:00:00.000Z",
"symbol": "MSFT"
}
- ]
+ ],
+ "user": {
+ "settings": {
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
+ }
+ }
}
diff --git a/test/import/ok/500-activities.json b/test/import/ok/500-activities.json
index b691a6f9f..2793c695e 100644
--- a/test/import/ok/500-activities.json
+++ b/test/import/ok/500-activities.json
@@ -6019,7 +6019,8 @@
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/btceur.json b/test/import/ok/btceur.json
index b370682f9..ae9eb8921 100644
--- a/test/import/ok/btceur.json
+++ b/test/import/ok/btceur.json
@@ -23,7 +23,8 @@
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/btcusd-short.json b/test/import/ok/btcusd-short.json
index bc4152de9..6f25a7740 100644
--- a/test/import/ok/btcusd-short.json
+++ b/test/import/ok/btcusd-short.json
@@ -36,7 +36,8 @@
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/btcusd.json b/test/import/ok/btcusd.json
index fc2e1f66e..4a85f967e 100644
--- a/test/import/ok/btcusd.json
+++ b/test/import/ok/btcusd.json
@@ -23,7 +23,8 @@
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/derived-currency.json b/test/import/ok/derived-currency.json
index e740c1ae3..637ab21b6 100644
--- a/test/import/ok/derived-currency.json
+++ b/test/import/ok/derived-currency.json
@@ -31,7 +31,8 @@
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/novn-buy-and-sell-partially.json b/test/import/ok/novn-buy-and-sell-partially.json
index 8c5778566..3bdd7eb7e 100644
--- a/test/import/ok/novn-buy-and-sell-partially.json
+++ b/test/import/ok/novn-buy-and-sell-partially.json
@@ -27,7 +27,8 @@
],
"user": {
"settings": {
- "currency": "CHF"
+ "currency": "CHF",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/novn-buy-and-sell.json b/test/import/ok/novn-buy-and-sell.json
index 71ee9b7a9..6ae519d87 100644
--- a/test/import/ok/novn-buy-and-sell.json
+++ b/test/import/ok/novn-buy-and-sell.json
@@ -27,7 +27,8 @@
],
"user": {
"settings": {
- "currency": "CHF"
+ "currency": "CHF",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/penthouse-apartment.csv b/test/import/ok/penthouse-apartment.csv
new file mode 100644
index 000000000..27eb5bf1c
--- /dev/null
+++ b/test/import/ok/penthouse-apartment.csv
@@ -0,0 +1,2 @@
+Date,Code,DataSource,Currency,Price,Quantity,Action,Fee,Note
+01.01.2022,Penthouse Apartment,MANUAL,USD,500000.0,1,buy,0.00,
diff --git a/test/import/ok/penthouse-apartment.json b/test/import/ok/penthouse-apartment.json
index 3b230cf76..0c35521e6 100644
--- a/test/import/ok/penthouse-apartment.json
+++ b/test/import/ok/penthouse-apartment.json
@@ -42,12 +42,13 @@
"symbol": "7e91b7d4-1430-4212-8380-289a06c9bbc1",
"tags": [],
"type": "BUY",
- "unitPrice": 500000,
+ "unitPrice": 500000
}
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/sample.json b/test/import/ok/sample.json
index 21277129f..bc2798718 100644
--- a/test/import/ok/sample.json
+++ b/test/import/ok/sample.json
@@ -147,7 +147,8 @@
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/vti-buy-long-history.json b/test/import/ok/vti-buy-long-history.json
index c8cd25e60..88b38d2b1 100644
--- a/test/import/ok/vti-buy-long-history.json
+++ b/test/import/ok/vti-buy-long-history.json
@@ -40,7 +40,8 @@
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
diff --git a/test/import/ok/without-accounts.json b/test/import/ok/without-accounts.json
index 8a24f86fc..2283dd889 100644
--- a/test/import/ok/without-accounts.json
+++ b/test/import/ok/without-accounts.json
@@ -47,7 +47,8 @@
],
"user": {
"settings": {
- "currency": "USD"
+ "currency": "USD",
+ "performanceCalculationType": "ROAI"
}
}
}
|