Merge branch 'features/clean_refacto' into 'develop'

clean refacto

See merge request framasoft/framadate/funky-framadate-front!40
This commit is contained in:
seraph_ino 2020-06-12 19:21:49 +02:00
commit b6e703b6ca
35 changed files with 512 additions and 490 deletions

View File

@ -1,4 +1,5 @@
image: weboaks/node-karma-protractor-chrome # image: weboaks/node-karma-protractor-chrome
image: node:latest
stages: stages:
- pages - pages
@ -13,7 +14,7 @@ pages:
stage: pages stage: pages
script: script:
- yarn install --pure-lockfile - yarn install --pure-lockfile
- yarn build - yarn build:prod:gitlabpage
- mv dist/framadate/ public/ - mv dist/framadate/ public/
artifacts: artifacts:
paths: paths:

View File

@ -41,6 +41,7 @@ app.swagger GET ANY ANY /api/doc.json
api_clean_expired_polls GET ANY ANY /admin/clean-polls/{token} api_clean_expired_polls GET ANY ANY /admin/clean-polls/{token}
api_test-mail-polls GET ANY ANY /polls/mail/test-mail-polls/{emailChoice} api_test-mail-polls GET ANY ANY /polls/mail/test-mail-polls/{emailChoice}
api_update_vote_stack PATCH ANY ANY /votes-stack/{id}/token/{modifierToken} api_update_vote_stack PATCH ANY ANY /polls/{slug}/answers/{pseudo}/token/{modifierToken}
-------------------------- -------- -------- ------ ------------------------------------------------ -------------------------- -------- -------- ------ ------------------------------------------------
*/ */

View File

@ -9,6 +9,7 @@
"id": 1, "id": 1,
"slug": "picnic", "slug": "picnic",
"configuration": { "configuration": {
"id": 1,
"isAboutDate": true, "isAboutDate": true,
"isProtectedByPassword": false, "isProtectedByPassword": false,
"isOwnerNotifiedByEmailOnNewVote": false, "isOwnerNotifiedByEmailOnNewVote": false,
@ -20,51 +21,13 @@
}, },
"ownerId": 1, "ownerId": 1,
"question": "Quelle date pour le picnic ?", "question": "Quelle date pour le picnic ?",
"description": "Gros badass picnic en plein air ! Come on !", "description": "Gros badass picnic en plein air ! Come on !"
"answersByChoiceByParticipant": {
"TOTO": { "samedi": "YES", "dimanche": "NO" },
"TATA": { "samedi": "NO", "dimanche": null },
"TITI": { "samedi": "MAYBE", "dimanche": "NO" }
},
"answers": [
{
"pseudo": "TOTO",
"token": "TOTO-TOKEN",
"responsesByChoices": [
{ "choice": { "label": "samedi", "imagePath": null }, "responseType": "YES" },
{ "choice": { "label": "dimanche", "imagePath": null }, "responseType": "NO" }
]
},
{
"pseudo": "TATA",
"token": "TATA-TOKEN",
"responsesByChoices": [
{ "choice": { "label": "samedi", "imagePath": null }, "responseType": "NO" },
{ "choice": { "label": "dimanche", "imagePath": null }, "responseType": "NO" }
]
},
{
"pseudo": "TITI",
"token": "TITI-TOKEN",
"responsesByChoices": [
{ "choice": { "label": "samedi", "imagePath": null }, "responseType": "NO" },
{ "choice": { "label": "dimanche", "imagePath": null }, "responseType": "YES" }
]
},
{
"pseudo": "TETE",
"token": "TETE-TOKEN",
"responsesByChoices": [
{ "choice": { "label": "samedi", "imagePath": null }, "responseType": "YES" },
{ "choice": { "label": "dimanche", "imagePath": null }, "responseType": "NO" }
]
}
]
}, },
{ {
"id": 2, "id": 2,
"slug": "vacances", "slug": "vacances",
"configuration": { "configuration": {
"id": 2,
"isAboutDate": true, "isAboutDate": true,
"isProtectedByPassword": false, "isProtectedByPassword": false,
"isOwnerNotifiedByEmailOnNewVote": false, "isOwnerNotifiedByEmailOnNewVote": false,
@ -76,50 +39,7 @@
}, },
"ownerId": 2, "ownerId": 2,
"question": "On fait quoi pendant les vacances ?", "question": "On fait quoi pendant les vacances ?",
"description": "Vacances en famille", "description": "Vacances en famille"
"answersByChoiceByParticipant": {
"TOTO": { "bateau": "YES", "montagne": "NO", "quad": "MAYBE" },
"TATA": { "bateau": "NO", "montagne": null, "quad": "YES" },
"TITI": { "bateau": "MAYBE", "montagne": "NO", "quad": null }
},
"answers": [
{
"pseudo": "TOTO",
"token": "TOTO-TOKEN",
"responsesByChoices": [
{ "choice": { "label": "bateau", "imagePath": null }, "responseType": "YES" },
{ "choice": { "label": "montagne", "imagePath": null }, "responseType": "NO" },
{ "choice": { "label": "quad", "imagePath": null }, "responseType": "NO" }
]
},
{
"pseudo": "TATA",
"token": "TATA-TOKEN",
"responsesByChoices": [
{ "choice": { "label": "bateau", "imagePath": null }, "responseType": "NO" },
{ "choice": { "label": "montagne", "imagePath": null }, "responseType": "NO" },
{ "choice": { "label": "quad", "imagePath": null }, "responseType": "NO" }
]
},
{
"pseudo": "TITI",
"token": "TITI-TOKEN",
"responsesByChoices": [
{ "choice": { "label": "bateau", "imagePath": null }, "responseType": "NO" },
{ "choice": { "label": "montagne", "imagePath": null }, "responseType": "YES" },
{ "choice": { "label": "quad", "imagePath": null }, "responseType": "NO" }
]
},
{
"pseudo": "TETE",
"token": "TETE-TOKEN",
"responsesByChoices": [
{ "choice": { "label": "bateau", "imagePath": null }, "responseType": "YES" },
{ "choice": { "label": "montagne", "imagePath": null }, "responseType": "NO" },
{ "choice": { "label": "quad", "imagePath": null }, "responseType": "NO" }
]
}
]
} }
], ],
"choices": [ "choices": [
@ -129,9 +49,15 @@
"pollSlug": "picnic", "pollSlug": "picnic",
"label": "samedi", "label": "samedi",
"participants": [ "participants": [
["YES", ["TOTO", "TITI"]], [
["NO", ["TETE"]], "YES",
["MAYBE", ["TATA"]] [
{ "pseudo": "TOTO", "token": "TOTO-TOKEN" },
{ "pseudo": "TITI", "token": "TITI-TOKEN" }
]
],
["NO", []],
["MAYBE", [{ "pseudo": "TATA", "token": "TATA-TOKEN" }]]
] ]
}, },
{ {
@ -140,9 +66,15 @@
"pollSlug": "picnic", "pollSlug": "picnic",
"label": "dimanche", "label": "dimanche",
"participants": [ "participants": [
["YES", ["TOTO", "TITI"]], [
["NO", ["TETE"]], "YES",
["MAYBE", ["TATA"]] [
{ "pseudo": "TATA", "token": "TATA-TOKEN" },
{ "pseudo": "TETE", "token": "TETE-TOKEN" }
]
],
["NO", [{ "pseudo": "TOTO", "token": "TOTO-TOKEN" }]],
["MAYBE", [{ "pseudo": "TITI", "token": "TITI-TOKEN" }]]
] ]
}, },
{ {
@ -151,9 +83,15 @@
"pollSlug": "vacances", "pollSlug": "vacances",
"label": "bateau", "label": "bateau",
"participants": [ "participants": [
["YES", ["TOTO", "TITI"]], [
["NO", ["TETE"]], "YES",
["MAYBE", ["TATA"]] [
{ "pseudo": "TOTO", "token": "TOTO-TOKEN" },
{ "pseudo": "TITI", "token": "TITI-TOKEN" }
]
],
["NO", [{ "pseudo": "TETE", "token": "TETE-TOKEN" }]],
["MAYBE", [{ "pseudo": "TATA", "token": "TATA-TOKEN" }]]
] ]
}, },
{ {
@ -162,9 +100,15 @@
"pollSlug": "vacances", "pollSlug": "vacances",
"label": "montagne", "label": "montagne",
"participants": [ "participants": [
["YES", ["TOTO", "TITI"]], [
["NO", ["TETE"]], "YES",
["MAYBE", ["TATA"]] [
{ "pseudo": "TOTO", "token": "TOTO-TOKEN" },
{ "pseudo": "TITI", "token": "TITI-TOKEN" }
]
],
["NO", [{ "pseudo": "TETE", "token": "TETE-TOKEN" }]],
["MAYBE", [{ "pseudo": "TATA", "token": "TATA-TOKEN" }]]
] ]
}, },
{ {
@ -173,30 +117,18 @@
"pollSlug": "vacances", "pollSlug": "vacances",
"label": "quad", "label": "quad",
"participants": [ "participants": [
["YES", ["TOTO", "TITI"]], [
["NO", ["TETE"]], "YES",
["MAYBE", ["TATA"]] [
{ "pseudo": "TOTO", "token": "TOTO-TOKEN" },
{ "pseudo": "TITI", "token": "TITI-TOKEN" }
]
],
["NO", [{ "pseudo": "TETE", "token": "TETE-TOKEN" }]],
["MAYBE", [{ "pseudo": "TATA", "token": "TATA-TOKEN" }]]
] ]
} }
], ],
"answers": [
{ "choiceId": 1, "pseudo": "TOTO", "response": "YES", "token": "TOTO-TOKEN" },
{ "choiceId": 1, "pseudo": "TATA", "response": "NO", "token": "TATA-TOKEN" },
{ "choiceId": 1, "pseudo": "TITI", "response": "MAYBE", "token": "TITI-TOKEN" },
{ "choiceId": 2, "pseudo": "TOTO", "response": "YES", "token": "TOTO-TOKEN" },
{ "choiceId": 2, "pseudo": "TATA", "response": "NO", "token": "TATA-TOKEN" },
{ "choiceId": 2, "pseudo": "TITI", "response": "MAYBE", "token": "TITI-TOKEN" },
{ "choiceId": 2, "pseudo": "EVA", "response": null, "token": "EVA-TOKEN" },
{ "choiceId": 3, "pseudo": "TOTO", "response": "YES", "token": "TOTO-TOKEN" },
{ "choiceId": 3, "pseudo": "TATA", "response": "NO", "token": "TATA-TOKEN" },
{ "choiceId": 3, "pseudo": "TITI", "response": "MAYBE", "token": "TITI-TOKEN" },
{ "choiceId": 4, "pseudo": "TOTO", "response": "YES", "token": "TOTO-TOKEN" },
{ "choiceId": 4, "pseudo": "TATA", "response": "NO", "token": "TATA-TOKEN" },
{ "choiceId": 4, "pseudo": "TITI", "response": "MAYBE", "token": "TITI-TOKEN" },
{ "choiceId": 5, "pseudo": "TOTO", "response": "YES", "token": "TOTO-TOKEN" },
{ "choiceId": 5, "pseudo": "TATA", "response": "NO", "token": "TATA-TOKEN" },
{ "choiceId": 5, "pseudo": "TITI", "response": "MAYBE", "token": "TITI-TOKEN" }
],
"comments": [ "comments": [
{ {
"id": 1, "id": 1,

View File

@ -1,8 +1,7 @@
{ {
"/api/v1/*": "/$1", "/api/v1/*": "/$1",
"/owners/:email/": "/owners?email=:email", "/owners/:email/": "/owners?email=:email",
"/choices": "/choices?_embed=answers",
"/polls/:slug": "/polls?slug=:slug&_expand=owner&_embed=choices&_embed=comments", "/polls/:slug": "/polls?slug=:slug&_expand=owner&_embed=choices&_embed=comments",
"/polls/:slug/choices": "/choices?pollSlug=:slug&_embed=answers", "/polls/:slug/choices": "/choices?pollSlug=:slug",
"/polls/:slug/comments": "/comments?pollSlug=:slug" "/polls/:slug/comments": "/comments?pollSlug=:slug"
} }

View File

@ -5,13 +5,13 @@
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",
"build": "ng build --prod --progress=true", "build:prod": "ng build --prod",
"build-prod-stats": "ng build --prod --stats-json", "build:prod:stats": "ng build --prod --stats-json",
"build:demo": "ng build --crossOrigin=anonymous --extractCss=true --progress=true --prod && npm run package", "build:prod:gitlabpage": "ng build --prod --baseHref=/framadate/funky-framadate-front/",
"build:demobliss": "ng build --crossOrigin=anonymous --extractCss=true --baseHref=https://framadate-api.cipherbliss.com --progress=true --prod && npm run package", "build:prod:demobliss": "ng build --prod --baseHref=https://framadate-api.cipherbliss.com",
"test": "jest", "test": "jest",
"test:watch": "jest --watch", "test:watch": "jest --watch",
"test:ci": "jest --runInBand", "test:ci": "jest --ci",
"lint": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}\"", "lint": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}\"",
"e2e": "ng e2e", "e2e": "ng e2e",
"format:check": "prettier --list-different \"src/{app,environments,assets}/**/*{.ts,.js,.json,.css,.scss}\"", "format:check": "prettier --list-different \"src/{app,environments,assets}/**/*{.ts,.js,.json,.css,.scss}\"",
@ -65,7 +65,7 @@
"@babel/preset-env": "^7.9.5", "@babel/preset-env": "^7.9.5",
"@babel/preset-typescript": "^7.9.0", "@babel/preset-typescript": "^7.9.0",
"@compodoc/compodoc": "^1.1.11", "@compodoc/compodoc": "^1.1.11",
"@types/jest": "^25.2.1", "@types/jest": "^26.0.0",
"@types/node": "^14.0.1", "@types/node": "^14.0.1",
"@types/uuid": "^8.0.0", "@types/uuid": "^8.0.0",
"@typescript-eslint/eslint-plugin": "^3.0.0", "@typescript-eslint/eslint-plugin": "^3.0.0",
@ -86,7 +86,7 @@
"ts-jest": "^26.0.0", "ts-jest": "^26.0.0",
"ts-mockito": "^2.5.0", "ts-mockito": "^2.5.0",
"ts-node": "^8.10.1", "ts-node": "^8.10.1",
"typescript": "~3.8.3" "typescript": "<3.9.0"
}, },
"husky": { "husky": {
"hooks": { "hooks": {

View File

@ -32,7 +32,7 @@ export class AppComponent implements OnInit, OnDestroy {
if (!environment.production) { if (!environment.production) {
this.appTitle += ' [DEV]'; this.appTitle += ' [DEV]';
// TODO: to be removed // TODO: to be removed
this.mockingService.loadUser(new User('TOTO', 'toto@gafam.com', UserRole.REGISTERED)); this.mockingService.loadUser(new User('TOTO', 'toto@gafam.com', [], UserRole.REGISTERED));
} }
this.titleService.setTitle(this.appTitle); this.titleService.setTitle(this.appTitle);
this.languageService.configureAndInitTranslations(); this.languageService.configureAndInitTranslations();

View File

@ -1,4 +1,4 @@
import { APP_BASE_HREF, CommonModule, registerLocaleData } from '@angular/common'; import { CommonModule, registerLocaleData } from '@angular/common';
import { HttpClient, HttpClientModule } from '@angular/common/http'; import { HttpClient, HttpClientModule } from '@angular/common/http';
import localeEn from '@angular/common/locales/en'; import localeEn from '@angular/common/locales/en';
import localeFr from '@angular/common/locales/fr'; import localeFr from '@angular/common/locales/fr';
@ -64,7 +64,7 @@ export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {
useDefaultLang: false, useDefaultLang: false,
}), }),
], ],
providers: [{ provide: APP_BASE_HREF, useValue: environment.baseHref }, Title, TranslateService], providers: [Title, TranslateService],
bootstrap: [AppComponent], bootstrap: [AppComponent],
}) })
export class AppModule {} export class AppModule {}

