- {{ userItem.country }}
+ {{ getEmojiFlag(userItem.country) }}
|
{{ formatDistanceToNow(userItem.createdAt) }}
diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts
index 575d433a0..0bfefb729 100644
--- a/libs/common/src/lib/helper.ts
+++ b/libs/common/src/lib/helper.ts
@@ -118,6 +118,18 @@ export function getDateWithTimeFormatString(aLocale?: string) {
return `${getDateFormatString(aLocale)}, HH:mm:ss`;
}
+export function getEmojiFlag(aCountryCode: string) {
+ if (!aCountryCode) {
+ return aCountryCode;
+ }
+
+ return aCountryCode
+ .toUpperCase()
+ .replace(/./g, (character) =>
+ String.fromCodePoint(127397 + character.charCodeAt(0))
+ );
+}
+
export function getLocale() {
return navigator.languages?.length
? navigator.languages[0]
From a79f31b006b012e2e3e9d96791259b662ec1dadc Mon Sep 17 00:00:00 2001
From: Yash Solanki
Date: Tue, 7 Feb 2023 02:29:59 +0530
Subject: [PATCH 2/7] Feature/add accounts import export (#1635)
* Add accounts to activities export
* Add logic for importing accounts
* Update changelog
---
CHANGELOG.md | 5 +
.../api/src/app/account/create-account.dto.ts | 4 +
apps/api/src/app/export/export.service.ts | 17 ++++
apps/api/src/app/import/import-data.dto.ts | 9 +-
apps/api/src/app/import/import.controller.ts | 9 +-
apps/api/src/app/import/import.service.ts | 93 +++++++++++++++++--
.../import-activities-dialog.component.ts | 25 +++--
.../app/services/import-activities.service.ts | 42 ++++++---
.../src/lib/interfaces/export.interface.ts | 3 +-
test/import/ok-without-accounts.json | 48 ++++++++++
test/import/ok.json | 21 ++++-
11 files changed, 242 insertions(+), 34 deletions(-)
create mode 100644 test/import/ok-without-accounts.json
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cadd77304..10f1db5fb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+### Added
+
+- Added support to export accounts
+- Added suport to import accounts
+
### Changed
- Improved the styling in the admin control panel
diff --git a/apps/api/src/app/account/create-account.dto.ts b/apps/api/src/app/account/create-account.dto.ts
index 3ea13e20a..6495fa518 100644
--- a/apps/api/src/app/account/create-account.dto.ts
+++ b/apps/api/src/app/account/create-account.dto.ts
@@ -17,6 +17,10 @@ export class CreateAccountDto {
@IsString()
currency: string;
+ @IsOptional()
+ @IsString()
+ id?: string;
+
@IsBoolean()
@IsOptional()
isExcluded?: boolean;
diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts
index c4655e7d8..c57f1df4e 100644
--- a/apps/api/src/app/export/export.service.ts
+++ b/apps/api/src/app/export/export.service.ts
@@ -14,6 +14,22 @@ export class ExportService {
activityIds?: string[];
userId: string;
}): Promise {
+ const accounts = await this.prismaService.account.findMany({
+ orderBy: {
+ name: 'asc'
+ },
+ select: {
+ accountType: true,
+ balance: true,
+ currency: true,
+ id: true,
+ isExcluded: true,
+ name: true,
+ platformId: true
+ },
+ where: { userId }
+ });
+
let activities = await this.prismaService.order.findMany({
orderBy: { date: 'desc' },
select: {
@@ -38,6 +54,7 @@ export class ExportService {
return {
meta: { date: new Date().toISOString(), version: environment.version },
+ accounts,
activities: activities.map(
({
accountId,
diff --git a/apps/api/src/app/import/import-data.dto.ts b/apps/api/src/app/import/import-data.dto.ts
index f3a0ba8fe..fa954a2c9 100644
--- a/apps/api/src/app/import/import-data.dto.ts
+++ b/apps/api/src/app/import/import-data.dto.ts
@@ -1,8 +1,15 @@
+import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto';
import { Type } from 'class-transformer';
-import { IsArray, ValidateNested } from 'class-validator';
+import { IsArray, IsOptional, ValidateNested } from 'class-validator';
export class ImportDataDto {
+ @IsOptional()
+ @IsArray()
+ @Type(() => CreateAccountDto)
+ @ValidateNested({ each: true })
+ accounts: CreateAccountDto[];
+
@IsArray()
@Type(() => CreateOrderDto)
@ValidateNested({ each: true })
diff --git a/apps/api/src/app/import/import.controller.ts b/apps/api/src/app/import/import.controller.ts
index 2591ab638..93724bf02 100644
--- a/apps/api/src/app/import/import.controller.ts
+++ b/apps/api/src/app/import/import.controller.ts
@@ -2,6 +2,7 @@ import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interce
import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response.interceptor';
import { ConfigurationService } from '@ghostfolio/api/services/configuration.service';
import { ImportResponse } from '@ghostfolio/common/interfaces';
+import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import type { RequestWithUser } from '@ghostfolio/common/types';
import {
Body,
@@ -38,7 +39,10 @@ export class ImportController {
@Body() importData: ImportDataDto,
@Query('dryRun') isDryRun?: boolean
): Promise {
- if (!this.configurationService.get('ENABLE_FEATURE_IMPORT')) {
+ if (
+ !this.configurationService.get('ENABLE_FEATURE_IMPORT') ||
+ !hasPermission(this.request.user.permissions, permissions.createAccount)
+ ) {
throw new HttpException(
getReasonPhrase(StatusCodes.FORBIDDEN),
StatusCodes.FORBIDDEN
@@ -60,9 +64,10 @@ export class ImportController {
try {
const activities = await this.importService.import({
- maxActivitiesToImport,
isDryRun,
+ maxActivitiesToImport,
userCurrency,
+ accountsDto: importData.accounts ?? [],
activitiesDto: importData.activities,
userId: this.request.user.id
});
diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts
index d3be33bbc..37693f160 100644
--- a/apps/api/src/app/import/import.service.ts
+++ b/apps/api/src/app/import/import.service.ts
@@ -1,4 +1,5 @@
import { AccountService } from '@ghostfolio/api/app/account/account.service';
+import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { OrderService } from '@ghostfolio/api/app/order/order.service';
@@ -100,18 +101,75 @@ export class ImportService {
}
public async import({
+ accountsDto,
activitiesDto,
isDryRun = false,
maxActivitiesToImport,
userCurrency,
userId
}: {
+ accountsDto: Partial[];
activitiesDto: Partial[];
isDryRun?: boolean;
maxActivitiesToImport: number;
userCurrency: string;
userId: string;
}): Promise {
+ const accountIdMapping: { [oldAccountId: string]: string } = {};
+
+ if (!isDryRun && accountsDto?.length) {
+ const existingAccounts = await this.accountService.accounts({
+ where: {
+ id: {
+ in: accountsDto.map(({ id }) => {
+ return id;
+ })
+ }
+ }
+ });
+
+ for (const account of accountsDto) {
+ // Check if there is any existing account with the same ID
+ const accountWithSameId = existingAccounts.find(
+ (existingAccount) => existingAccount.id === account.id
+ );
+
+ // If there is no account or if the account belongs to a different user then create a new account
+ if (!accountWithSameId || accountWithSameId.userId !== userId) {
+ let oldAccountId: string;
+ const platformId = account.platformId;
+
+ delete account.platformId;
+
+ if (accountWithSameId) {
+ oldAccountId = account.id;
+ delete account.id;
+ }
+
+ const newAccountObject = {
+ ...account,
+ User: { connect: { id: userId } }
+ };
+
+ if (platformId) {
+ Object.assign(newAccountObject, {
+ Platform: { connect: { id: platformId } }
+ });
+ }
+
+ const newAccount = await this.accountService.createAccount(
+ newAccountObject,
+ userId
+ );
+
+ // Store the new to old account ID mappings for updating activities
+ if (accountWithSameId && oldAccountId) {
+ accountIdMapping[oldAccountId] = newAccount.id;
+ }
+ }
+ }
+ }
+
for (const activity of activitiesDto) {
if (!activity.dataSource) {
if (activity.type === 'ITEM') {
@@ -120,6 +178,13 @@ export class ImportService {
activity.dataSource = this.dataProviderService.getPrimaryDataSource();
}
}
+
+ // If a new account is created, then update the accountId in all activities
+ if (!isDryRun) {
+ if (Object.keys(accountIdMapping).includes(activity.accountId)) {
+ activity.accountId = accountIdMapping[activity.accountId];
+ }
+ }
}
const assetProfiles = await this.validateActivities({
@@ -128,12 +193,18 @@ export class ImportService {
userId
});
- const accountIds = (await this.accountService.getAccounts(userId)).map(
+ const accounts = (await this.accountService.getAccounts(userId)).map(
(account) => {
- return account.id;
+ return { id: account.id, name: account.name };
}
);
+ if (isDryRun) {
+ accountsDto.forEach(({ id, name }) => {
+ accounts.push({ id, name });
+ });
+ }
+
const activities: Activity[] = [];
for (const {
@@ -149,11 +220,15 @@ export class ImportService {
unitPrice
} of activitiesDto) {
const date = parseISO((dateString));
- const validatedAccountId = accountIds.includes(accountId)
- ? accountId
- : undefined;
+ const validatedAccount = accounts.find(({ id }) => {
+ return id === accountId;
+ });
- let order: OrderWithAccount;
+ let order:
+ | OrderWithAccount
+ | (Omit & {
+ Account?: { id: string; name: string };
+ });
if (isDryRun) {
order = {
@@ -164,7 +239,7 @@ export class ImportService {
type,
unitPrice,
userId,
- accountId: validatedAccountId,
+ accountId: validatedAccount?.id,
accountUserId: undefined,
createdAt: new Date(),
id: uuidv4(),
@@ -187,6 +262,7 @@ export class ImportService {
url: null,
...assetProfiles[symbol]
},
+ Account: validatedAccount,
symbolProfileId: undefined,
updatedAt: new Date()
};
@@ -199,7 +275,7 @@ export class ImportService {
type,
unitPrice,
userId,
- accountId: validatedAccountId,
+ accountId: validatedAccount?.id,
SymbolProfile: {
connectOrCreate: {
create: {
@@ -221,6 +297,7 @@ export class ImportService {
const value = new Big(quantity).mul(unitPrice).toNumber();
+ //@ts-ignore
activities.push({
...order,
value,
diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
index b7c143c37..7bfa9aa37 100644
--- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
+++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
@@ -11,6 +11,7 @@ import {
MatLegacyDialogRef as MatDialogRef
} from '@angular/material/legacy-dialog';
import { MatLegacySnackBar as MatSnackBar } from '@angular/material/legacy-snack-bar';
+import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { DataService } from '@ghostfolio/client/services/data.service';
import { ImportActivitiesService } from '@ghostfolio/client/services/import-activities.service';
@@ -28,6 +29,7 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces';
templateUrl: 'import-activities-dialog.html'
})
export class ImportActivitiesDialog implements OnDestroy {
+ public accounts: CreateAccountDto[] = [];
public activities: Activity[] = [];
public details: any[] = [];
public errorMessages: string[] = [];
@@ -91,9 +93,10 @@ export class ImportActivitiesDialog implements OnDestroy {
try {
this.snackBar.open('⏳ ' + $localize`Importing data...`);
- await this.importActivitiesService.importSelectedActivities(
- this.selectedActivities
- );
+ await this.importActivitiesService.importSelectedActivities({
+ accounts: this.accounts,
+ activities: this.selectedActivities
+ });
this.snackBar.open(
'✅ ' + $localize`Import has been completed`,
@@ -163,6 +166,8 @@ export class ImportActivitiesDialog implements OnDestroy {
if (file.name.endsWith('.json')) {
const content = JSON.parse(fileContent);
+ this.accounts = content.accounts;
+
if (!isArray(content.activities)) {
if (isArray(content.orders)) {
this.handleImportError({
@@ -180,10 +185,13 @@ export class ImportActivitiesDialog implements OnDestroy {
}
try {
- this.activities = await this.importActivitiesService.importJson({
- content: content.activities,
- isDryRun: true
- });
+ const { activities } =
+ await this.importActivitiesService.importJson({
+ accounts: content.accounts,
+ activities: content.activities,
+ isDryRun: true
+ });
+ this.activities = activities;
} catch (error) {
console.error(error);
this.handleImportError({ error, activities: content.activities });
@@ -192,11 +200,12 @@ export class ImportActivitiesDialog implements OnDestroy {
return;
} else if (file.name.endsWith('.csv')) {
try {
- this.activities = await this.importActivitiesService.importCsv({
+ const data = await this.importActivitiesService.importCsv({
fileContent,
isDryRun: true,
userAccounts: this.data.user.accounts
});
+ this.activities = data.activities;
} catch (error) {
console.error(error);
this.handleImportError({
diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts
index 2e15f367f..3b76b44b1 100644
--- a/apps/client/src/app/services/import-activities.service.ts
+++ b/apps/client/src/app/services/import-activities.service.ts
@@ -1,5 +1,6 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
+import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto';
import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { Account, DataSource, Type } from '@prisma/client';
@@ -33,7 +34,9 @@ export class ImportActivitiesService {
fileContent: string;
isDryRun?: boolean;
userAccounts: Account[];
- }): Promise {
+ }): Promise<{
+ activities: Activity[];
+ }> {
const content = csvToJson(fileContent, {
dynamicTyping: true,
header: true,
@@ -55,20 +58,26 @@ export class ImportActivitiesService {
});
}
- return await this.importJson({ isDryRun, content: activities });
+ return await this.importJson({ activities, isDryRun });
}
public importJson({
- content,
+ accounts,
+ activities,
isDryRun = false
}: {
- content: CreateOrderDto[];
+ activities: CreateOrderDto[];
+ accounts?: CreateAccountDto[];
isDryRun?: boolean;
- }): Promise {
+ }): Promise<{
+ activities: Activity[];
+ accounts?: CreateAccountDto[];
+ }> {
return new Promise((resolve, reject) => {
this.postImport(
{
- activities: content
+ accounts,
+ activities
},
isDryRun
)
@@ -80,22 +89,29 @@ export class ImportActivitiesService {
)
.subscribe({
next: (data) => {
- resolve(data.activities);
+ resolve(data);
}
});
});
}
- public importSelectedActivities(
- selectedActivities: Activity[]
- ): Promise {
+ public importSelectedActivities({
+ accounts,
+ activities
+ }: {
+ accounts: CreateAccountDto[];
+ activities: Activity[];
+ }): Promise<{
+ activities: Activity[];
+ accounts?: CreateAccountDto[];
+ }> {
const importData: CreateOrderDto[] = [];
- for (const activity of selectedActivities) {
+ for (const activity of activities) {
importData.push(this.convertToCreateOrderDto(activity));
}
- return this.importJson({ content: importData });
+ return this.importJson({ accounts, activities: importData });
}
private convertToCreateOrderDto({
@@ -347,7 +363,7 @@ export class ImportActivitiesService {
}
private postImport(
- aImportData: { activities: CreateOrderDto[] },
+ aImportData: { accounts: CreateAccountDto[]; activities: CreateOrderDto[] },
aIsDryRun = false
) {
return this.http.post<{ activities: Activity[] }>(
diff --git a/libs/common/src/lib/interfaces/export.interface.ts b/libs/common/src/lib/interfaces/export.interface.ts
index 37dbfba79..b142cb2f8 100644
--- a/libs/common/src/lib/interfaces/export.interface.ts
+++ b/libs/common/src/lib/interfaces/export.interface.ts
@@ -1,10 +1,11 @@
-import { Order } from '@prisma/client';
+import { Account, Order } from '@prisma/client';
export interface Export {
meta: {
date: string;
version: string;
};
+ accounts: Omit[];
activities: (Omit<
Order,
| 'accountUserId'
diff --git a/test/import/ok-without-accounts.json b/test/import/ok-without-accounts.json
new file mode 100644
index 000000000..63961be74
--- /dev/null
+++ b/test/import/ok-without-accounts.json
@@ -0,0 +1,48 @@
+{
+ "meta": {
+ "date": "2022-04-01T00:00:00.000Z",
+ "version": "dev"
+ },
+ "activities": [
+ {
+ "fee": 0,
+ "quantity": 0,
+ "type": "BUY",
+ "unitPrice": 0,
+ "currency": "USD",
+ "dataSource": "YAHOO",
+ "date": "2050-06-05T22:00:00.000Z",
+ "symbol": "MSFT"
+ },
+ {
+ "fee": 0,
+ "quantity": 1,
+ "type": "ITEM",
+ "unitPrice": 500000,
+ "currency": "USD",
+ "dataSource": "MANUAL",
+ "date": "2021-12-31T22:00:00.000Z",
+ "symbol": "Penthouse Apartment"
+ },
+ {
+ "fee": 0,
+ "quantity": 5,
+ "type": "DIVIDEND",
+ "unitPrice": 0.62,
+ "currency": "USD",
+ "dataSource": "YAHOO",
+ "date": "2021-11-16T22:00:00.000Z",
+ "symbol": "MSFT"
+ },
+ {
+ "fee": 19,
+ "quantity": 5,
+ "type": "BUY",
+ "unitPrice": 298.58,
+ "currency": "USD",
+ "dataSource": "YAHOO",
+ "date": "2021-09-15T22:00:00.000Z",
+ "symbol": "MSFT"
+ }
+ ]
+}
diff --git a/test/import/ok.json b/test/import/ok.json
index 63961be74..335d2cd8a 100644
--- a/test/import/ok.json
+++ b/test/import/ok.json
@@ -1,10 +1,23 @@
{
"meta": {
- "date": "2022-04-01T00:00:00.000Z",
+ "date": "2023-02-05T00:00:00.000Z",
"version": "dev"
},
+ "accounts": [
+ {
+ "accountType": "SECURITIES",
+ "balance": 2000,
+ "currency": "USD",
+ "id": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
+ "isExcluded": false,
+ "name": "My Online Trading Account",
+ "platformId": null
+ }
+ ],
"activities": [
{
+ "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
+ "comment": null,
"fee": 0,
"quantity": 0,
"type": "BUY",
@@ -15,6 +28,8 @@
"symbol": "MSFT"
},
{
+ "accountId": null,
+ "comment": null,
"fee": 0,
"quantity": 1,
"type": "ITEM",
@@ -25,6 +40,8 @@
"symbol": "Penthouse Apartment"
},
{
+ "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
+ "comment": null,
"fee": 0,
"quantity": 5,
"type": "DIVIDEND",
@@ -35,6 +52,8 @@
"symbol": "MSFT"
},
{
+ "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0",
+ "comment": "My first order",
"fee": 19,
"quantity": 5,
"type": "BUY",
From 75d140b4363dec56e4676d0393ffaf105258c46d Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Tue, 7 Feb 2023 08:44:22 +0100
Subject: [PATCH 3/7] Harmonize file name (#1662)
---
.../src/lib/types/{color-scheme.ts => color-scheme.type.ts} | 0
libs/common/src/lib/types/index.ts | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
rename libs/common/src/lib/types/{color-scheme.ts => color-scheme.type.ts} (100%)
diff --git a/libs/common/src/lib/types/color-scheme.ts b/libs/common/src/lib/types/color-scheme.type.ts
similarity index 100%
rename from libs/common/src/lib/types/color-scheme.ts
rename to libs/common/src/lib/types/color-scheme.type.ts
diff --git a/libs/common/src/lib/types/index.ts b/libs/common/src/lib/types/index.ts
index 255a1c3fe..12bee4132 100644
--- a/libs/common/src/lib/types/index.ts
+++ b/libs/common/src/lib/types/index.ts
@@ -1,7 +1,7 @@
import type { AccessWithGranteeUser } from './access-with-grantee-user.type';
import { AccountWithPlatform } from './account-with-platform.type';
import { AccountWithValue } from './account-with-value.type';
-import type { ColorScheme } from './color-scheme';
+import type { ColorScheme } from './color-scheme.type';
import type { DateRange } from './date-range.type';
import type { Granularity } from './granularity.type';
import { GroupBy } from './group-by.type';
From 7878036bac658d304d58472bf810603bfc9cb6d5 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Wed, 8 Feb 2023 14:17:49 +0100
Subject: [PATCH 4/7] Feature/remove google play badge from landing page
(#1672)
* Remove Google Play badge
* Update changelog
---
CHANGELOG.md | 1 +
.../src/app/pages/landing/landing-page.html | 9 ---------
.../src/app/pages/landing/landing-page.scss | 6 ------
apps/client/src/assets/badge-en-google-play.png | Bin 13535 -> 0 bytes
4 files changed, 1 insertion(+), 15 deletions(-)
delete mode 100644 apps/client/src/assets/badge-en-google-play.png
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10f1db5fb..11d1b4ee7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Improved the styling in the admin control panel
+- Removed the _Google Play_ badge from the landing page
## 1.232.0 - 2023-02-05
diff --git a/apps/client/src/app/pages/landing/landing-page.html b/apps/client/src/app/pages/landing/landing-page.html
index 8dd7cf002..5f93228bb 100644
--- a/apps/client/src/app/pages/landing/landing-page.html
+++ b/apps/client/src/app/pages/landing/landing-page.html
@@ -357,15 +357,6 @@
-
-
-
-
-
-
diff --git a/apps/client/src/app/pages/landing/landing-page.scss b/apps/client/src/app/pages/landing/landing-page.scss
index 2d2692a14..90d86a162 100644
--- a/apps/client/src/app/pages/landing/landing-page.scss
+++ b/apps/client/src/app/pages/landing/landing-page.scss
@@ -13,12 +13,6 @@
aspect-ratio: 16 / 9;
}
- .downloads {
- img {
- height: 2.5rem;
- }
- }
-
.intro {
font-size: 4vw;
line-height: 1;
diff --git a/apps/client/src/assets/badge-en-google-play.png b/apps/client/src/assets/badge-en-google-play.png
deleted file mode 100644
index 82967908fa59c256290cbdfd8aeaea8616d87361..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 13535
zcmb8WRa9I}6E2(t4?bA%;1b*|xCRUE?k-^ _^==yI}>s&C%B`)=$u>^{
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
B2f6?N
From eed4f57f30e27571af91aa1edf28c4595368ced8 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Thu, 9 Feb 2023 09:59:29 +0100
Subject: [PATCH 5/7] Clean up (#1669)
---
apps/api/src/app/account/account.controller.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts
index b85c13ab5..d91e8c5c7 100644
--- a/apps/api/src/app/account/account.controller.ts
+++ b/apps/api/src/app/account/account.controller.ts
@@ -1,5 +1,4 @@
import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service';
-import { UserService } from '@ghostfolio/api/app/user/user.service';
import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response.interceptor';
import { ImpersonationService } from '@ghostfolio/api/services/impersonation.service';
import { Accounts } from '@ghostfolio/common/interfaces';
From 203909d917ef027894819b0e9a483205cc548d3b Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Thu, 9 Feb 2023 10:22:50 +0100
Subject: [PATCH 6/7] Feature/upgrade eslint dependencies (#1674)
* Upgrade eslint dependencies
* Update changelog
---
CHANGELOG.md | 1 +
package.json | 10 +-
yarn.lock | 516 ++++++++++++++++++++++++++++++++-------------------
3 files changed, 336 insertions(+), 191 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 11d1b4ee7..c13e28ee1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved the styling in the admin control panel
- Removed the _Google Play_ badge from the landing page
+- Upgraded `eslint` dependencies
## 1.232.0 - 2023-02-05
diff --git a/package.json b/package.json
index 3c2823d3e..970bc26e9 100644
--- a/package.json
+++ b/package.json
@@ -166,14 +166,14 @@
"@types/node": "18.11.18",
"@types/papaparse": "5.3.7",
"@types/passport-google-oauth20": "2.0.11",
- "@typescript-eslint/eslint-plugin": "5.4.0",
- "@typescript-eslint/parser": "5.4.0",
+ "@typescript-eslint/eslint-plugin": "5.51.0",
+ "@typescript-eslint/parser": "5.51.0",
"codelyzer": "6.0.1",
"cypress": "6.2.1",
- "eslint": "8.3.0",
- "eslint-config-prettier": "8.3.0",
+ "eslint": "8.33.0",
+ "eslint-config-prettier": "8.6.0",
"eslint-plugin-cypress": "2.12.1",
- "eslint-plugin-import": "2.25.3",
+ "eslint-plugin-import": "2.27.5",
"import-sort-cli": "6.0.0",
"import-sort-parser-typescript": "6.0.0",
"import-sort-style-module": "6.0.0",
diff --git a/yarn.lock b/yarn.lock
index bbf33be29..89ee494ca 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2897,15 +2897,15 @@
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091"
integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==
-"@eslint/eslintrc@^1.0.4":
- version "1.3.0"
- resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz"
- integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==
+"@eslint/eslintrc@^1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e"
+ integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
- espree "^9.3.2"
- globals "^13.15.0"
+ espree "^9.4.0"
+ globals "^13.19.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
js-yaml "^4.1.0"
@@ -2917,18 +2917,23 @@
resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz"
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
-"@humanwhocodes/config-array@^0.6.0":
- version "0.6.0"
- resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz"
- integrity sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==
+"@humanwhocodes/config-array@^0.11.8":
+ version "0.11.8"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
+ integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
dependencies:
- "@humanwhocodes/object-schema" "^1.2.0"
+ "@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
- minimatch "^3.0.4"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/object-schema@^1.2.0":
+"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
- resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@ioredis/commands@^1.1.1":
@@ -4423,7 +4428,7 @@
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz"
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
-"@nodelib/fs.walk@^1.2.3":
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
version "1.2.8"
resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
@@ -6401,49 +6406,31 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/eslint-plugin@5.4.0":
- version "5.4.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz"
- integrity sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==
+"@typescript-eslint/eslint-plugin@5.51.0":
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz#da3f2819633061ced84bb82c53bba45a6fe9963a"
+ integrity sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==
dependencies:
- "@typescript-eslint/experimental-utils" "5.4.0"
- "@typescript-eslint/scope-manager" "5.4.0"
- debug "^4.3.2"
- functional-red-black-tree "^1.0.1"
- ignore "^5.1.8"
+ "@typescript-eslint/scope-manager" "5.51.0"
+ "@typescript-eslint/type-utils" "5.51.0"
+ "@typescript-eslint/utils" "5.51.0"
+ debug "^4.3.4"
+ grapheme-splitter "^1.0.4"
+ ignore "^5.2.0"
+ natural-compare-lite "^1.4.0"
regexpp "^3.2.0"
- semver "^7.3.5"
+ semver "^7.3.7"
tsutils "^3.21.0"
-"@typescript-eslint/experimental-utils@5.4.0":
- version "5.4.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz"
- integrity sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==
- dependencies:
- "@types/json-schema" "^7.0.9"
- "@typescript-eslint/scope-manager" "5.4.0"
- "@typescript-eslint/types" "5.4.0"
- "@typescript-eslint/typescript-estree" "5.4.0"
- eslint-scope "^5.1.1"
- eslint-utils "^3.0.0"
-
-"@typescript-eslint/parser@5.4.0":
- version "5.4.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz"
- integrity sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==
- dependencies:
- "@typescript-eslint/scope-manager" "5.4.0"
- "@typescript-eslint/types" "5.4.0"
- "@typescript-eslint/typescript-estree" "5.4.0"
- debug "^4.3.2"
-
-"@typescript-eslint/scope-manager@5.4.0":
- version "5.4.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz"
- integrity sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==
+"@typescript-eslint/parser@5.51.0":
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.51.0.tgz#2d74626652096d966ef107f44b9479f02f51f271"
+ integrity sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==
dependencies:
- "@typescript-eslint/types" "5.4.0"
- "@typescript-eslint/visitor-keys" "5.4.0"
+ "@typescript-eslint/scope-manager" "5.51.0"
+ "@typescript-eslint/types" "5.51.0"
+ "@typescript-eslint/typescript-estree" "5.51.0"
+ debug "^4.3.4"
"@typescript-eslint/scope-manager@5.40.1":
version "5.40.1"
@@ -6461,6 +6448,14 @@
"@typescript-eslint/types" "5.48.1"
"@typescript-eslint/visitor-keys" "5.48.1"
+"@typescript-eslint/scope-manager@5.51.0":
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz#ad3e3c2ecf762d9a4196c0fbfe19b142ac498990"
+ integrity sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==
+ dependencies:
+ "@typescript-eslint/types" "5.51.0"
+ "@typescript-eslint/visitor-keys" "5.51.0"
+
"@typescript-eslint/type-utils@5.48.1":
version "5.48.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz#5d94ac0c269a81a91ad77c03407cea2caf481412"
@@ -6471,10 +6466,15 @@
debug "^4.3.4"
tsutils "^3.21.0"
-"@typescript-eslint/types@5.4.0":
- version "5.4.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz"
- integrity sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==
+"@typescript-eslint/type-utils@5.51.0":
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz#7af48005531700b62a20963501d47dfb27095988"
+ integrity sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "5.51.0"
+ "@typescript-eslint/utils" "5.51.0"
+ debug "^4.3.4"
+ tsutils "^3.21.0"
"@typescript-eslint/types@5.40.1":
version "5.40.1"
@@ -6486,18 +6486,10 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.1.tgz#efd1913a9aaf67caf8a6e6779fd53e14e8587e14"
integrity sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==
-"@typescript-eslint/typescript-estree@5.4.0":
- version "5.4.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz"
- integrity sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==
- dependencies:
- "@typescript-eslint/types" "5.4.0"
- "@typescript-eslint/visitor-keys" "5.4.0"
- debug "^4.3.2"
- globby "^11.0.4"
- is-glob "^4.0.3"
- semver "^7.3.5"
- tsutils "^3.21.0"
+"@typescript-eslint/types@5.51.0":
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.51.0.tgz#e7c1622f46c7eea7e12bbf1edfb496d4dec37c90"
+ integrity sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==
"@typescript-eslint/typescript-estree@5.40.1":
version "5.40.1"
@@ -6525,6 +6517,19 @@
semver "^7.3.7"
tsutils "^3.21.0"
+"@typescript-eslint/typescript-estree@5.51.0":
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz#0ec8170d7247a892c2b21845b06c11eb0718f8de"
+ integrity sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==
+ dependencies:
+ "@typescript-eslint/types" "5.51.0"
+ "@typescript-eslint/visitor-keys" "5.51.0"
+ debug "^4.3.4"
+ globby "^11.1.0"
+ is-glob "^4.0.3"
+ semver "^7.3.7"
+ tsutils "^3.21.0"
+
"@typescript-eslint/utils@5.48.1":
version "5.48.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.1.tgz#20f2f4e88e9e2a0961cbebcb47a1f0f7da7ba7f9"
@@ -6539,6 +6544,20 @@
eslint-utils "^3.0.0"
semver "^7.3.7"
+"@typescript-eslint/utils@5.51.0":
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.51.0.tgz#074f4fabd5b12afe9c8aa6fdee881c050f8b4d47"
+ integrity sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==
+ dependencies:
+ "@types/json-schema" "^7.0.9"
+ "@types/semver" "^7.3.12"
+ "@typescript-eslint/scope-manager" "5.51.0"
+ "@typescript-eslint/types" "5.51.0"
+ "@typescript-eslint/typescript-estree" "5.51.0"
+ eslint-scope "^5.1.1"
+ eslint-utils "^3.0.0"
+ semver "^7.3.7"
+
"@typescript-eslint/utils@^5.36.1":
version "5.40.1"
resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz"
@@ -6553,14 +6572,6 @@
eslint-utils "^3.0.0"
semver "^7.3.7"
-"@typescript-eslint/visitor-keys@5.4.0":
- version "5.4.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz"
- integrity sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==
- dependencies:
- "@typescript-eslint/types" "5.4.0"
- eslint-visitor-keys "^3.0.0"
-
"@typescript-eslint/visitor-keys@5.40.1":
version "5.40.1"
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz"
@@ -6577,6 +6588,14 @@
"@typescript-eslint/types" "5.48.1"
eslint-visitor-keys "^3.3.0"
+"@typescript-eslint/visitor-keys@5.51.0":
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz#c0147dd9a36c0de758aaebd5b48cae1ec59eba87"
+ integrity sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==
+ dependencies:
+ "@typescript-eslint/types" "5.51.0"
+ eslint-visitor-keys "^3.3.0"
+
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz"
@@ -6944,7 +6963,7 @@ acorn@^7.1.1:
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.1.0, acorn@^8.8.1:
+acorn@^8.1.0, acorn@^8.8.0, acorn@^8.8.1:
version "8.8.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
@@ -7309,7 +7328,7 @@ array-flatten@^2.1.2:
resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
-array-includes@^3.0.3, array-includes@^3.1.4:
+array-includes@^3.0.3:
version "3.1.5"
resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz"
integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==
@@ -7320,6 +7339,17 @@ array-includes@^3.0.3, array-includes@^3.1.4:
get-intrinsic "^1.1.1"
is-string "^1.0.7"
+array-includes@^3.1.6:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f"
+ integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ get-intrinsic "^1.1.3"
+ is-string "^1.0.7"
+
array-union@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz"
@@ -7347,7 +7377,7 @@ array-unique@^0.3.2:
resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz"
integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==
-array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.5:
+array.prototype.flat@^1.2.1:
version "1.3.0"
resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz"
integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==
@@ -7357,6 +7387,16 @@ array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.5:
es-abstract "^1.19.2"
es-shim-unscopables "^1.0.0"
+array.prototype.flat@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2"
+ integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ es-shim-unscopables "^1.0.0"
+
array.prototype.flatmap@^1.2.1:
version "1.3.0"
resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz"
@@ -7367,6 +7407,16 @@ array.prototype.flatmap@^1.2.1:
es-abstract "^1.19.2"
es-shim-unscopables "^1.0.0"
+array.prototype.flatmap@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183"
+ integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ es-shim-unscopables "^1.0.0"
+
array.prototype.map@^1.0.4:
version "1.0.4"
resolved "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.4.tgz"
@@ -10783,7 +10833,7 @@ enhanced-resolve@^5.10.0:
graceful-fs "^4.2.4"
tapable "^2.2.0"
-enquirer@^2.3.5, enquirer@~2.3.6:
+enquirer@~2.3.6:
version "2.3.6"
resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
@@ -10860,6 +10910,45 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19
string.prototype.trimstart "^1.0.5"
unbox-primitive "^1.0.2"
+es-abstract@^1.20.4:
+ version "1.21.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6"
+ integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ es-set-tostringtag "^2.0.1"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ function.prototype.name "^1.1.5"
+ get-intrinsic "^1.1.3"
+ get-symbol-description "^1.0.0"
+ globalthis "^1.0.3"
+ gopd "^1.0.1"
+ has "^1.0.3"
+ has-property-descriptors "^1.0.0"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ internal-slot "^1.0.4"
+ is-array-buffer "^3.0.1"
+ is-callable "^1.2.7"
+ is-negative-zero "^2.0.2"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ is-string "^1.0.7"
+ is-typed-array "^1.1.10"
+ is-weakref "^1.0.2"
+ object-inspect "^1.12.2"
+ object-keys "^1.1.1"
+ object.assign "^4.1.4"
+ regexp.prototype.flags "^1.4.3"
+ safe-regex-test "^1.0.0"
+ string.prototype.trimend "^1.0.6"
+ string.prototype.trimstart "^1.0.6"
+ typed-array-length "^1.0.4"
+ unbox-primitive "^1.0.2"
+ which-typed-array "^1.1.9"
+
es-array-method-boxes-properly@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz"
@@ -10899,6 +10988,15 @@ es-module-lexer@^0.9.0:
resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz"
integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+es-set-tostringtag@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8"
+ integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==
+ dependencies:
+ get-intrinsic "^1.1.3"
+ has "^1.0.3"
+ has-tostringtag "^1.0.0"
+
es-shim-unscopables@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz"
@@ -11127,26 +11225,26 @@ escodegen@^2.0.0:
optionalDependencies:
source-map "~0.6.1"
-eslint-config-prettier@8.3.0:
- version "8.3.0"
- resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz"
- integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==
+eslint-config-prettier@8.6.0:
+ version "8.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz#dec1d29ab728f4fa63061774e1672ac4e363d207"
+ integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==
-eslint-import-resolver-node@^0.3.6:
- version "0.3.6"
- resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz"
- integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==
+eslint-import-resolver-node@^0.3.7:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7"
+ integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==
dependencies:
debug "^3.2.7"
- resolve "^1.20.0"
+ is-core-module "^2.11.0"
+ resolve "^1.22.1"
-eslint-module-utils@^2.7.1:
- version "2.7.3"
- resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz"
- integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==
+eslint-module-utils@^2.7.4:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974"
+ integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==
dependencies:
debug "^3.2.7"
- find-up "^2.1.0"
eslint-plugin-cypress@2.12.1:
version "2.12.1"
@@ -11155,24 +11253,26 @@ eslint-plugin-cypress@2.12.1:
dependencies:
globals "^11.12.0"
-eslint-plugin-import@2.25.3:
- version "2.25.3"
- resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz"
- integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==
+eslint-plugin-import@2.27.5:
+ version "2.27.5"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65"
+ integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==
dependencies:
- array-includes "^3.1.4"
- array.prototype.flat "^1.2.5"
- debug "^2.6.9"
+ array-includes "^3.1.6"
+ array.prototype.flat "^1.3.1"
+ array.prototype.flatmap "^1.3.1"
+ debug "^3.2.7"
doctrine "^2.1.0"
- eslint-import-resolver-node "^0.3.6"
- eslint-module-utils "^2.7.1"
+ eslint-import-resolver-node "^0.3.7"
+ eslint-module-utils "^2.7.4"
has "^1.0.3"
- is-core-module "^2.8.0"
+ is-core-module "^2.11.0"
is-glob "^4.0.3"
- minimatch "^3.0.4"
- object.values "^1.1.5"
- resolve "^1.20.0"
- tsconfig-paths "^3.11.0"
+ minimatch "^3.1.2"
+ object.values "^1.1.6"
+ resolve "^1.22.1"
+ semver "^6.3.0"
+ tsconfig-paths "^3.14.1"
eslint-scope@5.1.1, eslint-scope@^5.1.1:
version "5.1.1"
@@ -11190,7 +11290,7 @@ eslint-scope@^4.0.3:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-scope@^7.0.0, eslint-scope@^7.1.0:
+eslint-scope@^7.0.0, eslint-scope@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
@@ -11222,54 +11322,55 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
-eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0:
+eslint-visitor-keys@^3.3.0:
version "3.3.0"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz"
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
-eslint@8.3.0:
- version "8.3.0"
- resolved "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz"
- integrity sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==
+eslint@8.33.0:
+ version "8.33.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.33.0.tgz#02f110f32998cb598c6461f24f4d306e41ca33d7"
+ integrity sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==
dependencies:
- "@eslint/eslintrc" "^1.0.4"
- "@humanwhocodes/config-array" "^0.6.0"
+ "@eslint/eslintrc" "^1.4.1"
+ "@humanwhocodes/config-array" "^0.11.8"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.3.2"
doctrine "^3.0.0"
- enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
- eslint-scope "^7.1.0"
+ eslint-scope "^7.1.1"
eslint-utils "^3.0.0"
- eslint-visitor-keys "^3.1.0"
- espree "^9.1.0"
+ eslint-visitor-keys "^3.3.0"
+ espree "^9.4.0"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
- functional-red-black-tree "^1.0.1"
- glob-parent "^6.0.1"
- globals "^13.6.0"
- ignore "^4.0.6"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ grapheme-splitter "^1.0.4"
+ ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
+ is-path-inside "^3.0.3"
+ js-sdsl "^4.1.4"
js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
- minimatch "^3.0.4"
+ minimatch "^3.1.2"
natural-compare "^1.4.0"
optionator "^0.9.1"
- progress "^2.0.0"
regexpp "^3.2.0"
- semver "^7.2.1"
strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
text-table "^0.2.0"
- v8-compile-cache "^2.0.3"
eslint@^5.0.0:
version "5.16.0"
@@ -11322,12 +11423,12 @@ espree@^5.0.1:
acorn-jsx "^5.0.0"
eslint-visitor-keys "^1.0.0"
-espree@^9.1.0, espree@^9.3.2:
- version "9.3.2"
- resolved "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz"
- integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==
+espree@^9.4.0:
+ version "9.4.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd"
+ integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==
dependencies:
- acorn "^8.7.1"
+ acorn "^8.8.0"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.3.0"
@@ -11851,13 +11952,6 @@ find-up@^1.0.0:
path-exists "^2.0.0"
pinkie-promise "^2.0.0"
-find-up@^2.1.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz"
- integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==
- dependencies:
- locate-path "^2.0.0"
-
find-up@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz"
@@ -12322,7 +12416,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
-glob-parent@^6.0.1:
+glob-parent@^6.0.1, glob-parent@^6.0.2:
version "6.0.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
@@ -12412,21 +12506,21 @@ globals@^11.1.0, globals@^11.12.0, globals@^11.7.0:
resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^13.15.0, globals@^13.6.0:
- version "13.15.0"
- resolved "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz"
- integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==
+globals@^13.19.0:
+ version "13.20.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
+ integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
dependencies:
type-fest "^0.20.2"
-globalthis@^1.0.0:
+globalthis@^1.0.0, globalthis@^1.0.3:
version "1.0.3"
resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz"
integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
dependencies:
define-properties "^1.1.3"
-globby@^11.0.2, globby@^11.0.4, globby@^11.1.0:
+globby@^11.0.2, globby@^11.1.0:
version "11.1.0"
resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@@ -12525,6 +12619,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+grapheme-splitter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+ integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
graphlib@^2.1.8:
version "2.1.8"
resolved "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz"
@@ -12599,6 +12698,11 @@ has-property-descriptors@^1.0.0:
dependencies:
get-intrinsic "^1.1.1"
+has-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
+ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3:
version "1.0.3"
resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
@@ -13071,7 +13175,7 @@ ignore@^4.0.3, ignore@^4.0.6:
resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-ignore@^5.0.4, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0:
+ignore@^5.0.4, ignore@^5.1.9, ignore@^5.2.0:
version "5.2.0"
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
@@ -13474,7 +13578,7 @@ is-builtin-module@^3.0.0:
dependencies:
builtin-modules "^3.0.0"
-is-callable@^1.1.3:
+is-callable@^1.1.3, is-callable@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
@@ -13491,7 +13595,14 @@ is-ci@^2.0.0:
dependencies:
ci-info "^2.0.0"
-is-core-module@^2.8.0, is-core-module@^2.8.1, is-core-module@^2.9.0:
+is-core-module@^2.11.0:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
+ integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+ dependencies:
+ has "^1.0.3"
+
+is-core-module@^2.8.1, is-core-module@^2.9.0:
version "2.9.0"
resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz"
integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==
@@ -13687,7 +13798,7 @@ is-observable@^1.1.0:
dependencies:
symbol-observable "^1.1.0"
-is-path-inside@^3.0.1:
+is-path-inside@^3.0.1, is-path-inside@^3.0.3:
version "3.0.3"
resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
@@ -13763,7 +13874,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies:
has-symbols "^1.0.2"
-is-typed-array@^1.1.10:
+is-typed-array@^1.1.10, is-typed-array@^1.1.9:
version "1.1.10"
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f"
integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==
@@ -14846,6 +14957,11 @@ js-levenshtein@~1.1.6:
resolved "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz"
integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
+js-sdsl@^4.1.4:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711"
+ integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==
+
js-sha256@0.9.0, js-sha256@^0.9.0:
version "0.9.0"
resolved "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz"
@@ -15395,14 +15511,6 @@ loader-utils@^2.0.3, loader-utils@^2.0.4:
emojis-list "^3.0.0"
json5 "^2.1.2"
-locate-path@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz"
- integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==
- dependencies:
- p-locate "^2.0.0"
- path-exists "^3.0.0"
-
locate-path@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz"
@@ -15980,7 +16088,7 @@ minimatch@3.0.5:
dependencies:
brace-expansion "^1.1.7"
-minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
+minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -16244,6 +16352,11 @@ native-request@^1.0.5:
resolved "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz"
integrity sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==
+natural-compare-lite@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
+ integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
@@ -16690,6 +16803,11 @@ object-inspect@^1.12.0, object-inspect@^1.9.0:
resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz"
integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
+object-inspect@^1.12.2:
+ version "1.12.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
+ integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
+
object-is@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
@@ -16765,7 +16883,7 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
-object.values@^1.1.0, object.values@^1.1.5:
+object.values@^1.1.0:
version "1.1.5"
resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz"
integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==
@@ -16774,6 +16892,15 @@ object.values@^1.1.0, object.values@^1.1.5:
define-properties "^1.1.3"
es-abstract "^1.19.1"
+object.values@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
+ integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz"
@@ -16943,13 +17070,6 @@ p-is-promise@^2.0.0:
resolved "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz"
integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
-p-limit@^1.1.0:
- version "1.3.0"
- resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz"
- integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
- dependencies:
- p-try "^1.0.0"
-
p-limit@^2.0.0, p-limit@^2.2.0:
version "2.3.0"
resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
@@ -16964,13 +17084,6 @@ p-limit@^3.0.2, p-limit@^3.1.0:
dependencies:
yocto-queue "^0.1.0"
-p-locate@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz"
- integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==
- dependencies:
- p-limit "^1.1.0"
-
p-locate@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz"
@@ -17026,11 +17139,6 @@ p-timeout@^3.1.0, p-timeout@^3.2.0:
dependencies:
p-finally "^1.0.0"
-p-try@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz"
- integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==
-
p-try@^2.0.0:
version "2.2.0"
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
@@ -18676,7 +18784,7 @@ resolve.exports@^2.0.0:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e"
integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==
-resolve@1.22.1, resolve@^1.12.0:
+resolve@1.22.1, resolve@^1.12.0, resolve@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
@@ -18823,6 +18931,15 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0,
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+safe-regex-test@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
+ integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.3"
+ is-regex "^1.1.4"
+
safe-regex@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz"
@@ -19033,7 +19150,7 @@ semver@7.3.8, semver@^7.3.8:
dependencies:
lru-cache "^6.0.0"
-semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
+semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
version "7.3.7"
resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz"
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
@@ -19704,6 +19821,15 @@ string.prototype.trimend@^1.0.5:
define-properties "^1.1.4"
es-abstract "^1.19.5"
+string.prototype.trimend@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
+ integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
string.prototype.trimstart@^1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz"
@@ -19713,6 +19839,15 @@ string.prototype.trimstart@^1.0.5:
define-properties "^1.1.4"
es-abstract "^1.19.5"
+string.prototype.trimstart@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4"
+ integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
@@ -20384,7 +20519,7 @@ tsconfig-paths-webpack-plugin@^3.3.0:
enhanced-resolve "^5.7.0"
tsconfig-paths "^3.9.0"
-tsconfig-paths@^3.11.0, tsconfig-paths@^3.9.0:
+tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0:
version "3.14.1"
resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz"
integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==
@@ -20509,6 +20644,15 @@ type-is@^1.6.4, type-is@~1.6.18:
media-typer "0.3.0"
mime-types "~2.1.24"
+typed-array-length@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb"
+ integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
+ dependencies:
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ is-typed-array "^1.1.9"
+
typed-assert@^1.0.8:
version "1.0.9"
resolved "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz"
@@ -20882,7 +21026,7 @@ v8-compile-cache-lib@^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==
-v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3:
+v8-compile-cache@2.3.0:
version "2.3.0"
resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
From e935a57dec3d4a8fdacc0321d088b6abf1db5f01 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Thu, 9 Feb 2023 20:30:53 +0100
Subject: [PATCH 7/7] Release 1.233.0 (#1678)
---
CHANGELOG.md | 2 +-
package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c13e28ee1..d3097955c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## Unreleased
+## 1.233.0 - 2023-02-09
### Added
diff --git a/package.json b/package.json
index 970bc26e9..005ccfd4c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ghostfolio",
- "version": "1.232.0",
+ "version": "1.233.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"scripts": {
|