diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 974e9088..4837d81f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,5 @@ -image: weboaks/node-karma-protractor-chrome +# image: weboaks/node-karma-protractor-chrome +image: node:latest stages: - pages @@ -13,7 +14,7 @@ pages: stage: pages script: - yarn install --pure-lockfile - - yarn build + - yarn build:prod:gitlabpage - mv dist/framadate/ public/ artifacts: paths: diff --git a/backend-api-endpoints-doc.txt b/backend-api-endpoints-doc.txt index a134d711..65f3afa5 100644 --- a/backend-api-endpoints-doc.txt +++ b/backend-api-endpoints-doc.txt @@ -40,7 +40,8 @@ app.swagger GET ANY ANY /api/doc.json api_get_poll_slug GET ANY ANY /polls/slug/{id}/{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_update_vote_stack PATCH ANY ANY /votes-stack/{id}/token/{modifierToken} + api_test-mail-polls GET ANY ANY /polls/mail/test-mail-polls/{emailChoice} + api_update_vote_stack PATCH ANY ANY /polls/{slug}/answers/{pseudo}/token/{modifierToken} + -------------------------- -------- -------- ------ ------------------------------------------------ */ diff --git a/mocks/db.json b/mocks/db.json index eef2dd98..a9756ba2 100644 --- a/mocks/db.json +++ b/mocks/db.json @@ -9,6 +9,7 @@ "id": 1, "slug": "picnic", "configuration": { + "id": 1, "isAboutDate": true, "isProtectedByPassword": false, "isOwnerNotifiedByEmailOnNewVote": false, @@ -20,51 +21,13 @@ }, "ownerId": 1, "question": "Quelle date pour le picnic ?", - "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" } - ] - } - ] + "description": "Gros badass picnic en plein air ! Come on !" }, { "id": 2, "slug": "vacances", "configuration": { + "id": 2, "isAboutDate": true, "isProtectedByPassword": false, "isOwnerNotifiedByEmailOnNewVote": false, @@ -76,50 +39,7 @@ }, "ownerId": 2, "question": "On fait quoi pendant les vacances ?", - "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" } - ] - } - ] + "description": "Vacances en famille" } ], "choices": [ @@ -129,9 +49,15 @@ "pollSlug": "picnic", "label": "samedi", "participants": [ - ["YES", ["TOTO", "TITI"]], - ["NO", ["TETE"]], - ["MAYBE", ["TATA"]] + [ + "YES", + [ + { "pseudo": "TOTO", "token": "TOTO-TOKEN" }, + { "pseudo": "TITI", "token": "TITI-TOKEN" } + ] + ], + ["NO", []], + ["MAYBE", [{ "pseudo": "TATA", "token": "TATA-TOKEN" }]] ] }, { @@ -140,9 +66,15 @@ "pollSlug": "picnic", "label": "dimanche", "participants": [ - ["YES", ["TOTO", "TITI"]], - ["NO", ["TETE"]], - ["MAYBE", ["TATA"]] + [ + "YES", + [ + { "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", "label": "bateau", "participants": [ - ["YES", ["TOTO", "TITI"]], - ["NO", ["TETE"]], - ["MAYBE", ["TATA"]] + [ + "YES", + [ + { "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", "label": "montagne", "participants": [ - ["YES", ["TOTO", "TITI"]], - ["NO", ["TETE"]], - ["MAYBE", ["TATA"]] + [ + "YES", + [ + { "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", "label": "quad", "participants": [ - ["YES", ["TOTO", "TITI"]], - ["NO", ["TETE"]], - ["MAYBE", ["TATA"]] + [ + "YES", + [ + { "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": [ { "id": 1, diff --git a/mocks/routes.json b/mocks/routes.json index 45524edf..8b08f399 100644 --- a/mocks/routes.json +++ b/mocks/routes.json @@ -1,8 +1,7 @@ { "/api/v1/*": "/$1", "/owners/:email/": "/owners?email=:email", - "/choices": "/choices?_embed=answers", "/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" } diff --git a/package.json b/package.json index ec19d7f0..65cbb1d9 100644 --- a/package.json +++ b/package.json @@ -5,13 +5,13 @@ "scripts": { "ng": "ng", "start": "ng serve", - "build": "ng build --prod --progress=true", - "build-prod-stats": "ng build --prod --stats-json", - "build:demo": "ng build --crossOrigin=anonymous --extractCss=true --progress=true --prod && npm run package", - "build:demobliss": "ng build --crossOrigin=anonymous --extractCss=true --baseHref=https://framadate-api.cipherbliss.com --progress=true --prod && npm run package", + "build:prod": "ng build --prod", + "build:prod:stats": "ng build --prod --stats-json", + "build:prod:gitlabpage": "ng build --prod --baseHref=/framadate/funky-framadate-front/", + "build:prod:demobliss": "ng build --prod --baseHref=https://framadate-api.cipherbliss.com", "test": "jest", "test:watch": "jest --watch", - "test:ci": "jest --runInBand", + "test:ci": "jest --ci", "lint": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}\"", "e2e": "ng e2e", "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-typescript": "^7.9.0", "@compodoc/compodoc": "^1.1.11", - "@types/jest": "^25.2.1", + "@types/jest": "^26.0.0", "@types/node": "^14.0.1", "@types/uuid": "^8.0.0", "@typescript-eslint/eslint-plugin": "^3.0.0", @@ -86,7 +86,7 @@ "ts-jest": "^26.0.0", "ts-mockito": "^2.5.0", "ts-node": "^8.10.1", - "typescript": "~3.8.3" + "typescript": "<3.9.0" }, "husky": { "hooks": { diff --git a/src/app/app.component.ts b/src/app/app.component.ts index c9586d99..3e650944 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -32,7 +32,7 @@ export class AppComponent implements OnInit, OnDestroy { if (!environment.production) { this.appTitle += ' [DEV]'; // 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.languageService.configureAndInitTranslations(); diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 9667d072..8cc30bc2 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -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 localeEn from '@angular/common/locales/en'; import localeFr from '@angular/common/locales/fr'; @@ -64,7 +64,7 @@ export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { useDefaultLang: false, }), ], - providers: [{ provide: APP_BASE_HREF, useValue: environment.baseHref }, Title, TranslateService], + providers: [Title, TranslateService], bootstrap: [AppComponent], }) export class AppModule {} diff --git a/src/app/core/enums/response-type.enum.ts b/src/app/core/enums/answer.enum.ts similarity index 63% rename from src/app/core/enums/response-type.enum.ts rename to src/app/core/enums/answer.enum.ts index 69d62fd4..f807d8b0 100644 --- a/src/app/core/enums/response-type.enum.ts +++ b/src/app/core/enums/answer.enum.ts @@ -1,4 +1,4 @@ -export enum ResponseType { +export enum Answer { YES = 'YES', NO = 'NO', MAYBE = 'MAYBE', diff --git a/src/app/core/models/choice.model.ts b/src/app/core/models/choice.model.ts index 591c045e..445fd15d 100644 --- a/src/app/core/models/choice.model.ts +++ b/src/app/core/models/choice.model.ts @@ -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 { constructor( public label: string, public imageUrl?: string, - public participants: Map> = new Map>([ - [ResponseType.YES, new Set()], - [ResponseType.NO, new Set()], - [ResponseType.MAYBE, new Set()], + public participants: Map> = new Map>([ + [Answer.YES, new Set()], + [Answer.NO, new Set()], + [Answer.MAYBE, new Set()], ]), - public counts: Map = new Map([ - [ResponseType.YES, 0], - [ResponseType.NO, 0], - [ResponseType.MAYBE, 0], + public counts: Map = new Map([ + [Answer.YES, 0], + [Answer.NO, 0], + [Answer.MAYBE, 0], ]) ) {} - public updateParticipation(pseudo: string, responseType: ResponseType): void { - this.removeParticipant(pseudo); - this.participants.get(responseType).add(pseudo); + public updateParticipation(user: User, responseType: Answer): void { + this.removeParticipant(user); + this.participants.get(responseType).add(user); this.updateCounts(); } - public removeParticipant(pseudo: string): void { - for (const responseType of Object.values(ResponseType)) { - if (this.participants.get(responseType).has(pseudo)) { - this.participants.get(responseType).delete(pseudo); + public removeParticipant(user: User): void { + for (const responseType of Object.values(Answer)) { + if (this.participants.get(responseType).has(user)) { + this.participants.get(responseType).delete(user); } } } 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); } } diff --git a/src/app/core/models/poll-user-answers.model.ts b/src/app/core/models/poll-user-answers.model.ts deleted file mode 100644 index e7bb11b4..00000000 --- a/src/app/core/models/poll-user-answers.model.ts +++ /dev/null @@ -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) {} -} diff --git a/src/app/core/models/poll.model.ts b/src/app/core/models/poll.model.ts index f32b6800..9eca98b7 100644 --- a/src/app/core/models/poll.model.ts +++ b/src/app/core/models/poll.model.ts @@ -1,8 +1,6 @@ import { environment } from 'src/environments/environment'; 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 { Comment } from './comment.model'; import { Configuration } from './configuration.model'; @@ -16,12 +14,7 @@ export class Poll { public slug: string = uuidv4(), public configuration: Configuration = new Configuration(), public comments: Comment[] = [], - public choices: Choice[] = [], - public answersByChoiceByParticipant: Map> = new Map< - string, - Map - >(), - public answers: PollUserAnswers[] = [] + public choices: Choice[] = [] ) {} public getAdministrationUrl(): string { @@ -33,18 +26,7 @@ export class Poll { } public static adaptFromLocalJsonServer( - item: Pick< - Poll, - | 'owner' - | 'question' - | 'description' - | 'slug' - | 'configuration' - | 'comments' - | 'choices' - | 'answersByChoiceByParticipant' - | 'answers' - > + item: Pick ): Poll { const poll = new Poll( 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)) ) .sort(Comment.sortChronologically), - item.choices.map((c: Pick) => { + item.choices.map((c: Pick) => { const choice = new Choice(c.label, c.imageUrl, new Map(c.participants)); choice.participants.forEach((value, key) => { choice.participants.set(key, new Set(value)); }); choice.updateCounts(); + console.log({ 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()); - } - 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) => - new PollUserAnswers(pollUserAnswers.pseudo, pollUserAnswers.token, pollUserAnswers.responsesByChoices) - ); - return poll; } } diff --git a/src/app/core/models/question.model.ts b/src/app/core/models/question.model.ts deleted file mode 100644 index 6ed1805a..00000000 --- a/src/app/core/models/question.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export class Question { - constructor(public label: string, public description: string) {} -} diff --git a/src/app/core/models/user.model.ts b/src/app/core/models/user.model.ts index ea3a57cf..ce98dd67 100644 --- a/src/app/core/models/user.model.ts +++ b/src/app/core/models/user.model.ts @@ -2,5 +2,11 @@ import { UserRole } from '../enums/user-role.enum'; import { Poll } from './poll.model'; 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 + ) {} } diff --git a/src/app/core/services/api.service.ts b/src/app/core/services/api.service.ts index 5823abb6..9e21b4d3 100644 --- a/src/app/core/services/api.service.ts +++ b/src/app/core/services/api.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import axios, { AxiosInstance, AxiosResponse } from 'axios'; 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'; @Injectable({ @@ -40,7 +40,7 @@ export class ApiService { pollId: string, choiceLabel: string, pseudo: string, - response: ResponseType + response: Answer ): Promise { try { return await this.axiosInstance.post(`${this.pollsEndpoint}/${pollId}${this.answersEndpoint}`, { @@ -151,17 +151,12 @@ export class ApiService { //////////// // UPDATE // //////////// - public async updateAnswer( - slug: string, - choiceLabel: string, - pseudo: string, - response: ResponseType - ): Promise { + public async updateAnswer(slug: string, choiceLabel: string, pseudo: string, answer: Answer): Promise { try { return await this.axiosInstance.patch(`${this.pollsEndpoint}/${slug}${this.answersEndpoint}`, { choiceLabel, pseudo, - response, + answer, }); } catch (error) { this.handleError(error); diff --git a/src/app/core/services/mocking.service.ts b/src/app/core/services/mocking.service.ts index 291c911c..c5b81f9c 100644 --- a/src/app/core/services/mocking.service.ts +++ b/src/app/core/services/mocking.service.ts @@ -2,7 +2,6 @@ import { Injectable } from '@angular/core'; import { Choice } from '../models/choice.model'; import { Poll } from '../models/poll.model'; -import { Question } from '../models/question.model'; import { User } from '../models/user.model'; import { PollService } from './poll.service'; import { UserService } from './user.service'; diff --git a/src/app/core/services/poll.service.ts b/src/app/core/services/poll.service.ts index d788d4ce..c442f681 100644 --- a/src/app/core/services/poll.service.ts +++ b/src/app/core/services/poll.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; 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 { Poll } from '../models/poll.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(); - 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.apiService.createParticipation(currentPoll.slug, choice.label, user.pseudo, response); this.messageDisplayerService.display( @@ -71,4 +71,37 @@ export class PollService { 'Les commentaires de ce sondage ont été supprimés.' ); } + + public buildAnswersByChoiceLabelByPseudo(poll: Poll): Map> { + const pseudos: Set = new Set(); + poll.choices.forEach((choice: Choice) => { + choice.participants.forEach((users: Set) => { + users.forEach((user: User) => { + pseudos.add(user.pseudo); + }); + }); + }); + + const list = new Map>(); + pseudos.forEach((pseudo: string) => { + list.set( + pseudo, + new Map( + poll.choices.map((choice: Choice) => { + return [choice.label, undefined]; + }) + ) + ); + }); + + poll.choices.forEach((choice: Choice) => { + choice.participants.forEach((users: Set, answer: Answer) => { + users.forEach((user: User) => { + list.get(user.pseudo).set(choice.label, answer); + }); + }); + }); + + return list; + } } diff --git a/src/app/core/services/user.service.ts b/src/app/core/services/user.service.ts index 89c4569b..a0cfa258 100644 --- a/src/app/core/services/user.service.ts +++ b/src/app/core/services/user.service.ts @@ -10,7 +10,7 @@ import { ApiService } from './api.service'; providedIn: 'root', }) export class UserService { - public anonymous: User = new User('', '', UserRole.ANONYMOUS); + public anonymous: User = new User('', '', [], UserRole.ANONYMOUS); private _user: BehaviorSubject = new BehaviorSubject(this.anonymous); public readonly user: Observable = this._user.asObservable(); diff --git a/src/app/features/consultation/poll-results-compact/poll-results-compact.component.html b/src/app/features/consultation/poll-results-compact/poll-results-compact.component.html index 1b7c7657..f7e94125 100644 --- a/src/app/features/consultation/poll-results-compact/poll-results-compact.component.html +++ b/src/app/features/consultation/poll-results-compact/poll-results-compact.component.html @@ -7,11 +7,11 @@
diff --git a/src/app/features/consultation/poll-results-compact/poll-results-compact.component.ts b/src/app/features/consultation/poll-results-compact/poll-results-compact.component.ts index b1498838..c4217fa4 100644 --- a/src/app/features/consultation/poll-results-compact/poll-results-compact.component.ts +++ b/src/app/features/consultation/poll-results-compact/poll-results-compact.component.ts @@ -1,6 +1,6 @@ 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 { Poll } from '../../../core/models/poll.model'; import { ModalService } from '../../../core/services/modal.service'; @@ -14,7 +14,7 @@ export class PollResultsCompactComponent implements OnInit { @Input() public poll: Poll; public isModalOpened = false; public choiceInModal: Choice; - public responseTypeEnum = ResponseType; + public answerEnum = Answer; constructor(private modalService: ModalService) {} diff --git a/src/app/features/consultation/poll-results-detailed/poll-results-detailed.component.html b/src/app/features/consultation/poll-results-detailed/poll-results-detailed.component.html index ddbed9d3..20f19d21 100644 --- a/src/app/features/consultation/poll-results-detailed/poll-results-detailed.component.html +++ b/src/app/features/consultation/poll-results-detailed/poll-results-detailed.component.html @@ -6,7 +6,7 @@ - + {{ item.key }} {{ subItem.value }} @@ -14,22 +14,3 @@ -
- - - - - - - - - - - - - - - -
{{ choice.label }}
{{ answer.pseudo }} - {{ response.value }} -
diff --git a/src/app/features/consultation/poll-results-detailed/poll-results-detailed.component.ts b/src/app/features/consultation/poll-results-detailed/poll-results-detailed.component.ts index 43decf4a..2a78ef9b 100644 --- a/src/app/features/consultation/poll-results-detailed/poll-results-detailed.component.ts +++ b/src/app/features/consultation/poll-results-detailed/poll-results-detailed.component.ts @@ -1,6 +1,8 @@ import { Component, Input, OnInit } from '@angular/core'; +import { Answer } from '../../../core/enums/answer.enum'; import { Poll } from '../../../core/models/poll.model'; +import { PollService } from '../../../core/services/poll.service'; @Component({ selector: 'app-poll-results-detailed', @@ -10,7 +12,11 @@ import { Poll } from '../../../core/models/poll.model'; export class PollResultsDetailedComponent implements OnInit { @Input() public poll: Poll; - constructor() {} + constructor(private pollService: PollService) {} ngOnInit(): void {} + + public buildAnswersByChoiceLabelByPseudo(): Map> { + return this.pollService.buildAnswersByChoiceLabelByPseudo(this.poll); + } } diff --git a/src/app/features/participation/add-answer/add-answer.component.html b/src/app/features/participation/add-answer/add-answer.component.html index 505f057e..02c4751d 100644 --- a/src/app/features/participation/add-answer/add-answer.component.html +++ b/src/app/features/participation/add-answer/add-answer.component.html @@ -28,11 +28,11 @@
diff --git a/src/app/features/participation/add-answer/add-answer.component.ts b/src/app/features/participation/add-answer/add-answer.component.ts index 14f6012b..e67d1643 100644 --- a/src/app/features/participation/add-answer/add-answer.component.ts +++ b/src/app/features/participation/add-answer/add-answer.component.ts @@ -1,5 +1,5 @@ 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 { Poll } from '../../../core/models/poll.model'; @@ -15,15 +15,15 @@ export class AddAnswerComponent implements OnInit { @Input() user: User; @Input() poll: Poll; @Input() choice: Choice; - public responseTypeEnum = ResponseType; - public response: ResponseType; + public answerEnum = Answer; + public response: Answer; constructor(private pollService: PollService) {} ngOnInit(): void {} public vote(response: string): void { - this.response = response as ResponseType; + this.response = response as Answer; console.log(this.response); this.pollService.saveParticipation(this.choice, this.user, this.response); } diff --git a/src/app/shared/components/choice-details/choice-details.component.html b/src/app/shared/components/choice-details/choice-details.component.html index a3a9fac2..6774652e 100644 --- a/src/app/shared/components/choice-details/choice-details.component.html +++ b/src/app/shared/components/choice-details/choice-details.component.html @@ -5,13 +5,13 @@ - {{ choice.counts.get(responseTypeEnum.YES) }} + {{ choice.counts.get(answerEnum.YES) }} - - {{ pseudo }} + + {{ user.pseudo }} @@ -22,13 +22,13 @@ - {{ choice.counts.get(responseTypeEnum.MAYBE) }} + {{ choice.counts.get(answerEnum.MAYBE) }} - - {{ pseudo }} + + {{ user.pseudo }} diff --git a/src/app/shared/components/choice-details/choice-details.component.ts b/src/app/shared/components/choice-details/choice-details.component.ts index 5849cfaf..b7895729 100644 --- a/src/app/shared/components/choice-details/choice-details.component.ts +++ b/src/app/shared/components/choice-details/choice-details.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; 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'; @Component({ @@ -11,7 +11,7 @@ import { Choice } from '../../../core/models/choice.model'; }) export class ChoiceDetailsComponent implements OnInit { public choice: Choice; - public responseTypeEnum = ResponseType; + public answerEnum = Answer; constructor(public ref: DynamicDialogRef, public config: DynamicDialogConfig) {} diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index edb7f81b..c36e6eff 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -5,7 +5,6 @@ const backendApiUrlsInDev = { export const environment = { production: true, - baseHref: '/framadate/funky-framadate-front/', appTitle: 'FramaSondage', api: { baseHref: backendApiUrlsInDev.remote, @@ -21,9 +20,6 @@ export const environment = { slugs: { name: '/slugs', }, - votesStacks: { - name: '/votes-stacks', - }, answers: { name: '/answers', }, diff --git a/src/environments/environment.ts b/src/environments/environment.ts index b32ec917..219ba22a 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -9,7 +9,6 @@ const backendApiUrlsInDev = { export const environment = { production: false, - baseHref: '/', appTitle: 'FramaSondage', api: { baseHref: backendApiUrlsInDev.local, @@ -25,9 +24,6 @@ export const environment = { slugs: { name: '/slugs', }, - votesStacks: { - name: '/votes-stacks', - }, answers: { name: '/answers', }, diff --git a/src/styles.scss b/src/styles.scss index 962a220d..ca8f828d 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -21,7 +21,7 @@ // most general dom elements @import './styles/partials/global'; @import './styles/partials/logo'; - @import './styles/partials/navigation'; +@import './styles/partials/navigation'; // main content elements @import './styles/partials/main'; diff --git a/src/styles/partials/_forms.scss b/src/styles/partials/_forms.scss index 54aa19b1..c39585b0 100644 --- a/src/styles/partials/_forms.scss +++ b/src/styles/partials/_forms.scss @@ -1,10 +1,9 @@ @charset "UTF-8"; - -label{ +label { line-height: 2.5em; } -.ui-inputswitch{ +.ui-inputswitch { margin-left: 1ch; margin-right: 1ch; } @@ -69,6 +68,6 @@ li { width: 100%; } -button[type='submit']{ - margin-top : 2em; +button[type='submit'] { + margin-top: 2em; } diff --git a/src/styles/partials/_navigation.scss b/src/styles/partials/_navigation.scss index 23df3486..e560f464 100644 --- a/src/styles/partials/_navigation.scss +++ b/src/styles/partials/_navigation.scss @@ -18,7 +18,8 @@ nav { display: none; } - &.active, &.is-active { + &.active, + &.is-active { color: $white; background: $primary_color; } @@ -82,9 +83,9 @@ a { } } // material override -.navbar{ - margin-bottom: 0 +.navbar { + margin-bottom: 0; } -a span.ui-steps-number{ +a span.ui-steps-number { padding: 0; } diff --git a/src/styles/themes/_base.scss b/src/styles/themes/_base.scss index f20767dd..4d7250bc 100644 --- a/src/styles/themes/_base.scss +++ b/src/styles/themes/_base.scss @@ -1,7 +1,7 @@ #big_container { background: $primary; - main{ + main { margin-bottom: 2em; padding-bottom: 5em; padding-top: 1em; diff --git a/src/styles/themes/_dark.scss b/src/styles/themes/_dark.scss index 28418d9e..fd51d381 100644 --- a/src/styles/themes/_dark.scss +++ b/src/styles/themes/_dark.scss @@ -6,16 +6,19 @@ $theme-color-tertiary: #ccc; background: #222; color: $theme-color-tertiary; - main, .big-header, .navbar , footer{ + main, + .big-header, + .navbar, + footer { background: #444; } - .big-header{ + .big-header { color: $white; - a{ + a { color: $white; } } - input{ + input { background: #222; color: $white; } @@ -60,30 +63,44 @@ $theme-color-tertiary: #ccc; .big-header { margin-bottom: 22px; } - label{ + label { color: $theme-color-tertiary; } // 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; color: $theme-color-tertiary !important; } - .navbar-dropdown a.navbar-item{ + .navbar-dropdown a.navbar-item { color: #444; } // material override .navbar-dropdown a.navbar-item.is-active, 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; } - .navbar-link:not(.is-arrowless)::after{ + .navbar-link:not(.is-arrowless)::after { 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; } } diff --git a/src/styles/themes/_light.scss b/src/styles/themes/_light.scss index 77350c1d..eab5078e 100644 --- a/src/styles/themes/_light.scss +++ b/src/styles/themes/_light.scss @@ -19,14 +19,13 @@ } // 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; } - 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; } - .navbar-link:not(.is-arrowless)::after{ + .navbar-link:not(.is-arrowless)::after { border-color: $primary_color; } - } diff --git a/src/styles/themes/_red.scss b/src/styles/themes/_red.scss index 0fe12c83..97aab73e 100644 --- a/src/styles/themes/_red.scss +++ b/src/styles/themes/_red.scss @@ -7,7 +7,7 @@ $theme-color-tertiary: #ffbca4; background: $theme-color-tertiary; color: $theme-color-secondary; - main{ + main { background: $white; } h1::after { @@ -22,15 +22,28 @@ $theme-color-tertiary: #ffbca4; } // 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; color: $theme-color-tertiary; } // material override .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; } - } } diff --git a/yarn.lock b/yarn.lock index 17b2cb1c..5c95f640 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,29 +12,29 @@ jest-preset-angular "^8.1.2" lodash "^4.17.10" -"@angular-devkit/architect@0.901.7", "@angular-devkit/architect@>=0.900.0 < 0.1000.0": - version "0.901.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.901.7.tgz#6a09cb076ca92b3202053fca757a456d1f8e4395" - integrity sha512-yW/PUEqle55QihOFbmeNXaVTodhfeXkteoFDUpz+YpX3xiQDXDtNbIJSzKOQTojtBKdSMKMvZkQLr+RAa7/1EA== +"@angular-devkit/architect@0.901.8", "@angular-devkit/architect@>=0.900.0 < 0.1000.0": + version "0.901.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.901.8.tgz#d2f5f4c16fba3ed61ee27c7fc72118421ea2b45d" + integrity sha512-tK9ZQlubH6n+q+c2J9Wvfcxg3RFuRiTfJriNoodo6GHvtF2KLdPY67w3Gen0Sp172A5Q8Y927NseddNI8RZ/0A== dependencies: - "@angular-devkit/core" "9.1.7" + "@angular-devkit/core" "9.1.8" rxjs "6.5.4" "@angular-devkit/build-angular@^0.901.2": - version "0.901.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.901.7.tgz#10d55e3c73213971ba7d733f15d66494dfe9918a" - integrity sha512-NiBwapx/XJqYGzSmENff78i6Yif9PjYDJ9BB+59t2eDofkCZUcPFrhQmRgliO7rt6RATvT81lDP89+LBXCTQPw== + version "0.901.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.901.8.tgz#6450be4743dacf564af143c85d2a03b7bdd81551" + integrity sha512-W2RTjtPPJRbke6K7Qt9eZOPRGfFBFsYzskxsuxXwkW2RPopj6k1wUWh9Be8CtAMAUlhyPvlzviOtv3F7leYr3w== dependencies: - "@angular-devkit/architect" "0.901.7" - "@angular-devkit/build-optimizer" "0.901.7" - "@angular-devkit/build-webpack" "0.901.7" - "@angular-devkit/core" "9.1.7" + "@angular-devkit/architect" "0.901.8" + "@angular-devkit/build-optimizer" "0.901.8" + "@angular-devkit/build-webpack" "0.901.8" + "@angular-devkit/core" "9.1.8" "@babel/core" "7.9.0" "@babel/generator" "7.9.3" "@babel/preset-env" "7.9.0" "@babel/template" "7.8.6" "@jsdevtools/coverage-istanbul-loader" "3.0.3" - "@ngtools/webpack" "9.1.7" + "@ngtools/webpack" "9.1.8" ajv "6.12.0" autoprefixer "9.7.4" babel-loader "8.0.6" @@ -42,7 +42,7 @@ cacache "15.0.0" caniuse-lite "^1.0.30001032" circular-dependency-plugin "5.2.0" - copy-webpack-plugin "5.1.1" + copy-webpack-plugin "6.0.2" core-js "3.6.4" css-loader "3.5.1" cssnano "4.1.10" @@ -51,7 +51,7 @@ glob "7.1.6" jest-worker "25.1.0" karma-source-map-support "1.4.0" - less "3.11.1" + less "3.11.3" less-loader "5.0.0" license-webpack-plugin "2.1.4" loader-utils "2.0.0" @@ -87,10 +87,10 @@ webpack-subresource-integrity "1.4.0" worker-plugin "4.0.3" -"@angular-devkit/build-optimizer@0.901.7": - version "0.901.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.901.7.tgz#e72fc3031207a78aee175a76d3317cdf226984e9" - integrity sha512-Xuce3StdxhcgLYb0BAaFGr3Bzj5EM2OsAqIT15PkikWY1k5cK50vPxoC/BkX4QDL9eXSHtqAfMBfA6h5N422vw== +"@angular-devkit/build-optimizer@0.901.8": + version "0.901.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.901.8.tgz#55a6cecf9b963bac15f84b5db8ec211c82119954" + integrity sha512-k9DynuWKMsJk5xg+LthdsqmOlGVMVP/TEu2odiVty9gnTVlIjs1bUzs+HNAF/w11juIBcVKa690K+FkSCalo9w== dependencies: loader-utils "2.0.0" source-map "0.7.3" @@ -98,19 +98,19 @@ typescript "3.6.5" webpack-sources "1.4.3" -"@angular-devkit/build-webpack@0.901.7": - version "0.901.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.901.7.tgz#6d93c38756540a02e67d2c3ccfac4220c62962de" - integrity sha512-pTLW5Eqy9cHgv78LKiH0e30lxqKzUPjh1djvNtFsEemOHsfKQdAfjLjikoaQvqMoBKVaUU7r2vmyyS17cH+1yw== +"@angular-devkit/build-webpack@0.901.8": + version "0.901.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.901.8.tgz#19fbac49c3f60c16d6814d61e518431503ab746a" + integrity sha512-OyLfPI0yo1Qg4I1QP8ZxEYVxrf3IDjGfpxlKXqSChpEy5m/uZmBIRDZ/n/G3+32xFc6MWEdU4EHfRrfn17ae/w== dependencies: - "@angular-devkit/architect" "0.901.7" - "@angular-devkit/core" "9.1.7" + "@angular-devkit/architect" "0.901.8" + "@angular-devkit/core" "9.1.8" rxjs "6.5.4" -"@angular-devkit/core@9.1.7", "@angular-devkit/core@^9.0.0": - version "9.1.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-9.1.7.tgz#f193ccbae4c80b34188bc9cc401c16b3ced50339" - integrity sha512-guvolu9Cl+qYMTtedLZD9wCqustJjdqzJ2psD2C1Sr1LrX9T0mprmDldR/YnhsitThveJEb6sM/0EvqWxoSvKw== +"@angular-devkit/core@9.1.8", "@angular-devkit/core@^9.0.0": + version "9.1.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-9.1.8.tgz#7c517a14e3ddfd180858972d9f1836aa90a1248e" + integrity sha512-4k1pZwje2oh5c/ULg7pnCBzTstx3l3uF7O5tQq/KXomDDsam97IhLm6cKUqQpaoyC1NUsBV6xJARJ0PyUP5TPQ== dependencies: ajv "6.12.0" fast-json-stable-stringify "2.1.0" @@ -118,19 +118,19 @@ rxjs "6.5.4" source-map "0.7.3" -"@angular-devkit/schematics@9.1.7": - version "9.1.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-9.1.7.tgz#45394a1c928db449b412dacf205c3ec78fb5ef0c" - integrity sha512-oeHPJePBcPp/bd94jHQeFUnft93PGF5iJiKV9szxqS8WWC5OMZ5eK7icRY0PwvLyfenspAZxdZcNaqJqPMul5A== +"@angular-devkit/schematics@9.1.8": + version "9.1.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-9.1.8.tgz#8eeea0b6f9702a5b065f909cdcaf1d35cc8e2fa3" + integrity sha512-/8L5J4X6SkcFMRmrSQHvJWOPilrMWTNlv1lD+1z06D3xGJEktVxXM3gCUXhDrbMvpoi+lYtR2Fuia0E6zvyjCQ== dependencies: - "@angular-devkit/core" "9.1.7" + "@angular-devkit/core" "9.1.8" ora "4.0.3" rxjs "6.5.4" "@angular/animations@^9.1.1": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.1.9.tgz#de54334ea195189402487855c9a98f5618605da4" - integrity sha512-qWVi0TxmU6HeXAgEsfpQvFFygh+a0kH2kGe6bWij4XvG6dWfV3xZjlaFwSIYGk+yK4yL0+9+PAXH+ENfxNw+Cw== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.1.11.tgz#2c7b6e584df0ba0884d05f01fa7ab86c1fdd1c5e" + integrity sha512-VKAExUnEJfo1PDQKagpx2pn+QMZCsPLRiADzTdl4U0VPylK3ALbn4ZNY9UbdwyE2plitz++LkH7sEGGfh+PNrQ== "@angular/cdk@^9.2.2": version "9.2.4" @@ -140,15 +140,15 @@ parse5 "^5.0.0" "@angular/cli@^9.1.2": - version "9.1.7" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-9.1.7.tgz#0532b9c55d267cd6ee3edb79fec8b19c4e64e607" - integrity sha512-NhsIa725S/U/n7nDxp6ForusdYHEXF4aSIvsFRdoK6vbQ889c5e1Rdj+T5EWXLmpQZxeprSKhLI2alNX0nVhhQ== + version "9.1.8" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-9.1.8.tgz#fd143e26c913ccea5b8ac1716e1c168432ac96d3" + integrity sha512-yfF7glPo3Xm7fTJVln1bFZVXqHu8wkIGZRZGb6lsJa+QH4ePxHgn+dNYXho0MYpGUnhY7xOBW4MJzjS7E+1y5Q== dependencies: - "@angular-devkit/architect" "0.901.7" - "@angular-devkit/core" "9.1.7" - "@angular-devkit/schematics" "9.1.7" - "@schematics/angular" "9.1.7" - "@schematics/update" "0.901.7" + "@angular-devkit/architect" "0.901.8" + "@angular-devkit/core" "9.1.8" + "@angular-devkit/schematics" "9.1.8" + "@schematics/angular" "9.1.8" + "@schematics/update" "0.901.8" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "4.1.1" @@ -166,14 +166,14 @@ uuid "7.0.2" "@angular/common@^9.0.7": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.9.tgz#16e77b2db675b80e32f1788a20c538150fd09294" - integrity sha512-y/tJtkuOJhV2kcaXZyrLZH84i4uQ1r+vaaEHvXj+JZYfYfcMMd/TDqMiPcIkUb3RxqghtZ+q0ZNW5D1Nlru3Pw== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.11.tgz#1323f7b043410791bd2d0d71b0bbb1f862319c04" + integrity sha512-Vh5lF7zWwDK9RedmYXUc8vUXyrecR3j1mAWlTlnmcHYxxFThPzN/dr0slQcPi6nyJn0EmyRKUGvAoZx4rIb7wg== "@angular/compiler-cli@^9.1.1": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-9.1.9.tgz#e3c234d888074002fa5f6b7eab4f63f4ddbdb7bd" - integrity sha512-aLr2eaDlREN8XybgTbelvjtSZ8eAkxBPilnkddc700BgiC6ImyUSKaItOwa8bnjQwq4Wlz5eVG0ibsrX+5MXwg== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-9.1.11.tgz#39da68ddadb52008fe5231141707bddd3aa790b2" + integrity sha512-9qIxbtpRXOQnRm6inxCa5HuH87MSuMzuceD0YBVzl8v+vLtewon9KXYMmF4kTBhWa/LEa8FrajljLh0azf3VLg== dependencies: canonical-path "1.0.0" chokidar "^3.0.0" @@ -189,48 +189,48 @@ yargs "15.3.0" "@angular/compiler@^9.0.7": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.9.tgz#cbf678ee28a0811a8ef3ee7be565d4911ff28ec7" - integrity sha512-kjFgaTB2ckr9lgmkS1dOGRT7kmzpQueydxsxXSHWgICNVE6F/u1PHyeSOyJRpxW0GnrkLq3QM2EUFnQGGga5bg== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.11.tgz#4c7100f53c87f47e793e149427b8bdee44302381" + integrity sha512-MbVheCG0U8gt6xtiipau20N26mD2sXjLChVmRKgO6rbDruxboNMZfEd94q9NP9JRaUsVnjXvY7GMDldoymdXig== "@angular/core@^9.0.7": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.9.tgz#db4241f867d6e14b81ed6e7c50334813c6ebfc10" - integrity sha512-q/DERgVU6vK2LtTcdVCGGBcoO424WsEfImh3Vcuy+P/ZVmthlDUC/+q+tSKt8MMf4hLpxFDQJE8vUSkktj7QEw== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.11.tgz#7a92d27292212ed381be15f9000d4019867f1c7c" + integrity sha512-KAlEedBo761O1aeoTJVziOSHi8Fttk9ipvbDZXYT/o0W/KdVwubxP34g9t5aD8LCcF8+L0z4VLw++HjdJAUpwg== "@angular/forms@^9.0.7": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.9.tgz#20c9a79d1dcb2cace45df9e2f304b658e02c1687" - integrity sha512-r675yImnb/0pY7K5W3V2ITa7YETu1I2AS+bRfII6UQ6gthyeFFOHb5noa7YneC2yqQiM6E4DQmF5ig3daPuFNg== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.11.tgz#fa246144649236613598a0471aa7f39b60f986b5" + integrity sha512-t4WHrh6ot1r8zdV+3fJz7g9rCok77c9CiIevhH2dR/idxD+HtFR0wqmcBQzsn+rNVB0f0TiSHDrj+TeELIFyWw== "@angular/language-service@^9.0.7": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-9.1.9.tgz#332a7e54d5e553b92342b10703dc13aba474a28f" - integrity sha512-yT6HPpdAe2mD9HRoTCiWFog1MRJt+0j+CLbI/Ql7C6pH6vbjmfsJ55xMmQ7eS6trsnebpMWTUv1f2GRykv3ygw== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-9.1.11.tgz#a2afed4f0167e6f4d3d748214b8e1c27980703ce" + integrity sha512-jfm4etbqldj6MTwECwyoAs7tXEAR8K/8P8dBZnsELhY+V8oFidTJI3NY52PB3Ym7leSPorYdOAeUMMuQfPaVxg== "@angular/localize@^9.1.1": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.9.tgz#0867a82abcdeb6b88cbd4d61e1410f3c63a66ddb" - integrity sha512-U/4axUr99GO3+dRuMIEyJ1FqXauT82x/w7GulWu05qk8ML8MaIQ58RcB/LTJJY1s1qfwdcsyzX2wZrZcwBLKlA== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.11.tgz#25921d794836fb7a07d284c1ac0ed06c10e77d50" + integrity sha512-CrR7RniwJIK3+QKH8nHl35KDAHZn1mp1QAd5vujTWKw6YRLfio7SjM9qIfzw5y4WZuUitTsqKlQT/m/NK146Ag== dependencies: "@babel/core" "7.8.3" glob "7.1.2" yargs "15.3.0" "@angular/platform-browser-dynamic@^9.0.7": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.9.tgz#12f8b05d3c9ef0844df88f3833e29ea1e49ec5e0" - integrity sha512-b9MG5MWne+IuL3uLm8jwPhlJzqYaGBGk/qibOqb17T24j1iyrlO7T5bZ8zO6pUy5iT/TahVfHPnPJC1qTK5OmA== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.11.tgz#82af336b05e0d7b7478a2ca7f6282825b211f340" + integrity sha512-Qw3rfVFF0Wtu+UwraqKPCgTA3uoNPGf4vKSfuCuXTrG0p7j+3mCP59aUv5gGH7GV1UQ++jZRx5pbWF43zrC8Hw== "@angular/platform-browser@^9.0.7": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.9.tgz#c2fcc50aebfdc268521b407e32dc0d967cb40411" - integrity sha512-V861X3MxJp1AlMTnkUPldpBLIJbApXF3ka0A5Dq2nVJCyOFeteGkaRWSBgqe2jxmq+LVpJbzcNvtDFXw6mQ0jA== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.11.tgz#4da8e2a4231d5162304746a39f54cb2d3f241b7c" + integrity sha512-KDxoiFhW4UD+EqchcKpQVSLwg9Rd3JbWytZLchFV6nH8BFnshfJtw2tyPT8bMhFVG9n9zSR4QSGaozWgoDs9mw== "@angular/router@^9.0.7": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-9.1.9.tgz#5d79d72cb62ea1c04ea70238846653ecf9c4a73c" - integrity sha512-4u+CWMPB4hCkAsFCEzC94YEWT0wVozqGkc/Dortt2hFaqvZpIegg6iJVZlDxuyDjzFYBPnnbTDdgiTTA8ckfuA== + version "9.1.11" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-9.1.11.tgz#b6d28af55fe5631bbc46f306a0e7866253d4f3b1" + 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": version "7.10.1" @@ -1489,12 +1489,12 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@ngtools/webpack@9.1.7": - version "9.1.7" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-9.1.7.tgz#4322757b029e1175a3361183c06b31d0576538d8" - integrity sha512-A7VB2I42Kn+7jl0tDKzGNLAoZLWSqkKo9Hg1bmKpvAAIz+DSbq3uV+JWgGgTprM3tn0lfkVgmqk4H17HKwAOcg== +"@ngtools/webpack@9.1.8": + version "9.1.8" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-9.1.8.tgz#50a906047b284098e5cd669e8174c9cfcaf3bafc" + integrity sha512-2Y27PrHLMyrIDmuicjp2OU7KIr9bggwMLNZdjfpcuXlOPP/BYviuhgkkYsfJysrpDRUJUHlXRJG7OJbgyFM7gQ== dependencies: - "@angular-devkit/core" "9.1.7" + "@angular-devkit/core" "9.1.8" enhanced-resolve "4.1.1" rxjs "6.5.4" webpack-sources "1.4.3" @@ -1511,26 +1511,54 @@ dependencies: 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": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@schematics/angular@9.1.7": - version "9.1.7" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-9.1.7.tgz#b7801a5e20f844da560db81d2971590e8ac090ff" - integrity sha512-ld3WcoMWvup04V3OWioQ+AFGQBzz7IDM4Fxc5+Qc3wILWkDJnNkrc4EmJAow96Ab4/T1+Wl1vof3tV4At0BTzA== +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: - "@angular-devkit/core" "9.1.7" - "@angular-devkit/schematics" "9.1.7" + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" -"@schematics/update@0.901.7": - version "0.901.7" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.901.7.tgz#164bff4e97383a0a7d266fe5eb2e1bf41f14dfe9" - integrity sha512-6IpQVFvbu47CrXfqqHAzv2vi7AOdfi1S+SiayXU6FWTeA2wV47H8R60VjxurL8JkDGoVhFgC4+lK6KG++g3dQw== +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== dependencies: - "@angular-devkit/core" "9.1.7" - "@angular-devkit/schematics" "9.1.7" + mkdirp "^1.0.4" + +"@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" ini "1.3.5" npm-package-arg "^8.0.0" @@ -1631,9 +1659,9 @@ "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" - integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== "@types/istanbul-lib-report@*": version "3.0.0" @@ -1650,18 +1678,18 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@^25.2.1": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== +"@types/jest@^26.0.0": + version "26.0.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.0.tgz#a6d7573dffa9c68cbbdf38f2e0de26f159e11134" + integrity sha512-/yeMsH9HQ1RLORlXAwoLXe8S98xxvhNtUz3yrgrwbaxYjT+6SFPZZRksmRKRA6L5vsUtSHeN71viDOTTyYAD+g== dependencies: jest-diff "^25.2.1" pretty-format "^25.2.1" "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" - integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== "@types/marked@^0.7.4": version "0.7.4" @@ -1674,9 +1702,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*", "@types/node@^14.0.1": - version "14.0.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.11.tgz#61d4886e2424da73b7b25547f59fdcb534c165a3" - integrity sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg== + version "14.0.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.13.tgz#ee1128e881b874c371374c1f72201893616417c9" + integrity sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1745,40 +1773,40 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.1.0.tgz#4ac00ecca3bbea740c577f1843bc54fa69c3def2" - integrity sha512-D52KwdgkjYc+fmTZKW7CZpH5ZBJREJKZXRrveMiRCmlzZ+Rw9wRVJ1JAmHQ9b/+Ehy1ZeaylofDB9wwXUt83wg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.2.0.tgz#7fb997f391af32ae6ca1dbe56bcefe4dd30bda14" + integrity sha512-t9RTk/GyYilIXt6BmZurhBzuMT9kLKw3fQoJtK9ayv0tXTlznXEAnx07sCLXdkN3/tZDep1s1CEV95CWuARYWA== dependencies: - "@typescript-eslint/experimental-utils" "3.1.0" + "@typescript-eslint/experimental-utils" "3.2.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.1.0.tgz#2d5dba7c2ac2a3da3bfa3f461ff64de38587a872" - integrity sha512-Zf8JVC2K1svqPIk1CB/ehCiWPaERJBBokbMfNTNRczCbQSlQXaXtO/7OfYz9wZaecNvdSvVADt6/XQuIxhC79w== +"@typescript-eslint/experimental-utils@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.2.0.tgz#4dab8fc9f44f059ec073470a81bb4d7d7d51e6c5" + integrity sha512-UbJBsk+xO9dIFKtj16+m42EvUvsjZbbgQ2O5xSTSfVT1Z3yGkL90DVu0Hd3029FZ5/uBgl+F3Vo8FAcEcqc6aQ== dependencies: "@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-utils "^2.0.0" "@typescript-eslint/parser@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.1.0.tgz#9c02ba5d88ad2355672f39e6cd4176f172dd47f8" - integrity sha512-NcDSJK8qTA2tPfyGiPes9HtVKLbksmuYjlgGAUs7Ld2K0swdWibnCq9IJx9kJN8JJdgUJSorFiGaPHBgH81F/Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.2.0.tgz#d9d7867456b1b8ecae9e724269b0bc932f06cbca" + integrity sha512-Vhu+wwdevDLVDjK1lIcoD6ZbuOa93fzqszkaO3iCnmrScmKwyW/AGkzc2UvfE5TCoCXqq7Jyt6SOXjsIlpqF4A== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "3.1.0" - "@typescript-eslint/typescript-estree" "3.1.0" + "@typescript-eslint/experimental-utils" "3.2.0" + "@typescript-eslint/typescript-estree" "3.2.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.1.0.tgz#eaff52d31e615e05b894f8b9d2c3d8af152a5dd2" - integrity sha512-+4nfYauqeQvK55PgFrmBWFVYb6IskLyOosYEmhH3mSVhfBp9AIJnjExdgDmKWoOBHRcPM8Ihfm2BFpZf0euUZQ== +"@typescript-eslint/typescript-estree@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.2.0.tgz#c735f1ca6b4d3cd671f30de8c9bde30843e7ead8" + integrity sha512-uh+Y2QO7dxNrdLw7mVnjUqkwO/InxEqwN0wF+Za6eo3coxls9aH9kQ/5rSvW2GcNanebRTmsT5w1/92lAOb1bA== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -2003,9 +2031,9 @@ acorn@^6.2.1: integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== acorn@^7.0.0, acorn@^7.1.1, acorn@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" - integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== adm-zip@^0.4.9: version "0.4.14" @@ -2256,6 +2284,11 @@ array-union@^1.0.1: dependencies: 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: version "1.0.3" 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" 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" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== @@ -2910,6 +2943,29 @@ cacache@^13.0.1: ssri "^7.0.0" 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: version "1.0.1" 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" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001043: - version "1.0.30001078" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001078.tgz#e1b6e2ae327b6a1ec11f65ec7a0dde1e7093074c" - integrity sha512-sF12qXe9VMm32IEf/+NDvmTpwJaaU7N1igpiH2FdI4DyABJSsOqG3ZAcFvszLkoLoo1y6VJLMYivukUAxaMASw== + version "1.0.30001081" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001081.tgz#40615a3c416a047c5a4d45673e5257bf128eb3b5" + integrity sha512-iZdh3lu09jsUtLE6Bp8NAbJskco4Y3UDtkR3GTCJGsbMowBU5IWDFF79sV2ws7lSqTzWyKazxam2thasHymENQ== canonical-path@1.0.0: version "1.0.0" @@ -3043,9 +3099,9 @@ chalk@^3.0.0: supports-color "^7.1.0" chalk@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" - integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.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" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" - integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== +copy-webpack-plugin@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.2.tgz#10efc6ad219a61acbf2f5fb50af83da38431bc34" + integrity sha512-9Gm8X0c6eXlKnmltMPFCBeGOKjtcRIyTt4VaO3k1TkNgVTe5Ov2lYsYVuyLp0kp8DItO3apewflM+1GYgh6V2Q== dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" + cacache "^15.0.4" + fast-glob "^3.2.2" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - webpack-log "^2.0.0" + p-limit "^2.3.0" + schema-utils "^2.7.0" + serialize-javascript "^3.1.0" + webpack-sources "^1.4.3" core-js-compat@^3.6.2: version "3.6.5" @@ -4165,12 +4220,12 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" -dir-glob@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - path-type "^3.0.0" + path-type "^4.0.0" dns-equal@^1.0.0: version "1.0.0" @@ -4313,9 +4368,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.413: - version "1.3.464" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.464.tgz#fe13feaa08f6f865d3c89d5d72e54c194f463aa5" - integrity sha512-Oo+0+CN9d2z6FToQW6Hwvi9ez09Y/usKwr0tsDsyg43a871zVJCi1nR0v03djLbRNcaCKjtrnVf2XJhTxEpPCg== + version "1.3.469" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.469.tgz#05a06ec9c915127ed6c9f5b657cd1d7e11a3f944" + integrity sha512-O9JM6ZsFhS0uy0S2Y3G8EoNfqio3srdxCuwuJh8tKgQKa6rf7je/xQ3TIoiEaEtpf2/qFFLAGt/xB4MjuUZqRw== elliptic@^6.0.0, elliptic@^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" fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@1.1.2: version "1.1.2" @@ -4967,6 +5022,18 @@ fast-glob@^2.0.2: merge2 "^1.2.3" 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: version "2.1.0" 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" 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: version "0.11.3" 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" 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" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== @@ -5376,7 +5450,7 @@ glob-parent@^3.1.0: is-glob "^3.1.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" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== @@ -5431,6 +5505,18 @@ globals@^12.1.0: dependencies: 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: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -5454,18 +5540,6 @@ globby@^6.1.0: pify "^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: version "8.0.2" 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" iconv-lite@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.1.tgz#b2425d3c7b18f7219f2ca663d103bddb91718d64" - integrity sha512-ONHr16SQvKZNSqjQT9gy5z24Jw+uqfO02/ngBSBoqChZ+W8qXX7GPRa1RoUnzGADw8K63R1BXUMzarCVQBpY8Q== + version "0.5.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8" + integrity sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag== dependencies: 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" 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: version "0.5.5" 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" pify "^4.0.1" -less@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" - integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== +less@3.11.3: + version "3.11.3" + resolved "https://registry.yarnpkg.com/less/-/less-3.11.3.tgz#2d853954fcfe0169a8af869620bcaa16563dcc1c" + integrity sha512-VkZiTDdtNEzXA3LgjQiC3D7/ejleBPFVvq+aRI9mIj+Zhmif5TvFPM244bT4rzkvOCvJ9q4zAztok1M7Nygagw== dependencies: clone "^2.1.2" tslib "^1.10.0" @@ -7232,8 +7311,8 @@ less@3.11.1: errno "^0.1.1" graceful-fs "^4.1.2" image-size "~0.5.0" + make-dir "^2.1.0" mime "^1.4.1" - mkdirp "^0.5.0" promise "^7.1.1" request "^2.83.0" source-map "~0.6.0" @@ -7296,9 +7375,9 @@ lines-and-columns@^1.1.6: integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= lint-staged@^10.1.7: - version "10.2.9" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.9.tgz#6013ecfa80829cd422446b545fd30a96bca3098c" - integrity sha512-ziRAuXEqvJLSXg43ezBpHxRW8FOJCXISaXU//BWrxRrp5cBdRkIx7g5IsB3OI45xYGE0S6cOacfekSjDyDKF2g== + version "10.2.10" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.10.tgz#f0f78bf8786bbe90e1775a0dc540f7f12b6a79b2" + integrity sha512-dgelFaNH6puUGAcU+OVMgbfpKSerNYsPSn6+nlbRDjovL0KigpsVpCu0PFZG6BJxX8gnHJqaZlR9krZamQsb0w== dependencies: chalk "^4.0.0" cli-truncate "2.1.0" @@ -7530,7 +7609,7 @@ magic-string@0.25.7, magic-string@^0.25.0: dependencies: sourcemap-codec "^1.4.4" -make-dir@^2.0.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" 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" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3: +merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 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: 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" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -8497,7 +8576,7 @@ p-limit@^1.1.0: dependencies: 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" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -9958,6 +10037,11 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" 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: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -9975,7 +10059,7 @@ rimraf@2.6.3: dependencies: 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" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 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" 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: version "1.0.3" 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-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" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== @@ -11070,7 +11159,7 @@ tar@^4.4.10: safe-buffer "^5.1.2" yallist "^3.0.3" -tar@^6.0.1: +tar@^6.0.1, tar@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== @@ -11345,9 +11434,9 @@ ts-jest@^26.0.0: yargs-parser "18.x" ts-mockito@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/ts-mockito/-/ts-mockito-2.5.0.tgz#ad853051f2d116dfcaf6de6b0a1df2c82eda2d1f" - integrity sha512-b3qUeMfghRq5k5jw3xNJcnU9RKhqKnRn0k9v9QkN+YpuawrFuMIiGwzFZCpdi5MHy26o7YPnK8gag2awURl3nA== + version "2.6.1" + resolved "https://registry.yarnpkg.com/ts-mockito/-/ts-mockito-2.6.1.tgz#bc9ee2619033934e6fad1c4455aca5b5ace34e73" + integrity sha512-qU9m/oEBQrKq5hwfbJ7MgmVN5Gu6lFnIGWvpxSjrqq6YYEVv+RwVFWySbZMBgazsWqv6ctAyVBpo9TmAxnOEKw== dependencies: lodash "^4.17.5" @@ -11486,16 +11575,16 @@ typescript@3.6.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.5.tgz#dae20114a7b4ff4bd642db9c8c699f2953e8bbdb" 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: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" 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: version "3.9.4" 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" windows-release@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" - integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ== + version "3.3.1" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.1.tgz#cb4e80385f8550f709727287bf71035e209c4ace" + integrity sha512-Pngk/RDCaI/DkuHPlGTdIkDiTAnAkyMjoQMZqRsxydNl1qGXNIoZrB7RK8g53F2tEgQBMqQJHQdYZuQEEAu54A== dependencies: execa "^1.0.0"