change validation

This commit is contained in:
rubikscraft
2022-03-23 11:17:41 +01:00
parent 0b65d496c3
commit 036f4d4e4d
17 changed files with 178 additions and 119 deletions

View File

@@ -5,7 +5,6 @@ import { EUserBackend } from '../../models/entities/user.entity';
export class GuestService {
public createGuest(): EUserBackend {
const guest = new EUserBackend();
guest.id = -1;
guest.roles = ['guest'];
guest.username = 'guest';

View File

@@ -13,16 +13,16 @@
"watch": "ng build --watch --configuration development"
},
"dependencies": {
"@angular/animations": "^14.0.0-next.5",
"@angular/cdk": "^14.0.0-next.5",
"@angular/common": "^14.0.0-next.5",
"@angular/compiler": "^14.0.0-next.5",
"@angular/core": "^14.0.0-next.5",
"@angular/forms": "^14.0.0-next.5",
"@angular/material": "^14.0.0-next.5",
"@angular/platform-browser": "^14.0.0-next.5",
"@angular/platform-browser-dynamic": "^14.0.0-next.5",
"@angular/router": "^14.0.0-next.5",
"@angular/animations": "^14.0.0-next.7",
"@angular/cdk": "^14.0.0-next.7",
"@angular/common": "^14.0.0-next.7",
"@angular/compiler": "^14.0.0-next.7",
"@angular/core": "^14.0.0-next.7",
"@angular/forms": "^14.0.0-next.7",
"@angular/material": "^14.0.0-next.7",
"@angular/platform-browser": "^14.0.0-next.7",
"@angular/platform-browser-dynamic": "^14.0.0-next.7",
"@angular/router": "^14.0.0-next.7",
"bootstrap": "^5.1.3",
"class-transformer": "^0.5.1",
"class-validator": "^0.13.2",
@@ -37,10 +37,10 @@
},
"devDependencies": {
"@angular-devkit/build-angular": "14.0.0-next.4",
"@angular/cli": "^14.0.0-next.4",
"@angular/compiler-cli": "^14.0.0-next.5",
"@angular/cli": "^14.0.0-next.6",
"@angular/compiler-cli": "^14.0.0-next.7",
"@types/jasmine": "~4.0.0",
"@types/node": "^17.0.21",
"@types/node": "^17.0.22",
"@types/validator": "^13.7.1",
"jasmine-core": "~4.0.1",
"karma": "~6.3.17",

View File

@@ -26,11 +26,11 @@ export class KeyService {
public set(key: string) {
this.key = key;
setTimeout(this.store.bind(this), 0);
this.store();
}
public clear() {
this.key = null;
setTimeout(this.store.bind(this), 0);
this.store();
}
}

View File

@@ -83,6 +83,7 @@ export class UserService {
}
public async logout(): AsyncFailable<EUser> {
console.log('logging out');
const value = this.userSubject.getValue();
this.key.clear();
this.userSubject.next(null);

View File

@@ -14,5 +14,8 @@
},
"resolutions": {
"minimist": "npm:minimist-lite"
},
"dependencies": {
"minimist": "npm:minimist-lite"
}
}

View File

@@ -4,13 +4,13 @@ import {
IsEnum, IsString,
ValidateNested
} from 'class-validator';
import { EUser, SimpleUser } from '../../entities/user.entity';
import { EUser, NamePassUser } from '../../entities/user.entity';
import { Permissions, PermissionsList } from '../permissions';
// Api
// UserLogin
export class UserLoginRequest extends SimpleUser {}
export class UserLoginRequest extends NamePassUser {}
export class UserLoginResponse {
@IsString()
@@ -19,7 +19,7 @@ export class UserLoginResponse {
}
// UserRegister
export class UserRegisterRequest extends SimpleUser {}
export class UserRegisterRequest extends NamePassUser {}
export class UserRegisterResponse extends EUser {}

View File

@@ -2,11 +2,12 @@ import { Type } from 'class-transformer';
import {
IsArray,
IsDefined,
IsInt, IsString,
IsInt,
IsString,
Min,
ValidateNested
} from 'class-validator';
import { EUser, SimpleUser, SimpleUsername } from '../../entities/user.entity';
import { EUser, NamePassUser, UsernameUser } from '../../entities/user.entity';
import { Roles } from '../roles.dto';
// UserList
@@ -41,19 +42,19 @@ export class UserListResponse {
}
// UserCreate
export class UserCreateRequest extends SimpleUser {}
export class UserCreateRequest extends NamePassUser {}
export class UserCreateResponse extends EUser {}
// UserDelete
export class UserDeleteRequest extends SimpleUsername {}
export class UserDeleteRequest extends UsernameUser {}
export class UserDeleteResponse extends EUser {}
// UserInfo
export class UserInfoRequest extends SimpleUsername {}
export class UserInfoRequest extends UsernameUser {}
export class UserInfoResponse extends EUser {}
// UserUpdateRoles
export class UserUpdateRolesRequest extends SimpleUsername {
export class UserUpdateRolesRequest extends UsernameUser {
@IsArray()
@IsDefined()
@IsString({ each: true })

View File

@@ -0,0 +1,6 @@
import { EntityID } from '../validators/entity-id.validator';
export class EntityIDObject {
@EntityID()
id: number;
}

View File

@@ -1,12 +1,12 @@
import { Type } from 'class-transformer';
import { IsDefined, IsInt, IsOptional, ValidateNested } from 'class-validator';
import { RoledUser } from '../entities/user.entity';
import { NameRolesUser } from '../entities/user.entity';
export class JwtDataDto {
@IsDefined()
@ValidateNested()
@Type(() => RoledUser)
user: RoledUser;
@Type(() => NameRolesUser)
user: NameRolesUser;
@IsOptional()
@IsInt()

View File

@@ -1,10 +1,10 @@
import { Exclude } from 'class-transformer';
import { IsDefined, IsEnum, IsHash, IsInt, IsOptional } from 'class-validator';
import { IsDefined, IsEnum, IsHash, IsOptional } from 'class-validator';
import { SupportedMime, SupportedMimes } from '../dto/mimes.dto';
import { EntityID } from '../validators/entity-id.validator';
export class EImage {
@IsOptional()
@IsInt()
@EntityID()
id?: number;
@IsHash('sha256')

View File

@@ -1,9 +1,9 @@
import { IsArray, IsEnum, IsInt, IsNotEmpty, IsOptional, IsString } from 'class-validator';
import { IsArray, IsEnum, IsNotEmpty, IsString } from 'class-validator';
import { Permissions, PermissionsList } from '../dto/permissions';
import { EntityID } from '../validators/entity-id.validator';
export class ERole {
@IsOptional()
@IsInt()
@EntityID()
id?: number;
@IsNotEmpty()

View File

@@ -1,9 +1,9 @@
import { IsEnum, IsInt, IsNotEmpty, IsOptional, IsString } from 'class-validator';
import { IsEnum, IsNotEmpty, IsString } from 'class-validator';
import { SysPreferences } from '../dto/syspreferences.dto';
import { EntityID } from '../validators/entity-id.validator';
export class ESysPreference {
@IsOptional()
@IsInt()
@EntityID()
id?: number;
@IsNotEmpty()

View File

@@ -1,45 +1,33 @@
import { Exclude } from 'class-transformer';
import {
IsAlphanumeric,
IsArray,
IsInt,
IsNotEmpty,
IsOptional,
IsString,
Length
IsArray, IsOptional,
IsString
} from 'class-validator';
import { Roles } from '../dto/roles.dto';
import { EntityID } from '../validators/entity-id.validator';
import { IsPlainTextPwd, IsUsername } from '../validators/user.validators';
// Match this with user validators in frontend
// (Not security focused, but it tells the user what is wrong)
export class SimpleUsername {
@IsNotEmpty()
@IsString()
@Length(4, 32)
@IsAlphanumeric()
export class UsernameUser {
@IsUsername()
username: string;
}
// This is a simple user object with just the username and unhashed password
export class SimpleUser extends SimpleUsername {
@IsNotEmpty()
@IsString()
@Length(4, 1024)
export class NamePassUser extends UsernameUser {
@IsPlainTextPwd()
password: string;
}
// Add a user object with just the username and roles for jwt
export class RoledUser extends SimpleUsername {
export class NameRolesUser extends UsernameUser {
@IsArray()
@IsString({ each: true })
roles: Roles;
}
// Actual entity that goes in the db
export class EUser extends RoledUser {
@IsOptional()
@IsInt()
export class EUser extends NameRolesUser {
@EntityID()
id?: number;
@IsOptional()

View File

@@ -0,0 +1,10 @@
export const ComposeValidators = (...validators: PropertyDecorator[]): () => PropertyDecorator => {
return () => {
const decorators = [...validators];
return (target: Object, propertyKey: string | symbol): void => {
decorators.forEach((decorator) => decorator(target, propertyKey));
};
}
};

View File

@@ -0,0 +1,5 @@
import { IsInt, IsNotEmpty, IsOptional, Min } from 'class-validator';
import { ComposeValidators } from './compose.validator';
export const EntityID = ComposeValidators(IsOptional(), IsInt(), Min(0));
export const EntityIDRequired = ComposeValidators(IsNotEmpty(), IsInt(), Min(0));

View File

@@ -0,0 +1,18 @@
import { IsAlphanumeric, IsNotEmpty, IsString, Length } from 'class-validator';
import { ComposeValidators } from './compose.validator';
// Match this with user validators in frontend
// (Frontend is not security focused, but it tells the user what is wrong)
export const IsUsername = ComposeValidators(
IsNotEmpty(),
IsString(),
Length(4, 32),
IsAlphanumeric(),
);
export const IsPlainTextPwd = ComposeValidators(
IsNotEmpty(),
IsString(),
Length(4, 1024),
);

146
yarn.lock
View File

@@ -197,14 +197,14 @@
ora "5.4.1"
rxjs "6.6.7"
"@angular/animations@^14.0.0-next.5":
"@angular/animations@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-14.0.0-next.7.tgz#5936364100a84893bd53643ed65746326c9e5aaa"
integrity sha512-aewapXQ8m8RusSNJHZHSSfE16EZcmETMhZL3L7JHRjb6vWkd83uhNa9D8WzZv34Ad2BVvk7M/u7bFXBYIj+3Fg==
dependencies:
tslib "^2.3.0"
"@angular/cdk@^14.0.0-next.5":
"@angular/cdk@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-14.0.0-next.7.tgz#66bd6e40ff80674d6c8bd75267468c3583d04278"
integrity sha512-7Nk6+6GIT2dHZ00yDZwbdUBGjzvPg+X/4yonqlc4cPgGkae8a/AsWlHt14SAFGLoIBUAhu8OAOdqpl6rNjk3bA==
@@ -213,7 +213,7 @@
optionalDependencies:
parse5 "^5.0.0"
"@angular/cli@^14.0.0-next.4":
"@angular/cli@^14.0.0-next.6":
version "14.0.0-next.6"
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-14.0.0-next.6.tgz#e57f4164a0ff810fe7fbfdcb7151b8f4b34c0921"
integrity sha512-g+w5PwilyErPTEzg+P9HtPmWSYZl4glduz7ZI6VmOyNfwJ/pJHUwqvPOakJRwpfy99AHX9JjuS+i5L6KtttGyg==
@@ -239,14 +239,14 @@
uuid "8.3.2"
yargs "17.3.1"
"@angular/common@^14.0.0-next.5":
"@angular/common@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/common/-/common-14.0.0-next.7.tgz#36092b2163277c63ab414efb42db1798d2e4457c"
integrity sha512-v7uivPO1Ngui7mjMs/sZ/iVb0X+24t7eN6Gkww3btfP5oK2VQ0hZwMx2oUAqhY6Ijv8mD3cDnopl38bKBSw46w==
dependencies:
tslib "^2.3.0"
"@angular/compiler-cli@^14.0.0-next.5":
"@angular/compiler-cli@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-14.0.0-next.7.tgz#ac993806ce4af49716322b00c096451df4df445c"
integrity sha512-5JW+/nlNDKFuN8tSxVXzQMbkXhzr5YxCuC3qR0vdPzFG8cBlBAwyrt6Er0Z5fIWxmxngnmPvPDUpbpO1FHZnpA==
@@ -262,49 +262,49 @@
tslib "^2.3.0"
yargs "^17.2.1"
"@angular/compiler@^14.0.0-next.5":
"@angular/compiler@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-14.0.0-next.7.tgz#21cab07cf8ca1445dbf39b93f7fa43ee965003dc"
integrity sha512-9r27doQ3Yl8z6/cf5BWgoPNk3bVOL82BB4X/utyyJhozFQgU0lUlUGdPksc+wFereSblEN7wx1LXYuSID17DJA==
dependencies:
tslib "^2.3.0"
"@angular/core@^14.0.0-next.5":
"@angular/core@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/core/-/core-14.0.0-next.7.tgz#b65d45987fd70c2fdb70060b87b3a6f032f08bd4"
integrity sha512-yoSTPTYTnu+a89ZiA+WdneBJO+E+oNnyC/3o4R51V/GugE+BwzKBOm51zAh1Ypg7MJDcO9Ft+ESsLtquxmuOiw==
dependencies:
tslib "^2.3.0"
"@angular/forms@^14.0.0-next.5":
"@angular/forms@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-14.0.0-next.7.tgz#9312bb6a4dda4c732f2cc1e2c35fce521de6be6a"
integrity sha512-ygZNM9nuGHdtcJA9eHQxqgoJWNOVpEHaBgVgspvC9uKufkPVRWFifxaO0hus9aHrBhR1zHLjPod/iNkIBhT7aQ==
dependencies:
tslib "^2.3.0"
"@angular/material@^14.0.0-next.5":
"@angular/material@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/material/-/material-14.0.0-next.7.tgz#3475e78159195cf775d4f576878089f6dd4b1a0d"
integrity sha512-cD9k/mwNFxbb6ryNcDQjrcsgydzPXzt5gzun7/zDsnArsbmRtqoRssZVdNwgkuZNpUDTQF4QLeZDBlsMtWoYIw==
dependencies:
tslib "^2.3.0"
"@angular/platform-browser-dynamic@^14.0.0-next.5":
"@angular/platform-browser-dynamic@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.0-next.7.tgz#9653b2ca6b263cf31f9b6e66d26ef851c49eb55d"
integrity sha512-gm8QqUgDytWvg9xn0H23t2KVAIHZnuCq2EavTWvJHuJAsL7b0KBF3FL8IBJyEgJY0AzQtAs1JTEfC6PG8sLleg==
dependencies:
tslib "^2.3.0"
"@angular/platform-browser@^14.0.0-next.5":
"@angular/platform-browser@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-14.0.0-next.7.tgz#06f73ad008fa460cd230bac3888e4a420dc36156"
integrity sha512-wNiKdd67CLJiNh8g5vfuIy9XvC6I5oyslui8/kRKnj627nVby0JQ/kVYtb9+W+yWhYcdEH4QTvmznXjM3U5tgA==
dependencies:
tslib "^2.3.0"
"@angular/router@^14.0.0-next.5":
"@angular/router@^14.0.0-next.7":
version "14.0.0-next.7"
resolved "https://registry.yarnpkg.com/@angular/router/-/router-14.0.0-next.7.tgz#9c515958c91134d1e33c699b5f21e37bfd0d0ec8"
integrity sha512-HNeAWU6BCbG4XqLXHCDeRZce4DcvtjiGhnBcaOg5OVUadPITaWP/57G4nWvszLqROhdoXMDkmEBy1buc7vy4JA==
@@ -1361,7 +1361,7 @@
dependencies:
text-decoding "^1.0.0"
"@gar/promisify@^1.0.1":
"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
@@ -1583,6 +1583,14 @@
"@gar/promisify" "^1.0.1"
semver "^7.3.5"
"@npmcli/fs@^2.1.0":
version "2.1.0"
resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.0.tgz#f2a21c28386e299d1a9fae8051d35ad180e33109"
integrity sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==
dependencies:
"@gar/promisify" "^1.1.3"
semver "^7.3.5"
"@npmcli/git@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.0.tgz#466a18980da6b646a8112a7676688ae5347deba3"
@@ -1839,7 +1847,7 @@
dependencies:
"@types/express" "*"
"@types/node@*", "@types/node@>=10.0.0", "@types/node@^17.0.21":
"@types/node@*", "@types/node@>=10.0.0", "@types/node@^17.0.21", "@types/node@^17.0.22":
version "17.0.22"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.22.tgz#38b6c4b9b2f3ed9f2e376cce42a298fb2375251e"
integrity sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==
@@ -2261,7 +2269,7 @@ ajv-keywords@^5.0.0:
dependencies:
fast-deep-equal "^3.1.3"
ajv@8.10.0, ajv@^8.0.0, ajv@^8.1.0, ajv@^8.8.0:
ajv@8.10.0:
version "8.10.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d"
integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==
@@ -2291,6 +2299,16 @@ ajv@^6.10.0, ajv@^6.11.0, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.1.0, ajv@^8.8.0:
version "8.11.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"
ansi-colors@4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
@@ -2705,17 +2723,17 @@ cacache@15.3.0:
unique-filename "^1.1.1"
cacache@^16.0.0:
version "16.0.2"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.0.2.tgz#b18d630b707554d7d5ce96f53bfe845233c84933"
integrity sha512-Q17j7s8X81i/QYVrKVQ/qwWGT+pYLfpTcZ+X+p/Qw9FULy9JEfb2FECYTTt6mPV6A/vk92nRZ80ncpKxiGTrIA==
version "16.0.3"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.0.3.tgz#0b6314bde969bd4098b03a5f90a351e8a1483f48"
integrity sha512-eC7wYodNCVb97kuHGk5P+xZsvUJHkhSEOyNwkenqQPAsOtrTjvWOE5vSPNBpz9d8X3acIf6w2Ub5s4rvOCTs4g==
dependencies:
"@npmcli/fs" "^1.0.0"
"@npmcli/fs" "^2.1.0"
"@npmcli/move-file" "^1.1.2"
chownr "^2.0.0"
fs-minipass "^2.1.0"
glob "^7.2.0"
infer-owner "^1.0.4"
lru-cache "^7.5.1"
lru-cache "^7.7.1"
minipass "^3.1.6"
minipass-collect "^1.0.2"
minipass-flush "^1.0.5"
@@ -3178,10 +3196,10 @@ custom-event@~1.0.0:
resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=
date-format@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.5.tgz#ba385f89782c6cb114cf45dfa4704c6bb29fca51"
integrity sha512-zBhRiN/M0gDxUoM2xRtzTjJzSg0XEi1ofYpF84PfXeS3hN2PsGxmc7jw3DNQtFlimRbMmob5FC3G0cJq6jQQpw==
date-format@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.6.tgz#f6138b8f17968df9815b3d101fc06b0523f066c5"
integrity sha512-B9vvg5rHuQ8cbUXE/RMWMyX2YA5TecT3jKF5fLtGNlzPlU7zblSPmAm2OImDbWL+LDOQ6pUm+4LOFz+ywS41Zw==
debug@2.6.9:
version "2.6.9"
@@ -3190,7 +3208,7 @@ debug@2.6.9:
dependencies:
ms "2.0.0"
debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@~4.3.1, debug@~4.3.2:
debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -3425,9 +3443,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.4.84:
version "1.4.88"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.88.tgz#ebe6a2573b563680c7a7bf3a51b9e465c9c501db"
integrity sha512-oA7mzccefkvTNi9u7DXmT0LqvhnOiN2BhSrKerta7HeUC1cLoIwtbf2wL+Ah2ozh5KQd3/1njrGrwDBXx6d14Q==
version "1.4.90"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.90.tgz#4a518590f118828d54fff045728f547fef08143f"
integrity sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -5286,15 +5304,15 @@ log-symbols@^4.1.0:
is-unicode-supported "^0.1.0"
log4js@^6.4.1:
version "6.4.3"
resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.4.3.tgz#8bddd981846873895bcc55c0961560c7214a8ad7"
integrity sha512-H/oQKcCVIhQ8zCtUh5aftdp9eRpGyVB1M5sKzAJ0i10q5jS+YXk133vtLgzT1RIoWMbIn7QD1LUto8a1hqh6gA==
version "6.4.4"
resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.4.4.tgz#c9bc75569f3f40bba22fe1bd0677afa7a6a13bac"
integrity sha512-ncaWPsuw9Vl1CKA406hVnJLGQKy1OHx6buk8J4rE2lVW+NW5Y82G5/DIloO7NkqLOUtNPEANaWC1kZYVjXssPw==
dependencies:
date-format "^4.0.5"
debug "^4.3.3"
date-format "^4.0.6"
debug "^4.3.4"
flatted "^3.2.5"
rfdc "^1.3.0"
streamroller "^3.0.5"
streamroller "^3.0.6"
lru-cache@^6.0.0:
version "6.0.0"
@@ -5303,7 +5321,7 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
lru-cache@^7.3.1, lru-cache@^7.5.1:
lru-cache@^7.3.1, lru-cache@^7.5.1, lru-cache@^7.7.1:
version "7.7.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.7.1.tgz#03d2846b1ad2dcc7931a9340b8711d9798fcb0c6"
integrity sha512-cRffBiTW8s73eH4aTXqBcTLU0xQnwGV3/imttRHGWCrbergmnK4D6JXQd8qin5z43HnDwRI+o7mVW0LEB+tpAw==
@@ -5347,7 +5365,7 @@ make-error@^1.1.1:
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
make-fetch-happen@^10.0.3:
make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6:
version "10.0.6"
resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.0.6.tgz#671269de09cc51208413460898efb7b36adf5534"
integrity sha512-4Gfh6lV3TLXmj7qz79hBFuvVqjYSMW6v2+sxtdX4LFQU0rK3V/txRjE0DoZb7X0IF3t9f8NO3CxPSWlvdckhVA==
@@ -5476,10 +5494,10 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
minimist@1.2.5, minimist@^1.2.0, minimist@^1.2.5, "minimist@npm:minimist-lite":
version "2.2.0"
resolved "https://registry.yarnpkg.com/minimist-lite/-/minimist-lite-2.2.0.tgz#43992acac6bb17e78acb6eee784d1da2f7cc3216"
integrity sha512-o9M0Iz5ELqCT4NzeaZHBBlV4+ruOGGWV6lVxFoghC6Wvp4W6ECbBBpmDRHdk72O/sMh3QT0c/0XDKhtGlztRZw==
minimist@1.2.5, minimist@^1.2.0, minimist@^1.2.6, "minimist@npm:minimist-lite":
version "2.2.1"
resolved "https://registry.yarnpkg.com/minimist-lite/-/minimist-lite-2.2.1.tgz#abb71db2c9b454d7cf4496868c03e9802de9934d"
integrity sha512-RSrWIRWGYoM2TDe102s7aIyeSipXMIXKb1fSHYx1tAbxAV0z4g2xR6ra3oPzkTqFb0EIUz1H3A/qvYYeDd+/qQ==
minipass-collect@^1.0.2:
version "1.0.2"
@@ -5488,7 +5506,7 @@ minipass-collect@^1.0.2:
dependencies:
minipass "^3.0.0"
minipass-fetch@^2.0.1, minipass-fetch@^2.0.3:
minipass-fetch@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.0.3.tgz#688bbd0c2b019642778dc808b6950dd908d192b3"
integrity sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==
@@ -5544,11 +5562,11 @@ minizlib@^2.1.1, minizlib@^2.1.2:
yallist "^4.0.0"
mkdirp@^0.5.5:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.5"
minimist "^1.2.6"
mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4"
@@ -5749,7 +5767,7 @@ npm-normalize-package-bin@^1.0.1:
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
npm-package-arg@9.0.1, npm-package-arg@^9.0.0:
npm-package-arg@9.0.1, npm-package-arg@^9.0.0, npm-package-arg@^9.0.1:
version "9.0.1"
resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.0.1.tgz#db9c6379c45d79db88ee6dd40d3ec6a9d9a4d13a"
integrity sha512-Xs9wznfEAmZAR61qsYH3iN24V/qMYYkvAR5CRQNMvC6PjN2fHtO8y9XP/xdp5K+Icx+u1wMBMgWRPCmAEChSog==
@@ -5779,16 +5797,16 @@ npm-pick-manifest@7.0.0, npm-pick-manifest@^7.0.0:
semver "^7.3.5"
npm-registry-fetch@^13.0.1:
version "13.0.1"
resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.0.1.tgz#ceecbaab9f1d0d911e1c01a5be2be96d45e472f5"
integrity sha512-Ak+LXVtSrCLOdscFW/apUw67OPNph8waHsPKM9UOJosL7i59EF5XoSWQMEsXEOeifM9Bb4/2+WrQC4t/pd8DGg==
version "13.1.0"
resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.1.0.tgz#71bed52e30a4b27441604bbba79c7db8e0e34cb5"
integrity sha512-TIYL5X8CcwDhbFMXFDShNcpG6OMCYK6VzvSr6MUWP20tCU2DJ4ao2qQg3DT+3Pet8mO6/cgbZpon4LMh3duYLg==
dependencies:
make-fetch-happen "^10.0.3"
make-fetch-happen "^10.0.6"
minipass "^3.1.6"
minipass-fetch "^2.0.1"
minipass-fetch "^2.0.3"
minipass-json-stream "^1.0.1"
minizlib "^2.1.2"
npm-package-arg "^9.0.0"
npm-package-arg "^9.0.1"
proc-log "^2.0.0"
npm-run-path@^4.0.0, npm-run-path@^4.0.1:
@@ -7427,13 +7445,13 @@ stream-wormhole@^1.1.0:
resolved "https://registry.yarnpkg.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz#300aff46ced553cfec642a05251885417693c33d"
integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==
streamroller@^3.0.5:
version "3.0.5"
resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.0.5.tgz#17e348dc2a662f9f325373549ab91d55316051ab"
integrity sha512-5uzTEUIi4OB5zy/H30kbUN/zpDNJsFUA+Z47ZL8EfrP93lcZvRLEqdbhdunEPa7CouuAzXXsHpCJ9dg90Umw7g==
streamroller@^3.0.6:
version "3.0.6"
resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.0.6.tgz#52823415800ded79a49aa3f7712f50a422b97493"
integrity sha512-Qz32plKq/MZywYyhEatxyYc8vs994Gz0Hu2MSYXXLD233UyPeIeRBZARIIGwFer4Mdb8r3Y2UqKkgyDghM6QCg==
dependencies:
date-format "^4.0.5"
debug "^4.3.3"
date-format "^4.0.6"
debug "^4.3.4"
fs-extra "^10.0.1"
string-argv@^0.1.1:
@@ -7752,7 +7770,7 @@ tsconfig-paths-webpack-plugin@3.5.2:
enhanced-resolve "^5.7.0"
tsconfig-paths "^3.9.0"
tsconfig-paths@3.14.0, tsconfig-paths@^3.14.0, tsconfig-paths@^3.9.0:
tsconfig-paths@3.14.0:
version "3.14.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.0.tgz#4fcc48f9ccea8826c41b9ca093479de7f5018976"
integrity sha512-cg/1jAZoL57R39+wiw4u/SCC6Ic9Q5NqjBOb+9xISedOYurfog9ZNmKJSxAnb2m/5Bq4lE9lhUcau33Ml8DM0g==
@@ -7762,6 +7780,16 @@ tsconfig-paths@3.14.0, tsconfig-paths@^3.14.0, tsconfig-paths@^3.9.0:
minimist "^1.2.0"
strip-bom "^3.0.0"
tsconfig-paths@^3.14.0, tsconfig-paths@^3.9.0:
version "3.14.1"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==
dependencies:
"@types/json5" "^0.0.29"
json5 "^1.0.1"
minimist "^1.2.6"
strip-bom "^3.0.0"
tslib@2.3.1, tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"