View File

@ -1,4 +1,4 @@
export enum ResponseType { export enum Answer {
YES = 'YES', YES = 'YES',
NO = 'NO', NO = 'NO',
MAYBE = 'MAYBE', MAYBE = 'MAYBE',

View File

@ -1,37 +1,38 @@
import { ResponseType } from '../enums/response-type.enum'; import { Answer } from '../enums/answer.enum';
import { User } from './user.model';
export class Choice { export class Choice {
constructor( constructor(
public label: string, public label: string,
public imageUrl?: string, public imageUrl?: string,
public participants: Map<ResponseType, Set<string>> = new Map<ResponseType, Set<string>>([ public participants: Map<Answer, Set<User>> = new Map<Answer, Set<User>>([
[ResponseType.YES, new Set<string>()], [Answer.YES, new Set<User>()],
[ResponseType.NO, new Set<string>()], [Answer.NO, new Set<User>()],
[ResponseType.MAYBE, new Set<string>()], [Answer.MAYBE, new Set<User>()],
]), ]),
public counts: Map<ResponseType, number> = new Map<ResponseType, number>([ public counts: Map<Answer, number> = new Map<Answer, number>([
[ResponseType.YES, 0], [Answer.YES, 0],
[ResponseType.NO, 0], [Answer.NO, 0],
[ResponseType.MAYBE, 0], [Answer.MAYBE, 0],
]) ])
) {} ) {}
public updateParticipation(pseudo: string, responseType: ResponseType): void { public updateParticipation(user: User, responseType: Answer): void {
this.removeParticipant(pseudo); this.removeParticipant(user);
this.participants.get(responseType).add(pseudo); this.participants.get(responseType).add(user);
this.updateCounts(); this.updateCounts();
} }
public removeParticipant(pseudo: string): void { public removeParticipant(user: User): void {
for (const responseType of Object.values(ResponseType)) { for (const responseType of Object.values(Answer)) {
if (this.participants.get(responseType).has(pseudo)) { if (this.participants.get(responseType).has(user)) {
this.participants.get(responseType).delete(pseudo); this.participants.get(responseType).delete(user);
} }
} }
} }
public updateCounts(): void { public updateCounts(): void {
for (const responseType of Object.values(ResponseType)) { for (const responseType of Object.values(Answer)) {
this.counts.set(responseType, this.participants.get(responseType).size); this.counts.set(responseType, this.participants.get(responseType).size);
} }
} }

View File

@ -1,6 +0,0 @@
import { ResponseType } from '../enums/response-type.enum';
import { Choice } from './choice.model';
export class PollUserAnswers {
constructor(public pseudo: string, public token: string, public responsesByChoices: Map<Choice, ResponseType>) {}
}

View File

@ -1,8 +1,6 @@
import { environment } from 'src/environments/environment'; import { environment } from 'src/environments/environment';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { ResponseType } from '../enums/response-type.enum';
import { PollUserAnswers } from './poll-user-answers.model';
import { Choice } from './choice.model'; import { Choice } from './choice.model';
import { Comment } from './comment.model'; import { Comment } from './comment.model';
import { Configuration } from './configuration.model'; import { Configuration } from './configuration.model';
@ -16,12 +14,7 @@ export class Poll {
public slug: string = uuidv4(), public slug: string = uuidv4(),
public configuration: Configuration = new Configuration(), public configuration: Configuration = new Configuration(),
public comments: Comment[] = [], public comments: Comment[] = [],
public choices: Choice[] = [], public choices: Choice[] = []
public answersByChoiceByParticipant: Map<string, Map<string, ResponseType>> = new Map<
string,
Map<string, ResponseType>
>(),
public answers: PollUserAnswers[] = []
) {} ) {}
public getAdministrationUrl(): string { public getAdministrationUrl(): string {
@ -33,18 +26,7 @@ export class Poll {
} }
public static adaptFromLocalJsonServer( public static adaptFromLocalJsonServer(
item: Pick< item: Pick<Poll, 'owner' | 'question' | 'description' | 'slug' | 'configuration' | 'comments' | 'choices'>
Poll,
| 'owner'
| 'question'
| 'description'
| 'slug'
| 'configuration'
| 'comments'
| 'choices'
| 'answersByChoiceByParticipant'
| 'answers'
>
): Poll { ): Poll {
const poll = new Poll( const poll = new Poll(
new User(item.owner.pseudo, item.owner.email, undefined), new User(item.owner.pseudo, item.owner.email, undefined),
@ -58,32 +40,17 @@ export class Poll {
new Comment(c.author, c.content, new Date(c.dateCreated)) new Comment(c.author, c.content, new Date(c.dateCreated))
) )
.sort(Comment.sortChronologically), .sort(Comment.sortChronologically),
item.choices.map((c: Pick<Choice, 'label' | 'imageUrl' | 'participants' | 'imageUrl'>) => { item.choices.map((c: Pick<Choice, 'label' | 'imageUrl' | 'participants' | 'counts'>) => {
const choice = new Choice(c.label, c.imageUrl, new Map(c.participants)); const choice = new Choice(c.label, c.imageUrl, new Map(c.participants));
choice.participants.forEach((value, key) => { choice.participants.forEach((value, key) => {
choice.participants.set(key, new Set(value)); choice.participants.set(key, new Set(value));
}); });
choice.updateCounts(); choice.updateCounts();
console.log({ choice });
return choice; return choice;
}) })
); );
// handle answersByChoiceByParticipant
for (const [pseudo, answersByChoice] of Object.entries(item.answersByChoiceByParticipant)) {
if (!poll.answersByChoiceByParticipant.has(pseudo)) {
poll.answersByChoiceByParticipant.set(pseudo, new Map<string, ResponseType>());
}
for (const [choiceLabel, answer] of Object.entries(answersByChoice)) {
poll.answersByChoiceByParticipant.get(pseudo).set(choiceLabel, answer as ResponseType);
}
}
// handle answers
poll.answers = item.answers.map(
(pollUserAnswers: Pick<PollUserAnswers, 'pseudo' | 'token' | 'responsesByChoices'>) =>
new PollUserAnswers(pollUserAnswers.pseudo, pollUserAnswers.token, pollUserAnswers.responsesByChoices)
);
return poll; return poll;
} }
} }

View File

@ -1,3 +0,0 @@
export class Question {
constructor(public label: string, public description: string) {}
}

View File

@ -2,5 +2,11 @@ import { UserRole } from '../enums/user-role.enum';
import { Poll } from './poll.model'; import { Poll } from './poll.model';
export class User { export class User {
constructor(public pseudo: string, public email: string, public role?: UserRole, public polls?: Poll[]) {} constructor(
public pseudo: string,
public email: string,
public polls: Poll[] = [],
public role?: UserRole,
public token?: string
) {}
} }

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import axios, { AxiosInstance, AxiosResponse } from 'axios'; import axios, { AxiosInstance, AxiosResponse } from 'axios';
import { environment } from 'src/environments/environment'; import { environment } from 'src/environments/environment';
import { ResponseType } from '../enums/response-type.enum'; import { Answer } from '../enums/answer.enum';
import { Poll } from '../models/poll.model'; import { Poll } from '../models/poll.model';
@Injectable({ @Injectable({
@ -40,7 +40,7 @@ export class ApiService {
pollId: string, pollId: string,
choiceLabel: string, choiceLabel: string,
pseudo: string, pseudo: string,
response: ResponseType response: Answer
): Promise<string> { ): Promise<string> {
try { try {
return await this.axiosInstance.post(`${this.pollsEndpoint}/${pollId}${this.answersEndpoint}`, { return await this.axiosInstance.post(`${this.pollsEndpoint}/${pollId}${this.answersEndpoint}`, {
@ -151,17 +151,12 @@ export class ApiService {
//////////// ////////////
// UPDATE // // UPDATE //
//////////// ////////////
public async updateAnswer( public async updateAnswer(slug: string, choiceLabel: string, pseudo: string, answer: Answer): Promise<string> {
slug: string,
choiceLabel: string,
pseudo: string,
response: ResponseType
): Promise<string> {
try { try {
return await this.axiosInstance.patch(`${this.pollsEndpoint}/${slug}${this.answersEndpoint}`, { return await this.axiosInstance.patch(`${this.pollsEndpoint}/${slug}${this.answersEndpoint}`, {
choiceLabel, choiceLabel,
pseudo, pseudo,
response, answer,
}); });
} catch (error) { } catch (error) {
this.handleError(error); this.handleError(error);

View File

@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
import { Choice } from '../models/choice.model'; import { Choice } from '../models/choice.model';
import { Poll } from '../models/poll.model'; import { Poll } from '../models/poll.model';
import { Question } from '../models/question.model';
import { User } from '../models/user.model'; import { User } from '../models/user.model';
import { PollService } from './poll.service'; import { PollService } from './poll.service';
import { UserService } from './user.service'; import { UserService } from './user.service';

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs'; import { BehaviorSubject, Observable } from 'rxjs';
import { MessageSeverity } from '../enums/message-severity.enum'; import { MessageSeverity } from '../enums/message-severity.enum';
import { ResponseType } from '../enums/response-type.enum'; import { Answer } from '../enums/answer.enum';
import { Choice } from '../models/choice.model'; import { Choice } from '../models/choice.model';
import { Poll } from '../models/poll.model'; import { Poll } from '../models/poll.model';
import { User } from '../models/user.model'; import { User } from '../models/user.model';
@ -40,9 +40,9 @@ export class PollService {
} }
} }
public saveParticipation(choice: Choice, user: User, response: ResponseType): void { public saveParticipation(choice: Choice, user: User, response: Answer): void {
const currentPoll = this._poll.getValue(); const currentPoll = this._poll.getValue();
currentPoll.choices.find((c) => c.label === choice.label)?.updateParticipation(user.pseudo, response); currentPoll.choices.find((c) => c.label === choice.label)?.updateParticipation(user, response);
this.updateCurrentPoll(currentPoll); this.updateCurrentPoll(currentPoll);
this.apiService.createParticipation(currentPoll.slug, choice.label, user.pseudo, response); this.apiService.createParticipation(currentPoll.slug, choice.label, user.pseudo, response);
this.messageDisplayerService.display( this.messageDisplayerService.display(
@ -71,4 +71,37 @@ export class PollService {
'Les commentaires de ce sondage ont été supprimés.' 'Les commentaires de ce sondage ont été supprimés.'
); );
} }
public buildAnswersByChoiceLabelByPseudo(poll: Poll): Map<string, Map<string, Answer>> {
const pseudos: Set<string> = new Set();
poll.choices.forEach((choice: Choice) => {
choice.participants.forEach((users: Set<User>) => {
users.forEach((user: User) => {
pseudos.add(user.pseudo);
});
});
});
const list = new Map<string, Map<string, Answer>>();
pseudos.forEach((pseudo: string) => {
list.set(
pseudo,
new Map<string, Answer>(
poll.choices.map((choice: Choice) => {
return [choice.label, undefined];
})
)
);
});
poll.choices.forEach((choice: Choice) => {
choice.participants.forEach((users: Set<User>, answer: Answer) => {
users.forEach((user: User) => {
list.get(user.pseudo).set(choice.label, answer);
});
});
});
return list;
}
} }

View File

@ -10,7 +10,7 @@ import { ApiService } from './api.service';
providedIn: 'root', providedIn: 'root',
}) })
export class UserService { export class UserService {
public anonymous: User = new User('', '', UserRole.ANONYMOUS); public anonymous: User = new User('', '', [], UserRole.ANONYMOUS);
private _user: BehaviorSubject<User> = new BehaviorSubject<User>(this.anonymous); private _user: BehaviorSubject<User> = new BehaviorSubject<User>(this.anonymous);
public readonly user: Observable<User> = this._user.asObservable(); public readonly user: Observable<User> = this._user.asObservable();

View File

@ -7,11 +7,11 @@
<div class="buttons has-addons is-right" (click)="openModal(choice)"> <div class="buttons has-addons is-right" (click)="openModal(choice)">
<button class="button is-white"> <button class="button is-white">
<img class="image is-24x24" src="../../../assets/img/icon_voter_YES.svg" /> <img class="image is-24x24" src="../../../assets/img/icon_voter_YES.svg" />
{{ choice.counts.get(responseTypeEnum.YES) }} {{ choice.counts.get(answerEnum.YES) }}
</button> </button>
<button class="button is-white" *ngIf="poll.configuration.isMaybeAnswerAvailable"> <button class="button is-white" *ngIf="poll.configuration.isMaybeAnswerAvailable">
<img class="image is-24x24" src="../../../assets/img/icon_voter_MAYBE.svg" /> <img class="image is-24x24" src="../../../assets/img/icon_voter_MAYBE.svg" />
{{ choice.counts.get(responseTypeEnum.MAYBE) }} {{ choice.counts.get(answerEnum.MAYBE) }}
</button> </button>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { ResponseType } from '../../../core/enums/response-type.enum'; import { Answer } from '../../../core/enums/answer.enum';
import { Choice } from '../../../core/models/choice.model'; import { Choice } from '../../../core/models/choice.model';
import { Poll } from '../../../core/models/poll.model'; import { Poll } from '../../../core/models/poll.model';
import { ModalService } from '../../../core/services/modal.service'; import { ModalService } from '../../../core/services/modal.service';
@ -14,7 +14,7 @@ export class PollResultsCompactComponent implements OnInit {
@Input() public poll: Poll; @Input() public poll: Poll;
public isModalOpened = false; public isModalOpened = false;
public choiceInModal: Choice; public choiceInModal: Choice;
public responseTypeEnum = ResponseType; public answerEnum = Answer;
constructor(private modalService: ModalService) {} constructor(private modalService: ModalService) {}

View File

@ -6,7 +6,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<ng-container *ngFor="let item of poll.answersByChoiceByParticipant | keyvalue"> <ng-container *ngFor="let item of buildAnswersByChoiceLabelByPseudo() | keyvalue">
<tr> <tr>
<td>{{ item.key }}</td> <td>{{ item.key }}</td>
<td *ngFor="let subItem of item.value | keyvalue">{{ subItem.value }}</td> <td *ngFor="let subItem of item.value | keyvalue">{{ subItem.value }}</td>
@ -14,22 +14,3 @@
</ng-container> </ng-container>
</tbody> </tbody>
</table> </table>
<hr />
<table>
<thead>
<tr>
<th></th>
<th *ngFor="let choice of poll.choices">{{ choice.label }}</th>
</tr>
</thead>
<tbody>
<ng-container *ngFor="let answer of poll.answers">
<tr>
<td>{{ answer.pseudo }}</td>
<td *ngFor="let response of answer.responsesByChoices | keyvalue">
{{ response.value }}
</td>
</tr>
</ng-container>
</tbody>
</table>

View File

@ -1,6 +1,8 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { Answer } from '../../../core/enums/answer.enum';
import { Poll } from '../../../core/models/poll.model'; import { Poll } from '../../../core/models/poll.model';
import { PollService } from '../../../core/services/poll.service';
@Component({ @Component({
selector: 'app-poll-results-detailed', selector: 'app-poll-results-detailed',
@ -10,7 +12,11 @@ import { Poll } from '../../../core/models/poll.model';
export class PollResultsDetailedComponent implements OnInit { export class PollResultsDetailedComponent implements OnInit {
@Input() public poll: Poll; @Input() public poll: Poll;
constructor() {} constructor(private pollService: PollService) {}
ngOnInit(): void {} ngOnInit(): void {}
public buildAnswersByChoiceLabelByPseudo(): Map<string, Map<string, Answer>> {
return this.pollService.buildAnswersByChoiceLabelByPseudo(this.poll);
}
} }

View File

@ -28,11 +28,11 @@
<div class="column"> <div class="column">
<div class="buttons has-addons is-right"> <div class="buttons has-addons is-right">
<button class="button is-white"> <button class="button is-white">
{{ choice.counts.get(responseTypeEnum.YES) }} {{ choice.counts.get(answerEnum.YES) }}
<img class="image is-24x24" src="../../../assets/img/icon_voter_YES.svg" /> <img class="image is-24x24" src="../../../assets/img/icon_voter_YES.svg" />
</button> </button>
<button class="button is-white" *ngIf="poll.configuration.isMaybeAnswerAvailable"> <button class="button is-white" *ngIf="poll.configuration.isMaybeAnswerAvailable">
{{ choice.counts.get(responseTypeEnum.MAYBE) }} {{ choice.counts.get(answerEnum.MAYBE) }}
<img class="image is-24x24" src="../../../assets/img/icon_voter_MAYBE.svg" /> <img class="image is-24x24" src="../../../assets/img/icon_voter_MAYBE.svg" />
</button> </button>
</div> </div>

View File

@ -1,5 +1,5 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { ResponseType } from 'src/app/core/enums/response-type.enum'; import { Answer } from 'src/app/core/enums/answer.enum';
import { Choice } from '../../../core/models/choice.model'; import { Choice } from '../../../core/models/choice.model';
import { Poll } from '../../../core/models/poll.model'; import { Poll } from '../../../core/models/poll.model';
@ -15,15 +15,15 @@ export class AddAnswerComponent implements OnInit {
@Input() user: User; @Input() user: User;
@Input() poll: Poll; @Input() poll: Poll;
@Input() choice: Choice; @Input() choice: Choice;
public responseTypeEnum = ResponseType; public answerEnum = Answer;
public response: ResponseType; public response: Answer;
constructor(private pollService: PollService) {} constructor(private pollService: PollService) {}
ngOnInit(): void {} ngOnInit(): void {}
public vote(response: string): void { public vote(response: string): void {
this.response = response as ResponseType; this.response = response as Answer;
console.log(this.response); console.log(this.response);
this.pollService.saveParticipation(this.choice, this.user, this.response); this.pollService.saveParticipation(this.choice, this.user, this.response);
} }

View File

@ -5,13 +5,13 @@
<tr> <tr>
<th class="is-flex"> <th class="is-flex">
<img class="image is-24x24" src="../../../assets/img/icon_voter_YES.svg" /> <img class="image is-24x24" src="../../../assets/img/icon_voter_YES.svg" />
{{ choice.counts.get(responseTypeEnum.YES) }} {{ choice.counts.get(answerEnum.YES) }}
</th> </th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr *ngFor="let pseudo of choice.participants.get(responseTypeEnum.YES)"> <tr *ngFor="let user of choice.participants.get(answerEnum.YES)">
<td>{{ pseudo }}</td> <td>{{ user.pseudo }}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -22,13 +22,13 @@
<tr> <tr>
<th class="is-flex"> <th class="is-flex">
<img class="image is-24x24" src="../../../assets/img/icon_voter_MAYBE.svg" /> <img class="image is-24x24" src="../../../assets/img/icon_voter_MAYBE.svg" />
{{ choice.counts.get(responseTypeEnum.MAYBE) }} {{ choice.counts.get(answerEnum.MAYBE) }}
</th> </th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr *ngFor="let pseudo of choice.participants.get(responseTypeEnum.MAYBE)"> <tr *ngFor="let user of choice.participants.get(answerEnum.MAYBE)">
<td>{{ pseudo }}</td> <td>{{ user.pseudo }}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -1,7 +1,7 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { DynamicDialogConfig, DynamicDialogRef } from 'primeng'; import { DynamicDialogConfig, DynamicDialogRef } from 'primeng';
import { ResponseType } from '../../../core/enums/response-type.enum'; import { Answer } from '../../../core/enums/answer.enum';
import { Choice } from '../../../core/models/choice.model'; import { Choice } from '../../../core/models/choice.model';
@Component({ @Component({
@ -11,7 +11,7 @@ import { Choice } from '../../../core/models/choice.model';
}) })
export class ChoiceDetailsComponent implements OnInit { export class ChoiceDetailsComponent implements OnInit {
public choice: Choice; public choice: Choice;
public responseTypeEnum = ResponseType; public answerEnum = Answer;
constructor(public ref: DynamicDialogRef, public config: DynamicDialogConfig) {} constructor(public ref: DynamicDialogRef, public config: DynamicDialogConfig) {}

View File

@ -5,7 +5,6 @@ const backendApiUrlsInDev = {
export const environment = { export const environment = {
production: true, production: true,
baseHref: '/framadate/funky-framadate-front/',
appTitle: 'FramaSondage', appTitle: 'FramaSondage',
api: { api: {
baseHref: backendApiUrlsInDev.remote, baseHref: backendApiUrlsInDev.remote,
@ -21,9 +20,6 @@ export const environment = {
slugs: { slugs: {
name: '/slugs', name: '/slugs',
}, },
votesStacks: {
name: '/votes-stacks',
},
answers: { answers: {
name: '/answers', name: '/answers',
}, },

View File

@ -9,7 +9,6 @@ const backendApiUrlsInDev = {
export const environment = { export const environment = {
production: false, production: false,
baseHref: '/',
appTitle: 'FramaSondage', appTitle: 'FramaSondage',
api: { api: {
baseHref: backendApiUrlsInDev.local, baseHref: backendApiUrlsInDev.local,
@ -25,9 +24,6 @@ export const environment = {
slugs: { slugs: {
name: '/slugs', name: '/slugs',
}, },
votesStacks: {
name: '/votes-stacks',
},
answers: { answers: {
name: '/answers', name: '/answers',
}, },

View File

@ -21,7 +21,7 @@
// most general dom elements // most general dom elements
@import './styles/partials/global'; @import './styles/partials/global';
@import './styles/partials/logo'; @import './styles/partials/logo';
@import './styles/partials/navigation'; @import './styles/partials/navigation';
// main content elements // main content elements
@import './styles/partials/main'; @import './styles/partials/main';

View File

@ -1,10 +1,9 @@
@charset "UTF-8"; @charset "UTF-8";
label {
label{
line-height: 2.5em; line-height: 2.5em;
} }
.ui-inputswitch{ .ui-inputswitch {
margin-left: 1ch; margin-left: 1ch;
margin-right: 1ch; margin-right: 1ch;
} }
@ -69,6 +68,6 @@ li {
width: 100%; width: 100%;
} }
button[type='submit']{ button[type='submit'] {
margin-top : 2em; margin-top: 2em;
} }

View File

@ -18,7 +18,8 @@ nav {
display: none; display: none;
} }
&.active, &.is-active { &.active,
&.is-active {
color: $white; color: $white;
background: $primary_color; background: $primary_color;
} }
@ -82,9 +83,9 @@ a {
} }
} }
// material override // material override
.navbar{ .navbar {
margin-bottom: 0 margin-bottom: 0;
} }
a span.ui-steps-number{ a span.ui-steps-number {
padding: 0; padding: 0;
} }

View File

@ -1,7 +1,7 @@
#big_container { #big_container {
background: $primary; background: $primary;
main{ main {
margin-bottom: 2em; margin-bottom: 2em;
padding-bottom: 5em; padding-bottom: 5em;
padding-top: 1em; padding-top: 1em;

View File

@ -6,16 +6,19 @@ $theme-color-tertiary: #ccc;
background: #222; background: #222;
color: $theme-color-tertiary; color: $theme-color-tertiary;
main, .big-header, .navbar , footer{ main,
.big-header,
.navbar,
footer {
background: #444; background: #444;
} }
.big-header{ .big-header {
color: $white; color: $white;
a{ a {
color: $white; color: $white;
} }
} }
input{ input {
background: #222; background: #222;
color: $white; color: $white;
} }
@ -60,30 +63,44 @@ $theme-color-tertiary: #ccc;
.big-header { .big-header {
margin-bottom: 22px; margin-bottom: 22px;
} }
label{ label {
color: $theme-color-tertiary; color: $theme-color-tertiary;
} }
// bulma override // bulma override
.button.is-primary, .button.btn--primary, button.is-primary, button.btn--primary, .is-primary.btn, .btn.btn--primary, .is-primary.back, .back.btn--primary{ .button.is-primary,
.button.btn--primary,
button.is-primary,
button.btn--primary,
.is-primary.btn,
.btn.btn--primary,
.is-primary.back,
.back.btn--primary {
background-color: $theme-color-primary !important; background-color: $theme-color-primary !important;
color: $theme-color-tertiary !important; color: $theme-color-tertiary !important;
} }
.navbar-dropdown a.navbar-item{ .navbar-dropdown a.navbar-item {
color: #444; color: #444;
} }
// material override // material override
.navbar-dropdown a.navbar-item.is-active, .navbar-dropdown a.navbar-item.is-active,
body .ui-steps .ui-steps-item.ui-state-highlight .ui-steps-number, body .ui-steps .ui-steps-item.ui-state-highlight .ui-steps-number,
a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, .navbar-link:focus, .navbar-link:focus-within, .navbar-link:hover, .navbar-link.is-active{ a.navbar-item:focus,
a.navbar-item:focus-within,
a.navbar-item:hover,
a.navbar-item.is-active,
.navbar-link:focus,
.navbar-link:focus-within,
.navbar-link:hover,
.navbar-link.is-active {
color: $theme-color-primary !important; color: $theme-color-primary !important;
} }
.navbar-link:not(.is-arrowless)::after{ .navbar-link:not(.is-arrowless)::after {
border-color: $theme-color-primary; border-color: $theme-color-primary;
} }
body .ui-inputswitch.ui-inputswitch-checked:not(.ui-state-disabled) .ui-inputswitch-slider{ body .ui-inputswitch.ui-inputswitch-checked:not(.ui-state-disabled) .ui-inputswitch-slider {
background-color: $theme-color-primary; background-color: $theme-color-primary;
} }
} }

View File

@ -19,14 +19,13 @@
} }
// material override // material override
body .ui-steps .ui-steps-item.ui-state-highlight .ui-steps-number{ body .ui-steps .ui-steps-item.ui-state-highlight .ui-steps-number {
color: $primary_color; color: $primary_color;
} }
body .ui-inputswitch.ui-inputswitch-checked:not(.ui-state-disabled) .ui-inputswitch-slider{ body .ui-inputswitch.ui-inputswitch-checked:not(.ui-state-disabled) .ui-inputswitch-slider {
background-color: $primary_color; background-color: $primary_color;
} }
.navbar-link:not(.is-arrowless)::after{ .navbar-link:not(.is-arrowless)::after {
border-color: $primary_color; border-color: $primary_color;
} }
} }

View File

@ -7,7 +7,7 @@ $theme-color-tertiary: #ffbca4;
background: $theme-color-tertiary; background: $theme-color-tertiary;
color: $theme-color-secondary; color: $theme-color-secondary;
main{ main {
background: $white; background: $white;
} }
h1::after { h1::after {
@ -22,15 +22,28 @@ $theme-color-tertiary: #ffbca4;
} }
// bulma override // bulma override
.button.is-primary, .button.btn--primary, button.is-primary, button.btn--primary, .is-primary.btn, .btn.btn--primary, .is-primary.back, .back.btn--primary{ .button.is-primary,
.button.btn--primary,
button.is-primary,
button.btn--primary,
.is-primary.btn,
.btn.btn--primary,
.is-primary.back,
.back.btn--primary {
background-color: $theme-color-primary; background-color: $theme-color-primary;
color: $theme-color-tertiary; color: $theme-color-tertiary;
} }
// material override // material override
.navbar-dropdown a.navbar-item.is-active, .navbar-dropdown a.navbar-item.is-active,
a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, .navbar-link:focus, .navbar-link:focus-within, .navbar-link:hover, .navbar-link.is-active{ a.navbar-item:focus,
a.navbar-item:focus-within,
a.navbar-item:hover,
a.navbar-item.is-active,
.navbar-link:focus,
.navbar-link:focus-within,
.navbar-link:hover,
.navbar-link.is-active {
color: $theme-color-primary; color: $theme-color-primary;
} }
} }
} }

493
yarn.lock
View File

@ -12,29 +12,29 @@
jest-preset-angular "^8.1.2" jest-preset-angular "^8.1.2"
lodash "^4.17.10" lodash "^4.17.10"
"@angular-devkit/architect@0.901.7", "@angular-devkit/architect@>=0.900.0 < 0.1000.0": "@angular-devkit/architect@0.901.8", "@angular-devkit/architect@>=0.900.0 < 0.1000.0":
version "0.901.7" version "0.901.8"
resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.901.7.tgz#6a09cb076ca92b3202053fca757a456d1f8e4395" resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.901.8.tgz#d2f5f4c16fba3ed61ee27c7fc72118421ea2b45d"
integrity sha512-yW/PUEqle55QihOFbmeNXaVTodhfeXkteoFDUpz+YpX3xiQDXDtNbIJSzKOQTojtBKdSMKMvZkQLr+RAa7/1EA== integrity sha512-tK9ZQlubH6n+q+c2J9Wvfcxg3RFuRiTfJriNoodo6GHvtF2KLdPY67w3Gen0Sp172A5Q8Y927NseddNI8RZ/0A==
dependencies: dependencies:
"@angular-devkit/core" "9.1.7" "@angular-devkit/core" "9.1.8"
rxjs "6.5.4" rxjs "6.5.4"
"@angular-devkit/build-angular@^0.901.2": "@angular-devkit/build-angular@^0.901.2":
version "0.901.7" version "0.901.8"
resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.901.7.tgz#10d55e3c73213971ba7d733f15d66494dfe9918a" resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.901.8.tgz#6450be4743dacf564af143c85d2a03b7bdd81551"
integrity sha512-NiBwapx/XJqYGzSmENff78i6Yif9PjYDJ9BB+59t2eDofkCZUcPFrhQmRgliO7rt6RATvT81lDP89+LBXCTQPw== integrity sha512-W2RTjtPPJRbke6K7Qt9eZOPRGfFBFsYzskxsuxXwkW2RPopj6k1wUWh9Be8CtAMAUlhyPvlzviOtv3F7leYr3w==
dependencies: dependencies:
"@angular-devkit/architect" "0.901.7" "@angular-devkit/architect" "0.901.8"
"@angular-devkit/build-optimizer" "0.901.7" "@angular-devkit/build-optimizer" "0.901.8"
"@angular-devkit/build-webpack" "0.901.7" "@angular-devkit/build-webpack" "0.901.8"
"@angular-devkit/core" "9.1.7" "@angular-devkit/core" "9.1.8"
"@babel/core" "7.9.0" "@babel/core" "7.9.0"
"@babel/generator" "7.9.3" "@babel/generator" "7.9.3"
"@babel/preset-env" "7.9.0" "@babel/preset-env" "7.9.0"
"@babel/template" "7.8.6" "@babel/template" "7.8.6"
"@jsdevtools/coverage-istanbul-loader" "3.0.3" "@jsdevtools/coverage-istanbul-loader" "3.0.3"
"@ngtools/webpack" "9.1.7" "@ngtools/webpack" "9.1.8"
ajv "6.12.0" ajv "6.12.0"
autoprefixer "9.7.4" autoprefixer "9.7.4"
babel-loader "8.0.6" babel-loader "8.0.6"
@ -42,7 +42,7 @@
cacache "15.0.0" cacache "15.0.0"
caniuse-lite "^1.0.30001032" caniuse-lite "^1.0.30001032"
circular-dependency-plugin "5.2.0" circular-dependency-plugin "5.2.0"
copy-webpack-plugin "5.1.1" copy-webpack-plugin "6.0.2"
core-js "3.6.4" core-js "3.6.4"
css-loader "3.5.1" css-loader "3.5.1"
cssnano "4.1.10" cssnano "4.1.10"
@ -51,7 +51,7 @@
glob "7.1.6" glob "7.1.6"
jest-worker "25.1.0" jest-worker "25.1.0"
karma-source-map-support "1.4.0" karma-source-map-support "1.4.0"
less "3.11.1" less "3.11.3"
less-loader "5.0.0" less-loader "5.0.0"
license-webpack-plugin "2.1.4" license-webpack-plugin "2.1.4"
loader-utils "2.0.0" loader-utils "2.0.0"
@ -87,10 +87,10 @@
webpack-subresource-integrity "1.4.0" webpack-subresource-integrity "1.4.0"
worker-plugin "4.0.3" worker-plugin "4.0.3"
"@angular-devkit/build-optimizer@0.901.7": "@angular-devkit/build-optimizer@0.901.8":
version "0.901.7" version "0.901.8"
resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.901.7.tgz#e72fc3031207a78aee175a76d3317cdf226984e9" resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.901.8.tgz#55a6cecf9b963bac15f84b5db8ec211c82119954"
integrity sha512-Xuce3StdxhcgLYb0BAaFGr3Bzj5EM2OsAqIT15PkikWY1k5cK50vPxoC/BkX4QDL9eXSHtqAfMBfA6h5N422vw== integrity sha512-k9DynuWKMsJk5xg+LthdsqmOlGVMVP/TEu2odiVty9gnTVlIjs1bUzs+HNAF/w11juIBcVKa690K+FkSCalo9w==
dependencies: dependencies:
loader-utils "2.0.0" loader-utils "2.0.0"
source-map "0.7.3" source-map "0.7.3"
@ -98,19 +98,19 @@
typescript "3.6.5" typescript "3.6.5"
webpack-sources "1.4.3" webpack-sources "1.4.3"
"@angular-devkit/build-webpack@0.901.7": "@angular-devkit/build-webpack@0.901.8":
version "0.901.7" version "0.901.8"
resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.901.7.tgz#6d93c38756540a02e67d2c3ccfac4220c62962de" resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.901.8.tgz#19fbac49c3f60c16d6814d61e518431503ab746a"
integrity sha512-pTLW5Eqy9cHgv78LKiH0e30lxqKzUPjh1djvNtFsEemOHsfKQdAfjLjikoaQvqMoBKVaUU7r2vmyyS17cH+1yw== integrity sha512-OyLfPI0yo1Qg4I1QP8ZxEYVxrf3IDjGfpxlKXqSChpEy5m/uZmBIRDZ/n/G3+32xFc6MWEdU4EHfRrfn17ae/w==
dependencies: dependencies:
"@angular-devkit/architect" "0.901.7" "@angular-devkit/architect" "0.901.8"
"@angular-devkit/core" "9.1.7" "@angular-devkit/core" "9.1.8"
rxjs "6.5.4" rxjs "6.5.4"
"@angular-devkit/core@9.1.7", "@angular-devkit/core@^9.0.0": "@angular-devkit/core@9.1.8", "@angular-devkit/core@^9.0.0":
version "9.1.7" version "9.1.8"
resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-9.1.7.tgz#f193ccbae4c80b34188bc9cc401c16b3ced50339" resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-9.1.8.tgz#7c517a14e3ddfd180858972d9f1836aa90a1248e"
integrity sha512-guvolu9Cl+qYMTtedLZD9wCqustJjdqzJ2psD2C1Sr1LrX9T0mprmDldR/YnhsitThveJEb6sM/0EvqWxoSvKw== integrity sha512-4k1pZwje2oh5c/ULg7pnCBzTstx3l3uF7O5tQq/KXomDDsam97IhLm6cKUqQpaoyC1NUsBV6xJARJ0PyUP5TPQ==
dependencies: dependencies:
ajv "6.12.0" ajv "6.12.0"
fast-json-stable-stringify "2.1.0" fast-json-stable-stringify "2.1.0"
@ -118,19 +118,19 @@
rxjs "6.5.4" rxjs "6.5.4"
source-map "0.7.3" source-map "0.7.3"
"@angular-devkit/schematics@9.1.7": "@angular-devkit/schematics@9.1.8":
version "9.1.7" version "9.1.8"
resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-9.1.7.tgz#45394a1c928db449b412dacf205c3ec78fb5ef0c" resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-9.1.8.tgz#8eeea0b6f9702a5b065f909cdcaf1d35cc8e2fa3"
integrity sha512-oeHPJePBcPp/bd94jHQeFUnft93PGF5iJiKV9szxqS8WWC5OMZ5eK7icRY0PwvLyfenspAZxdZcNaqJqPMul5A== integrity sha512-/8L5J4X6SkcFMRmrSQHvJWOPilrMWTNlv1lD+1z06D3xGJEktVxXM3gCUXhDrbMvpoi+lYtR2Fuia0E6zvyjCQ==
dependencies: dependencies:
"@angular-devkit/core" "9.1.7" "@angular-devkit/core" "9.1.8"
ora "4.0.3" ora "4.0.3"
rxjs "6.5.4" rxjs "6.5.4"
"@angular/animations@^9.1.1": "@angular/animations@^9.1.1":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.1.9.tgz#de54334ea195189402487855c9a98f5618605da4" resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.1.11.tgz#2c7b6e584df0ba0884d05f01fa7ab86c1fdd1c5e"
integrity sha512-qWVi0TxmU6HeXAgEsfpQvFFygh+a0kH2kGe6bWij4XvG6dWfV3xZjlaFwSIYGk+yK4yL0+9+PAXH+ENfxNw+Cw== integrity sha512-VKAExUnEJfo1PDQKagpx2pn+QMZCsPLRiADzTdl4U0VPylK3ALbn4ZNY9UbdwyE2plitz++LkH7sEGGfh+PNrQ==
"@angular/cdk@^9.2.2": "@angular/cdk@^9.2.2":
version "9.2.4" version "9.2.4"
@ -140,15 +140,15 @@
parse5 "^5.0.0" parse5 "^5.0.0"
"@angular/cli@^9.1.2": "@angular/cli@^9.1.2":
version "9.1.7" version "9.1.8"
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-9.1.7.tgz#0532b9c55d267cd6ee3edb79fec8b19c4e64e607" resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-9.1.8.tgz#fd143e26c913ccea5b8ac1716e1c168432ac96d3"
integrity sha512-NhsIa725S/U/n7nDxp6ForusdYHEXF4aSIvsFRdoK6vbQ889c5e1Rdj+T5EWXLmpQZxeprSKhLI2alNX0nVhhQ== integrity sha512-yfF7glPo3Xm7fTJVln1bFZVXqHu8wkIGZRZGb6lsJa+QH4ePxHgn+dNYXho0MYpGUnhY7xOBW4MJzjS7E+1y5Q==
dependencies: dependencies:
"@angular-devkit/architect" "0.901.7" "@angular-devkit/architect" "0.901.8"
"@angular-devkit/core" "9.1.7" "@angular-devkit/core" "9.1.8"
"@angular-devkit/schematics" "9.1.7" "@angular-devkit/schematics" "9.1.8"
"@schematics/angular" "9.1.7" "@schematics/angular" "9.1.8"
"@schematics/update" "0.901.7" "@schematics/update" "0.901.8"
"@yarnpkg/lockfile" "1.1.0" "@yarnpkg/lockfile" "1.1.0"
ansi-colors "4.1.1" ansi-colors "4.1.1"
debug "4.1.1" debug "4.1.1"
@ -166,14 +166,14 @@
uuid "7.0.2" uuid "7.0.2"
"@angular/common@^9.0.7": "@angular/common@^9.0.7":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.9.tgz#16e77b2db675b80e32f1788a20c538150fd09294" resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.11.tgz#1323f7b043410791bd2d0d71b0bbb1f862319c04"
integrity sha512-y/tJtkuOJhV2kcaXZyrLZH84i4uQ1r+vaaEHvXj+JZYfYfcMMd/TDqMiPcIkUb3RxqghtZ+q0ZNW5D1Nlru3Pw== integrity sha512-Vh5lF7zWwDK9RedmYXUc8vUXyrecR3j1mAWlTlnmcHYxxFThPzN/dr0slQcPi6nyJn0EmyRKUGvAoZx4rIb7wg==
"@angular/compiler-cli@^9.1.1": "@angular/compiler-cli@^9.1.1":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-9.1.9.tgz#e3c234d888074002fa5f6b7eab4f63f4ddbdb7bd" resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-9.1.11.tgz#39da68ddadb52008fe5231141707bddd3aa790b2"
integrity sha512-aLr2eaDlREN8XybgTbelvjtSZ8eAkxBPilnkddc700BgiC6ImyUSKaItOwa8bnjQwq4Wlz5eVG0ibsrX+5MXwg== integrity sha512-9qIxbtpRXOQnRm6inxCa5HuH87MSuMzuceD0YBVzl8v+vLtewon9KXYMmF4kTBhWa/LEa8FrajljLh0azf3VLg==
dependencies: dependencies:
canonical-path "1.0.0" canonical-path "1.0.0"
chokidar "^3.0.0" chokidar "^3.0.0"
@ -189,48 +189,48 @@
yargs "15.3.0" yargs "15.3.0"
"@angular/compiler@^9.0.7": "@angular/compiler@^9.0.7":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.9.tgz#cbf678ee28a0811a8ef3ee7be565d4911ff28ec7" resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.11.tgz#4c7100f53c87f47e793e149427b8bdee44302381"
integrity sha512-kjFgaTB2ckr9lgmkS1dOGRT7kmzpQueydxsxXSHWgICNVE6F/u1PHyeSOyJRpxW0GnrkLq3QM2EUFnQGGga5bg== integrity sha512-MbVheCG0U8gt6xtiipau20N26mD2sXjLChVmRKgO6rbDruxboNMZfEd94q9NP9JRaUsVnjXvY7GMDldoymdXig==
"@angular/core@^9.0.7": "@angular/core@^9.0.7":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.9.tgz#db4241f867d6e14b81ed6e7c50334813c6ebfc10" resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.11.tgz#7a92d27292212ed381be15f9000d4019867f1c7c"
integrity sha512-q/DERgVU6vK2LtTcdVCGGBcoO424WsEfImh3Vcuy+P/ZVmthlDUC/+q+tSKt8MMf4hLpxFDQJE8vUSkktj7QEw== integrity sha512-KAlEedBo761O1aeoTJVziOSHi8Fttk9ipvbDZXYT/o0W/KdVwubxP34g9t5aD8LCcF8+L0z4VLw++HjdJAUpwg==
"@angular/forms@^9.0.7": "@angular/forms@^9.0.7":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.9.tgz#20c9a79d1dcb2cace45df9e2f304b658e02c1687" resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.11.tgz#fa246144649236613598a0471aa7f39b60f986b5"
integrity sha512-r675yImnb/0pY7K5W3V2ITa7YETu1I2AS+bRfII6UQ6gthyeFFOHb5noa7YneC2yqQiM6E4DQmF5ig3daPuFNg== integrity sha512-t4WHrh6ot1r8zdV+3fJz7g9rCok77c9CiIevhH2dR/idxD+HtFR0wqmcBQzsn+rNVB0f0TiSHDrj+TeELIFyWw==
"@angular/language-service@^9.0.7": "@angular/language-service@^9.0.7":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-9.1.9.tgz#332a7e54d5e553b92342b10703dc13aba474a28f" resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-9.1.11.tgz#a2afed4f0167e6f4d3d748214b8e1c27980703ce"
integrity sha512-yT6HPpdAe2mD9HRoTCiWFog1MRJt+0j+CLbI/Ql7C6pH6vbjmfsJ55xMmQ7eS6trsnebpMWTUv1f2GRykv3ygw== integrity sha512-jfm4etbqldj6MTwECwyoAs7tXEAR8K/8P8dBZnsELhY+V8oFidTJI3NY52PB3Ym7leSPorYdOAeUMMuQfPaVxg==
"@angular/localize@^9.1.1": "@angular/localize@^9.1.1":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.9.tgz#0867a82abcdeb6b88cbd4d61e1410f3c63a66ddb" resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.11.tgz#25921d794836fb7a07d284c1ac0ed06c10e77d50"
integrity sha512-U/4axUr99GO3+dRuMIEyJ1FqXauT82x/w7GulWu05qk8ML8MaIQ58RcB/LTJJY1s1qfwdcsyzX2wZrZcwBLKlA== integrity sha512-CrR7RniwJIK3+QKH8nHl35KDAHZn1mp1QAd5vujTWKw6YRLfio7SjM9qIfzw5y4WZuUitTsqKlQT/m/NK146Ag==
dependencies: dependencies:
"@babel/core" "7.8.3" "@babel/core" "7.8.3"
glob "7.1.2" glob "7.1.2"
yargs "15.3.0" yargs "15.3.0"
"@angular/platform-browser-dynamic@^9.0.7": "@angular/platform-browser-dynamic@^9.0.7":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.9.tgz#12f8b05d3c9ef0844df88f3833e29ea1e49ec5e0" resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.11.tgz#82af336b05e0d7b7478a2ca7f6282825b211f340"
integrity sha512-b9MG5MWne+IuL3uLm8jwPhlJzqYaGBGk/qibOqb17T24j1iyrlO7T5bZ8zO6pUy5iT/TahVfHPnPJC1qTK5OmA== integrity sha512-Qw3rfVFF0Wtu+UwraqKPCgTA3uoNPGf4vKSfuCuXTrG0p7j+3mCP59aUv5gGH7GV1UQ++jZRx5pbWF43zrC8Hw==
"@angular/platform-browser@^9.0.7": "@angular/platform-browser@^9.0.7":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.9.tgz#c2fcc50aebfdc268521b407e32dc0d967cb40411" resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.11.tgz#4da8e2a4231d5162304746a39f54cb2d3f241b7c"
integrity sha512-V861X3MxJp1AlMTnkUPldpBLIJbApXF3ka0A5Dq2nVJCyOFeteGkaRWSBgqe2jxmq+LVpJbzcNvtDFXw6mQ0jA== integrity sha512-KDxoiFhW4UD+EqchcKpQVSLwg9Rd3JbWytZLchFV6nH8BFnshfJtw2tyPT8bMhFVG9n9zSR4QSGaozWgoDs9mw==
"@angular/router@^9.0.7": "@angular/router@^9.0.7":
version "9.1.9" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/router/-/router-9.1.9.tgz#5d79d72cb62ea1c04ea70238846653ecf9c4a73c" resolved "https://registry.yarnpkg.com/@angular/router/-/router-9.1.11.tgz#b6d28af55fe5631bbc46f306a0e7866253d4f3b1"
integrity sha512-4u+CWMPB4hCkAsFCEzC94YEWT0wVozqGkc/Dortt2hFaqvZpIegg6iJVZlDxuyDjzFYBPnnbTDdgiTTA8ckfuA== integrity sha512-D6CCDeSK/F6dWSB/a1g/zB072xG5LadLSV8afQ57oX1KHePx21LcoRG4tUtFMMHh/jZXRc9pMQIR1/9FrrXF3Q==
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.1", "@babel/code-frame@^7.8.3": "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.1", "@babel/code-frame@^7.8.3":
version "7.10.1" version "7.10.1"
@ -1489,12 +1489,12 @@
call-me-maybe "^1.0.1" call-me-maybe "^1.0.1"
glob-to-regexp "^0.3.0" glob-to-regexp "^0.3.0"
"@ngtools/webpack@9.1.7": "@ngtools/webpack@9.1.8":
version "9.1.7" version "9.1.8"
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-9.1.7.tgz#4322757b029e1175a3361183c06b31d0576538d8" resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-9.1.8.tgz#50a906047b284098e5cd669e8174c9cfcaf3bafc"
integrity sha512-A7VB2I42Kn+7jl0tDKzGNLAoZLWSqkKo9Hg1bmKpvAAIz+DSbq3uV+JWgGgTprM3tn0lfkVgmqk4H17HKwAOcg== integrity sha512-2Y27PrHLMyrIDmuicjp2OU7KIr9bggwMLNZdjfpcuXlOPP/BYviuhgkkYsfJysrpDRUJUHlXRJG7OJbgyFM7gQ==
dependencies: dependencies:
"@angular-devkit/core" "9.1.7" "@angular-devkit/core" "9.1.8"
enhanced-resolve "4.1.1" enhanced-resolve "4.1.1"
rxjs "6.5.4" rxjs "6.5.4"
webpack-sources "1.4.3" webpack-sources "1.4.3"
@ -1511,26 +1511,54 @@
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
"@nodelib/fs.scandir@2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==
dependencies:
"@nodelib/fs.stat" "2.0.3"
run-parallel "^1.1.9"
"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3"
integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==
"@nodelib/fs.stat@^1.1.2": "@nodelib/fs.stat@^1.1.2":
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
"@schematics/angular@9.1.7": "@nodelib/fs.walk@^1.2.3":
version "9.1.7" version "1.2.4"
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-9.1.7.tgz#b7801a5e20f844da560db81d2971590e8ac090ff" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976"
integrity sha512-ld3WcoMWvup04V3OWioQ+AFGQBzz7IDM4Fxc5+Qc3wILWkDJnNkrc4EmJAow96Ab4/T1+Wl1vof3tV4At0BTzA== integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==
dependencies: dependencies:
"@angular-devkit/core" "9.1.7" "@nodelib/fs.scandir" "2.1.3"
"@angular-devkit/schematics" "9.1.7" fastq "^1.6.0"
"@schematics/update@0.901.7": "@npmcli/move-file@^1.0.1":
version "0.901.7" version "1.0.1"
resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.901.7.tgz#164bff4e97383a0a7d266fe5eb2e1bf41f14dfe9" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464"
integrity sha512-6IpQVFvbu47CrXfqqHAzv2vi7AOdfi1S+SiayXU6FWTeA2wV47H8R60VjxurL8JkDGoVhFgC4+lK6KG++g3dQw== integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==
dependencies: dependencies:
"@angular-devkit/core" "9.1.7" mkdirp "^1.0.4"
"@angular-devkit/schematics" "9.1.7"
"@schematics/angular@9.1.8":
version "9.1.8"
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-9.1.8.tgz#da6cd63b65776b18c43d8515bfca754dd9acdbc9"
integrity sha512-fjyAP9m4aF51OVdksRXCOF8BTyt96PqFmKK9G0kuwOzgfx2gPZNOO3wOZH6xFAMZ09y86VGzasZxZNeDdyN4sQ==
dependencies:
"@angular-devkit/core" "9.1.8"
"@angular-devkit/schematics" "9.1.8"
"@schematics/update@0.901.8":
version "0.901.8"
resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.901.8.tgz#d48be9931a2462062d4d4ac05c4b24b319bc064a"
integrity sha512-v1tEYX6yM5vuwXW7AG7OZ4OtjqRwTo3kd69LVJyOdF/d9HlqaAFU301RuEsAPwOrPqZEQdTwklH1fNJnqgpB/w==
dependencies:
"@angular-devkit/core" "9.1.8"
"@angular-devkit/schematics" "9.1.8"
"@yarnpkg/lockfile" "1.1.0" "@yarnpkg/lockfile" "1.1.0"
ini "1.3.5" ini "1.3.5"
npm-package-arg "^8.0.0" npm-package-arg "^8.0.0"
@ -1631,9 +1659,9 @@
"@types/node" "*" "@types/node" "*"
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
version "2.0.2" version "2.0.3"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
"@types/istanbul-lib-report@*": "@types/istanbul-lib-report@*":
version "3.0.0" version "3.0.0"
@ -1650,18 +1678,18 @@
"@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-coverage" "*"
"@types/istanbul-lib-report" "*" "@types/istanbul-lib-report" "*"
"@types/jest@^25.2.1": "@types/jest@^26.0.0":
version "25.2.3" version "26.0.0"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.0.tgz#a6d7573dffa9c68cbbdf38f2e0de26f159e11134"
integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== integrity sha512-/yeMsH9HQ1RLORlXAwoLXe8S98xxvhNtUz3yrgrwbaxYjT+6SFPZZRksmRKRA6L5vsUtSHeN71viDOTTyYAD+g==
dependencies: dependencies:
jest-diff "^25.2.1" jest-diff "^25.2.1"
pretty-format "^25.2.1" pretty-format "^25.2.1"
"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4": "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4":
version "7.0.4" version "7.0.5"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==
"@types/marked@^0.7.4": "@types/marked@^0.7.4":
version "0.7.4" version "0.7.4"
@ -1674,9 +1702,9 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*", "@types/node@^14.0.1": "@types/node@*", "@types/node@^14.0.1":
version "14.0.11" version "14.0.13"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.11.tgz#61d4886e2424da73b7b25547f59fdcb534c165a3" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.13.tgz#ee1128e881b874c371374c1f72201893616417c9"
integrity sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg== integrity sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==
"@types/normalize-package-data@^2.4.0": "@types/normalize-package-data@^2.4.0":
version "2.4.0" version "2.4.0"
@ -1745,40 +1773,40 @@
"@types/yargs-parser" "*" "@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^3.0.0": "@typescript-eslint/eslint-plugin@^3.0.0":
version "3.1.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.1.0.tgz#4ac00ecca3bbea740c577f1843bc54fa69c3def2" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.2.0.tgz#7fb997f391af32ae6ca1dbe56bcefe4dd30bda14"
integrity sha512-D52KwdgkjYc+fmTZKW7CZpH5ZBJREJKZXRrveMiRCmlzZ+Rw9wRVJ1JAmHQ9b/+Ehy1ZeaylofDB9wwXUt83wg== integrity sha512-t9RTk/GyYilIXt6BmZurhBzuMT9kLKw3fQoJtK9ayv0tXTlznXEAnx07sCLXdkN3/tZDep1s1CEV95CWuARYWA==
dependencies: dependencies:
"@typescript-eslint/experimental-utils" "3.1.0" "@typescript-eslint/experimental-utils" "3.2.0"
functional-red-black-tree "^1.0.1" functional-red-black-tree "^1.0.1"
regexpp "^3.0.0" regexpp "^3.0.0"
semver "^7.3.2" semver "^7.3.2"
tsutils "^3.17.1" tsutils "^3.17.1"
"@typescript-eslint/experimental-utils@3.1.0": "@typescript-eslint/experimental-utils@3.2.0":
version "3.1.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.1.0.tgz#2d5dba7c2ac2a3da3bfa3f461ff64de38587a872" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.2.0.tgz#4dab8fc9f44f059ec073470a81bb4d7d7d51e6c5"
integrity sha512-Zf8JVC2K1svqPIk1CB/ehCiWPaERJBBokbMfNTNRczCbQSlQXaXtO/7OfYz9wZaecNvdSvVADt6/XQuIxhC79w== integrity sha512-UbJBsk+xO9dIFKtj16+m42EvUvsjZbbgQ2O5xSTSfVT1Z3yGkL90DVu0Hd3029FZ5/uBgl+F3Vo8FAcEcqc6aQ==
dependencies: dependencies:
"@types/json-schema" "^7.0.3" "@types/json-schema" "^7.0.3"
"@typescript-eslint/typescript-estree" "3.1.0" "@typescript-eslint/typescript-estree" "3.2.0"
eslint-scope "^5.0.0" eslint-scope "^5.0.0"
eslint-utils "^2.0.0" eslint-utils "^2.0.0"
"@typescript-eslint/parser@^3.0.0": "@typescript-eslint/parser@^3.0.0":
version "3.1.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.1.0.tgz#9c02ba5d88ad2355672f39e6cd4176f172dd47f8" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.2.0.tgz#d9d7867456b1b8ecae9e724269b0bc932f06cbca"
integrity sha512-NcDSJK8qTA2tPfyGiPes9HtVKLbksmuYjlgGAUs7Ld2K0swdWibnCq9IJx9kJN8JJdgUJSorFiGaPHBgH81F/Q== integrity sha512-Vhu+wwdevDLVDjK1lIcoD6ZbuOa93fzqszkaO3iCnmrScmKwyW/AGkzc2UvfE5TCoCXqq7Jyt6SOXjsIlpqF4A==
dependencies: dependencies:
"@types/eslint-visitor-keys" "^1.0.0" "@types/eslint-visitor-keys" "^1.0.0"
"@typescript-eslint/experimental-utils" "3.1.0" "@typescript-eslint/experimental-utils" "3.2.0"
"@typescript-eslint/typescript-estree" "3.1.0" "@typescript-eslint/typescript-estree" "3.2.0"
eslint-visitor-keys "^1.1.0" eslint-visitor-keys "^1.1.0"
"@typescript-eslint/typescript-estree@3.1.0": "@typescript-eslint/typescript-estree@3.2.0":
version "3.1.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.1.0.tgz#eaff52d31e615e05b894f8b9d2c3d8af152a5dd2" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.2.0.tgz#c735f1ca6b4d3cd671f30de8c9bde30843e7ead8"
integrity sha512-+4nfYauqeQvK55PgFrmBWFVYb6IskLyOosYEmhH3mSVhfBp9AIJnjExdgDmKWoOBHRcPM8Ihfm2BFpZf0euUZQ== integrity sha512-uh+Y2QO7dxNrdLw7mVnjUqkwO/InxEqwN0wF+Za6eo3coxls9aH9kQ/5rSvW2GcNanebRTmsT5w1/92lAOb1bA==
dependencies: dependencies:
debug "^4.1.1" debug "^4.1.1"
eslint-visitor-keys "^1.1.0" eslint-visitor-keys "^1.1.0"
@ -2003,9 +2031,9 @@ acorn@^6.2.1:
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
acorn@^7.0.0, acorn@^7.1.1, acorn@^7.2.0: acorn@^7.0.0, acorn@^7.1.1, acorn@^7.2.0:
version "7.2.0" version "7.3.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd"
integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==
adm-zip@^0.4.9: adm-zip@^0.4.9:
version "0.4.14" version "0.4.14"
@ -2256,6 +2284,11 @@ array-union@^1.0.1:
dependencies: dependencies:
array-uniq "^1.0.1" array-uniq "^1.0.1"
array-union@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
array-uniq@^1.0.1: array-uniq@^1.0.1:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
@ -2865,7 +2898,7 @@ cacache@15.0.0:
tar "^6.0.1" tar "^6.0.1"
unique-filename "^1.1.1" unique-filename "^1.1.1"
cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: cacache@^12.0.0, cacache@^12.0.2:
version "12.0.4" version "12.0.4"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
@ -2910,6 +2943,29 @@ cacache@^13.0.1:
ssri "^7.0.0" ssri "^7.0.0"
unique-filename "^1.1.1" unique-filename "^1.1.1"
cacache@^15.0.4:
version "15.0.4"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.4.tgz#b2c23cf4ac4f5ead004fb15a0efb0a20340741f1"
integrity sha512-YlnKQqTbD/6iyoJvEY3KJftjrdBYroCbxxYXzhOzsFLWlp6KX4BOlEf4mTx0cMUfVaTS3ENL2QtDWeRYoGLkkw==
dependencies:
"@npmcli/move-file" "^1.0.1"
chownr "^2.0.0"
fs-minipass "^2.0.0"
glob "^7.1.4"
infer-owner "^1.0.4"
lru-cache "^5.1.1"
minipass "^3.1.1"
minipass-collect "^1.0.2"
minipass-flush "^1.0.5"
minipass-pipeline "^1.2.2"
mkdirp "^1.0.3"
p-map "^4.0.0"
promise-inflight "^1.0.1"
rimraf "^3.0.2"
ssri "^8.0.0"
tar "^6.0.2"
unique-filename "^1.1.1"
cache-base@^1.0.1: cache-base@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@ -2993,9 +3049,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0" lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001043: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001043:
version "1.0.30001078" version "1.0.30001081"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001078.tgz#e1b6e2ae327b6a1ec11f65ec7a0dde1e7093074c" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001081.tgz#40615a3c416a047c5a4d45673e5257bf128eb3b5"
integrity sha512-sF12qXe9VMm32IEf/+NDvmTpwJaaU7N1igpiH2FdI4DyABJSsOqG3ZAcFvszLkoLoo1y6VJLMYivukUAxaMASw== integrity sha512-iZdh3lu09jsUtLE6Bp8NAbJskco4Y3UDtkR3GTCJGsbMowBU5IWDFF79sV2ws7lSqTzWyKazxam2thasHymENQ==
canonical-path@1.0.0: canonical-path@1.0.0:
version "1.0.0" version "1.0.0"
@ -3043,9 +3099,9 @@ chalk@^3.0.0:
supports-color "^7.1.0" supports-color "^7.1.0"
chalk@^4.0.0: chalk@^4.0.0:
version "4.0.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
dependencies: dependencies:
ansi-styles "^4.1.0" ansi-styles "^4.1.0"
supports-color "^7.1.0" supports-color "^7.1.0"
@ -3519,23 +3575,22 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
copy-webpack-plugin@5.1.1: copy-webpack-plugin@6.0.2:
version "5.1.1" version "6.0.2"
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.2.tgz#10efc6ad219a61acbf2f5fb50af83da38431bc34"
integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== integrity sha512-9Gm8X0c6eXlKnmltMPFCBeGOKjtcRIyTt4VaO3k1TkNgVTe5Ov2lYsYVuyLp0kp8DItO3apewflM+1GYgh6V2Q==
dependencies: dependencies:
cacache "^12.0.3" cacache "^15.0.4"
find-cache-dir "^2.1.0" fast-glob "^3.2.2"
glob-parent "^3.1.0" find-cache-dir "^3.3.1"
globby "^7.1.1" glob-parent "^5.1.1"
is-glob "^4.0.1" globby "^11.0.1"
loader-utils "^1.2.3" loader-utils "^2.0.0"
minimatch "^3.0.4"
normalize-path "^3.0.0" normalize-path "^3.0.0"
p-limit "^2.2.1" p-limit "^2.3.0"
schema-utils "^1.0.0" schema-utils "^2.7.0"
serialize-javascript "^2.1.2" serialize-javascript "^3.1.0"
webpack-log "^2.0.0" webpack-sources "^1.4.3"
core-js-compat@^3.6.2: core-js-compat@^3.6.2:
version "3.6.5" version "3.6.5"
@ -4165,12 +4220,12 @@ dir-glob@2.0.0:
arrify "^1.0.1" arrify "^1.0.1"
path-type "^3.0.0" path-type "^3.0.0"
dir-glob@^2.0.0: dir-glob@^3.0.1:
version "2.2.2" version "3.0.1"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
dependencies: dependencies:
path-type "^3.0.0" path-type "^4.0.0"
dns-equal@^1.0.0: dns-equal@^1.0.0:
version "1.0.0" version "1.0.0"
@ -4313,9 +4368,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.413: electron-to-chromium@^1.3.413:
version "1.3.464" version "1.3.469"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.464.tgz#fe13feaa08f6f865d3c89d5d72e54c194f463aa5" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.469.tgz#05a06ec9c915127ed6c9f5b657cd1d7e11a3f944"
integrity sha512-Oo+0+CN9d2z6FToQW6Hwvi9ez09Y/usKwr0tsDsyg43a871zVJCi1nR0v03djLbRNcaCKjtrnVf2XJhTxEpPCg== integrity sha512-O9JM6ZsFhS0uy0S2Y3G8EoNfqio3srdxCuwuJh8tKgQKa6rf7je/xQ3TIoiEaEtpf2/qFFLAGt/xB4MjuUZqRw==
elliptic@^6.0.0, elliptic@^6.5.2: elliptic@^6.0.0, elliptic@^6.5.2:
version "6.5.2" version "6.5.2"
@ -4941,9 +4996,9 @@ fancy-log@^1.3.2, fancy-log@^1.3.3:
time-stamp "^1.0.0" time-stamp "^1.0.0"
fast-deep-equal@^3.1.1: fast-deep-equal@^3.1.1:
version "3.1.1" version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-diff@1.1.2: fast-diff@1.1.2:
version "1.1.2" version "1.1.2"
@ -4967,6 +5022,18 @@ fast-glob@^2.0.2:
merge2 "^1.2.3" merge2 "^1.2.3"
micromatch "^3.1.10" micromatch "^3.1.10"
fast-glob@^3.1.1, fast-glob@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d"
integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
"@nodelib/fs.walk" "^1.2.3"
glob-parent "^5.1.0"
merge2 "^1.3.0"
micromatch "^4.0.2"
picomatch "^2.2.1"
fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@ -4977,6 +5044,13 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
fastq@^1.6.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481"
integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==
dependencies:
reusify "^1.0.4"
faye-websocket@0.11.x, faye-websocket@~0.11.1: faye-websocket@0.11.x, faye-websocket@~0.11.1:
version "0.11.3" version "0.11.3"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
@ -5060,7 +5134,7 @@ finalhandler@1.1.2, finalhandler@~1.1.2:
statuses "~1.5.0" statuses "~1.5.0"
unpipe "~1.0.0" unpipe "~1.0.0"
find-cache-dir@3.3.1, find-cache-dir@^3.2.0: find-cache-dir@3.3.1, find-cache-dir@^3.2.0, find-cache-dir@^3.3.1:
version "3.3.1" version "3.3.1"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
@ -5376,7 +5450,7 @@ glob-parent@^3.1.0:
is-glob "^3.1.0" is-glob "^3.1.0"
path-dirname "^1.0.0" path-dirname "^1.0.0"
glob-parent@^5.0.0, glob-parent@~5.1.0: glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0:
version "5.1.1" version "5.1.1"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
@ -5431,6 +5505,18 @@ globals@^12.1.0:
dependencies: dependencies:
type-fest "^0.8.1" type-fest "^0.8.1"
globby@^11.0.1:
version "11.0.1"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
dependencies:
array-union "^2.1.0"
dir-glob "^3.0.1"
fast-glob "^3.1.1"
ignore "^5.1.4"
merge2 "^1.3.0"
slash "^3.0.0"
globby@^5.0.0: globby@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
@ -5454,18 +5540,6 @@ globby@^6.1.0:
pify "^2.0.0" pify "^2.0.0"
pinkie-promise "^2.0.0" pinkie-promise "^2.0.0"
globby@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA=
dependencies:
array-union "^1.0.1"
dir-glob "^2.0.0"
glob "^7.1.2"
ignore "^3.3.5"
pify "^3.0.0"
slash "^1.0.0"
globby@^8.0.1: globby@^8.0.1:
version "8.0.2" version "8.0.2"
resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d"
@ -5859,9 +5933,9 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13:
safer-buffer ">= 2.1.2 < 3" safer-buffer ">= 2.1.2 < 3"
iconv-lite@^0.5.1: iconv-lite@^0.5.1:
version "0.5.1" version "0.5.2"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.1.tgz#b2425d3c7b18f7219f2ca663d103bddb91718d64" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8"
integrity sha512-ONHr16SQvKZNSqjQT9gy5z24Jw+uqfO02/ngBSBoqChZ+W8qXX7GPRa1RoUnzGADw8K63R1BXUMzarCVQBpY8Q== integrity sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==
dependencies: dependencies:
safer-buffer ">= 2.1.2 < 3" safer-buffer ">= 2.1.2 < 3"
@ -5899,6 +5973,11 @@ ignore@^4.0.6:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
ignore@^5.1.4:
version "5.1.8"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
image-size@~0.5.0: image-size@~0.5.0:
version "0.5.5" version "0.5.5"
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
@ -7221,10 +7300,10 @@ less-loader@5.0.0:
loader-utils "^1.1.0" loader-utils "^1.1.0"
pify "^4.0.1" pify "^4.0.1"
less@3.11.1: less@3.11.3:
version "3.11.1" version "3.11.3"
resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" resolved "https://registry.yarnpkg.com/less/-/less-3.11.3.tgz#2d853954fcfe0169a8af869620bcaa16563dcc1c"
integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== integrity sha512-VkZiTDdtNEzXA3LgjQiC3D7/ejleBPFVvq+aRI9mIj+Zhmif5TvFPM244bT4rzkvOCvJ9q4zAztok1M7Nygagw==
dependencies: dependencies:
clone "^2.1.2" clone "^2.1.2"
tslib "^1.10.0" tslib "^1.10.0"
@ -7232,8 +7311,8 @@ less@3.11.1:
errno "^0.1.1" errno "^0.1.1"
graceful-fs "^4.1.2" graceful-fs "^4.1.2"
image-size "~0.5.0" image-size "~0.5.0"
make-dir "^2.1.0"
mime "^1.4.1" mime "^1.4.1"
mkdirp "^0.5.0"
promise "^7.1.1" promise "^7.1.1"
request "^2.83.0" request "^2.83.0"
source-map "~0.6.0" source-map "~0.6.0"
@ -7296,9 +7375,9 @@ lines-and-columns@^1.1.6:
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
lint-staged@^10.1.7: lint-staged@^10.1.7:
version "10.2.9" version "10.2.10"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.9.tgz#6013ecfa80829cd422446b545fd30a96bca3098c" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.10.tgz#f0f78bf8786bbe90e1775a0dc540f7f12b6a79b2"
integrity sha512-ziRAuXEqvJLSXg43ezBpHxRW8FOJCXISaXU//BWrxRrp5cBdRkIx7g5IsB3OI45xYGE0S6cOacfekSjDyDKF2g== integrity sha512-dgelFaNH6puUGAcU+OVMgbfpKSerNYsPSn6+nlbRDjovL0KigpsVpCu0PFZG6BJxX8gnHJqaZlR9krZamQsb0w==
dependencies: dependencies:
chalk "^4.0.0" chalk "^4.0.0"
cli-truncate "2.1.0" cli-truncate "2.1.0"
@ -7530,7 +7609,7 @@ magic-string@0.25.7, magic-string@^0.25.0:
dependencies: dependencies:
sourcemap-codec "^1.4.4" sourcemap-codec "^1.4.4"
make-dir@^2.0.0: make-dir@^2.0.0, make-dir@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
@ -7670,7 +7749,7 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
merge2@^1.2.3: merge2@^1.2.3, merge2@^1.3.0:
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
@ -7871,7 +7950,7 @@ mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1, mkdirp@~0.5.x:
dependencies: dependencies:
minimist "^1.2.5" minimist "^1.2.5"
mkdirp@1.x, mkdirp@^1.0.3: mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
@ -8497,7 +8576,7 @@ p-limit@^1.1.0:
dependencies: dependencies:
p-try "^1.0.0" p-try "^1.0.0"
p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.2.2: p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2, p-limit@^2.3.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
@ -9958,6 +10037,11 @@ retry@^0.12.0:
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
rgb-regex@^1.0.1: rgb-regex@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
@ -9975,7 +10059,7 @@ rimraf@2.6.3:
dependencies: dependencies:
glob "^7.1.3" glob "^7.1.3"
rimraf@3.0.2, rimraf@^3.0.0: rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
@ -10014,6 +10098,11 @@ run-async@^2.4.0:
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
run-parallel@^1.1.9:
version "1.1.9"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
run-queue@^1.0.0, run-queue@^1.0.3: run-queue@^1.0.0, run-queue@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
@ -10123,7 +10212,7 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0" ajv-errors "^1.0.0"
ajv-keywords "^3.1.0" ajv-keywords "^3.1.0"
schema-utils@^2.5.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5: schema-utils@^2.5.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5, schema-utils@^2.7.0:
version "2.7.0" version "2.7.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
@ -11070,7 +11159,7 @@ tar@^4.4.10:
safe-buffer "^5.1.2" safe-buffer "^5.1.2"
yallist "^3.0.3" yallist "^3.0.3"
tar@^6.0.1: tar@^6.0.1, tar@^6.0.2:
version "6.0.2" version "6.0.2"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39"
integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==
@ -11345,9 +11434,9 @@ ts-jest@^26.0.0:
yargs-parser "18.x" yargs-parser "18.x"
ts-mockito@^2.5.0: ts-mockito@^2.5.0:
version "2.5.0" version "2.6.1"
resolved "https://registry.yarnpkg.com/ts-mockito/-/ts-mockito-2.5.0.tgz#ad853051f2d116dfcaf6de6b0a1df2c82eda2d1f" resolved "https://registry.yarnpkg.com/ts-mockito/-/ts-mockito-2.6.1.tgz#bc9ee2619033934e6fad1c4455aca5b5ace34e73"
integrity sha512-b3qUeMfghRq5k5jw3xNJcnU9RKhqKnRn0k9v9QkN+YpuawrFuMIiGwzFZCpdi5MHy26o7YPnK8gag2awURl3nA== integrity sha512-qU9m/oEBQrKq5hwfbJ7MgmVN5Gu6lFnIGWvpxSjrqq6YYEVv+RwVFWySbZMBgazsWqv6ctAyVBpo9TmAxnOEKw==
dependencies: dependencies:
lodash "^4.17.5" lodash "^4.17.5"
@ -11486,16 +11575,16 @@ typescript@3.6.5:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.5.tgz#dae20114a7b4ff4bd642db9c8c699f2953e8bbdb" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.5.tgz#dae20114a7b4ff4bd642db9c8c699f2953e8bbdb"
integrity sha512-BEjlc0Z06ORZKbtcxGrIvvwYs5hAnuo6TKdNFL55frVDlB+na3z5bsLhFaIxmT+dPWgBIjMo6aNnTOgHHmHgiQ== integrity sha512-BEjlc0Z06ORZKbtcxGrIvvwYs5hAnuo6TKdNFL55frVDlB+na3z5bsLhFaIxmT+dPWgBIjMo6aNnTOgHHmHgiQ==
typescript@<3.9.0:
version "3.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
typescript@^2.4.2: typescript@^2.4.2:
version "2.9.2" version "2.9.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c"
integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==
typescript@~3.8.3:
version "3.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
uglify-js@^3.1.4: uglify-js@^3.1.4:
version "3.9.4" version "3.9.4"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.4.tgz#867402377e043c1fc7b102253a22b64e5862401b" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.4.tgz#867402377e043c1fc7b102253a22b64e5862401b"
@ -12100,9 +12189,9 @@ widest-line@^3.1.0:
string-width "^4.0.0" string-width "^4.0.0"
windows-release@^3.1.0: windows-release@^3.1.0:
version "3.3.0" version "3.3.1"
resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.1.tgz#cb4e80385f8550f709727287bf71035e209c4ace"
integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ== integrity sha512-Pngk/RDCaI/DkuHPlGTdIkDiTAnAkyMjoQMZqRsxydNl1qGXNIoZrB7RK8g53F2tEgQBMqQJHQdYZuQEEAu54A==
dependencies: dependencies:
execa "^1.0.0" execa "^1.0.0"