diff --git a/README.md b/README.md
index d2ef16be..407de863 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,14 @@
+## LIBRARIES USED
+
+| lib name | usage |
+| -------------------------------------------------------- | -------------------------------------- |
+| [axios](https://github.com/axios/axios) | http client |
+| [date-fns](https://date-fns.org) | manipulate dates |
+| [locale-enum](https://www.npmjs.com/package/locale-enum) | enum of all locales |
+| [uuid](https://www.npmjs.com/package/uuid) | handle client-side generation of uuids |
+
+---
+
# Framadate
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.1.
@@ -27,4 +38,3 @@ Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protrac
Before using ng for the first time in this project, use `npm i` to install needed npm modules.
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
-
diff --git a/package.json b/package.json
index da5c6f07..d2147d13 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,6 @@
"package": "cat dist/framadate/*.js > dist/framadate/framadate-scripts-bundled.js && ls -l dist/framadate",
"bld:pkg": "npm run build && npm run package",
"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",
"test": "ng test --code-coverage --watch=false",
"lint": "ng lint",
"e2e": "ng e2e",
@@ -18,8 +17,7 @@
"format:all": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}\"",
"trans": "ng xi18n --output-path=src/locale --i18n-locale=fr",
"storybook": "start-storybook -p 6006",
- "build-storybook": "build-storybook",
- "postinstall": "ngcc"
+ "build-storybook": "build-storybook"
},
"private": false,
"dependencies": {
@@ -37,12 +35,15 @@
"@ngx-translate/core": "^12.1.2",
"@ngx-translate/http-loader": "^4.0.0",
"angular-date-value-accessor": "^1.0.2",
+ "axios": "^0.19.2",
"bulma": "^0.8.2",
"chart.js": "^2.8.0",
+ "date-fns": "^2.12.0",
"font-awesome": "^4.7.0",
"karma-coverage": "^2.0.1",
"karma-firefox-launcher": "^1.3.0",
"karma-phantomjs-launcher": "^1.0.4",
+ "locale-enum": "^1.1.0",
"ngx-clipboard": "^13.0.0",
"ngx-markdown": "^9.0.0",
"ngx-toaster": "^1.0.1",
@@ -52,6 +53,7 @@
"rxjs": "^6.5.5",
"rxjs-compat": "^6.5.5",
"tslib": "^1.11.1",
+ "uuid": "^7.0.3",
"zone.js": "^0.10.3"
},
"devDependencies": {
@@ -68,6 +70,7 @@
"@types/jasmine": "^3.5.10",
"@types/jasminewd2": "~2.0.8",
"@types/node": "^13.11.1",
+ "@types/uuid": "^7.0.2",
"@typescript-eslint/eslint-plugin": "^2.27.0",
"@typescript-eslint/parser": "^2.27.0",
"babel-loader": "^8.1.0",
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 4ec1729b..e0e76c86 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -20,6 +20,7 @@ import { PollGraphicComponent } from './poll-graphic/poll-graphic.component';
const routes: Routes = [
{ path: '', redirectTo: 'step/creation', pathMatch: 'full' },
+ { path: 'admin/:token', component: AdminComponent }, // http://localhost:4200/#/admin/srfdgedsTGETHRYJtujTUjTUkTIUKTK
{ path: 'home', component: HomeComponent },
{ path: 'base', component: BaseComponent },
{ path: 'step/base', component: BaseComponent },
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index cedd678b..2f817526 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -49,7 +49,6 @@ import { VotingSummaryComponent } from './pages/voting/voting-summary/voting-sum
import { VotingComponent } from './pages/voting/voting.component';
import { PollGraphicComponent } from './poll-graphic/poll-graphic.component';
import { ConfigService } from './services/config.service';
-import { PollService } from './services/poll.service';
import { CopyTextComponent } from './ui/copy-text/copy-text.component';
import { ResettableInputDirective } from './ui/directives/resettable-input.directive';
import { ErasableInputComponent } from './ui/erasable-input/erasable-input.component';
@@ -135,7 +134,7 @@ export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader {
HttpClientModule,
FormsModule,
],
- providers: [TranslateService, ConfigService, PollService, MessageService, ConfirmationService],
+ providers: [TranslateService, ConfigService, MessageService, ConfirmationService],
bootstrap: [AppComponent],
})
export class AppModule {}
diff --git a/src/app/config/DateUtilities.ts b/src/app/config/DateUtilities.ts
index 6e3d8607..a50ca93b 100644
--- a/src/app/config/DateUtilities.ts
+++ b/src/app/config/DateUtilities.ts
@@ -32,7 +32,7 @@ export class DateUtilities {
});
d1.setDate(d1.getDate() + interval);
}
- return dates.slice(0);
+ return [...dates];
}
/**
@@ -40,7 +40,7 @@ export class DateUtilities {
* @param d1
* @param d2
*/
- dayDiff(d1: Date, d2: Date): Number {
+ dayDiff(d1: Date, d2: Date): number {
return Number(d2.getTime() - d1.getTime() / 31536000000);
}
diff --git a/src/app/config/PollConfig.ts b/src/app/config/PollConfig.ts
index 096332d1..f968af4e 100644
--- a/src/app/config/PollConfig.ts
+++ b/src/app/config/PollConfig.ts
@@ -57,8 +57,8 @@ export class PollConfig {
customUrl = ''; // custom slug in the url, must be unique
customUrlIsUnique = null; // given by the backend
urlSlugPublic = null;
- urlPublic = environment.production ? '' : environment.baseHref + '/#/poll/id/4';
- urlAdmin = environment.baseHref + '/#/admin/d65es45fd45sdf45sd345f312sdf31sgfd345';
+ urlPublic = environment.production ? '' : window.location.origin + '/#/poll/id/4';
+ urlAdmin = window.location.origin + '/#/admin/d65es45fd45sdf45sd345f312sdf31sgfd345';
adminKey = ''; // key to change config of the poll
owner_modifier_token = ''; // key to change a vote stack
canModifyAnswers = true; // bool for the frontend selector
diff --git a/src/app/config/Routes.ts b/src/app/config/Routes.ts
deleted file mode 100644
index 78455a40..00000000
--- a/src/app/config/Routes.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { AdminComponent } from '../pages/admin/admin.component';
-import { AnswersComponent } from '../pages/answers/answers.component';
-import { BaseComponent } from '../pages/base-page/base.component';
-import { CreateOrRetrieveComponent } from '../pages/create-or-retrieve/create-or-retrieve.component';
-import { DatesComponent } from '../pages/dates/dates.component';
-import { EndConfirmationComponent } from '../pages/end-confirmation/end-confirmation.component';
-import { HomeComponent } from '../pages/home/home.component';
-import { KindComponent } from '../pages/kind/kind.component';
-import { PasswordComponent } from '../pages/password/password.component';
-import { PicturesComponent } from '../pages/pictures/pictures.component';
-import { PollDisplayComponent } from '../pages/poll-display/poll-display.component';
-import { ResumeComponent } from '../pages/resume/resume.component';
-import { VisibilityComponent } from '../pages/visibility/visibility.component';
-import { VotingChoiceComponent } from '../pages/voting/voting-choice/voting-choice.component';
-import { VotingComponent } from '../pages/voting/voting.component';
-import { PollGraphicComponent } from '../poll-graphic/poll-graphic.component';
-
-/**
- * each step in the form is a component
- */
-export const Routes = [
- { path: '', redirectTo: 'step/creation', pathMatch: 'full' },
- { path: 'home', component: HomeComponent },
- { path: 'base', component: BaseComponent },
- { path: 'step/base', component: BaseComponent },
- { path: 'step/creation', component: CreateOrRetrieveComponent },
- { path: 'step/date', component: DatesComponent },
- { path: 'step/kind', component: KindComponent },
- { path: 'step/answers', component: AnswersComponent },
- { path: 'step/admin', component: AdminComponent },
- { path: 'step/pictures', component: PicturesComponent },
- { path: 'step/visibility', component: VisibilityComponent },
- { path: 'step/resume', component: ResumeComponent },
- { path: 'step/end', component: EndConfirmationComponent },
- { path: 'graphic/:poll', component: PollGraphicComponent },
- { path: 'vote/poll/id/:poll', component: PollDisplayComponent },
- { path: 'vote/poll/slug/:pollSlug', component: PollDisplayComponent },
- { path: 'votingchoice', component: VotingChoiceComponent },
- { path: 'voting', component: VotingComponent },
- { path: 'step/password', component: PasswordComponent },
- { path: '**', redirectTo: '/home', pathMatch: 'full' },
-];
diff --git a/src/app/config/graph-canevas-options.ts b/src/app/config/graph-canevas-options.ts
deleted file mode 100644
index e620ec56..00000000
--- a/src/app/config/graph-canevas-options.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-export var graphOptions = {
- legend: { display: false },
- scales: {
- xAxes: [
- {
- gridLines: { drawBorder: false, display: false },
- display: false,
- stacked: true,
- ticks: {
- beginAtZero: true,
- maxRotation: 0,
- minRotation: 0,
- },
- },
- ],
- yAxes: [
- {
- gridLines: { drawBorder: true, display: false },
- display: true,
- stacked: true,
- },
- ],
- },
-};
diff --git a/src/app/config/mocks/choice.ts b/src/app/mocks/choice.ts
similarity index 100%
rename from src/app/config/mocks/choice.ts
rename to src/app/mocks/choice.ts
diff --git a/src/app/config/mocks/comment-same-text-error.json b/src/app/mocks/comment-same-text-error.json
similarity index 100%
rename from src/app/config/mocks/comment-same-text-error.json
rename to src/app/mocks/comment-same-text-error.json
diff --git a/src/app/config/mocks/comment-too-fast-error.json b/src/app/mocks/comment-too-fast-error.json
similarity index 100%
rename from src/app/config/mocks/comment-too-fast-error.json
rename to src/app/mocks/comment-too-fast-error.json
diff --git a/src/app/config/mocks/config-poll-dessins-animes.json b/src/app/mocks/config-poll-dessins-animes.json
similarity index 100%
rename from src/app/config/mocks/config-poll-dessins-animes.json
rename to src/app/mocks/config-poll-dessins-animes.json
diff --git a/src/app/config/mocks/created-comment.json b/src/app/mocks/created-comment.json
similarity index 100%
rename from src/app/config/mocks/created-comment.json
rename to src/app/mocks/created-comment.json
diff --git a/src/app/config/mocks/mock-comments.ts b/src/app/mocks/mock-comments.ts
similarity index 100%
rename from src/app/config/mocks/mock-comments.ts
rename to src/app/mocks/mock-comments.ts
diff --git a/src/app/config/mocks/mock-graph.ts b/src/app/mocks/mock-graph.ts
similarity index 100%
rename from src/app/config/mocks/mock-graph.ts
rename to src/app/mocks/mock-graph.ts
diff --git a/src/app/config/mocks/mock-poll3.ts b/src/app/mocks/mock-poll3.ts
similarity index 100%
rename from src/app/config/mocks/mock-poll3.ts
rename to src/app/mocks/mock-poll3.ts
diff --git a/src/app/config/mocks/mock-success-vote.ts b/src/app/mocks/mock-success-vote.ts
similarity index 100%
rename from src/app/config/mocks/mock-success-vote.ts
rename to src/app/mocks/mock-success-vote.ts
diff --git a/src/app/config/mocks/mockmypolls.ts b/src/app/mocks/mockmypolls.ts
similarity index 100%
rename from src/app/config/mocks/mockmypolls.ts
rename to src/app/mocks/mockmypolls.ts
diff --git a/src/app/config/mocks/votestack-success.json b/src/app/mocks/votestack-success.json
similarity index 100%
rename from src/app/config/mocks/votestack-success.json
rename to src/app/mocks/votestack-success.json
diff --git a/src/app/pages/poll-display/poll-display.component.ts b/src/app/pages/poll-display/poll-display.component.ts
index 68a05dac..1fec9a67 100644
--- a/src/app/pages/poll-display/poll-display.component.ts
+++ b/src/app/pages/poll-display/poll-display.component.ts
@@ -1,10 +1,10 @@
import { Component, OnInit } from '@angular/core';
import { BaseComponent } from '../base-page/base.component';
import { ConfigService } from '../../services/config.service';
-import { mockComments } from '../../config/mocks/mock-comments';
+import { mockComments } from '../../mocks/mock-comments';
import { ActivatedRoute, Router } from '@angular/router';
import { environment } from '../../../environments/environment';
-import { mockPoll3 } from '../../config/mocks/mock-poll3';
+import { mockPoll3 } from '../../mocks/mock-poll3';
@Component({
selector: 'framadate-poll-display',
diff --git a/src/app/pages/visibility/visibility.component.html b/src/app/pages/visibility/visibility.component.html
index 5a168568..14951634 100644
--- a/src/app/pages/visibility/visibility.component.html
+++ b/src/app/pages/visibility/visibility.component.html
@@ -103,7 +103,7 @@
diff --git a/src/app/pages/visibility/visibility.component.ts b/src/app/pages/visibility/visibility.component.ts
index 2c30308a..b3b21c3f 100644
--- a/src/app/pages/visibility/visibility.component.ts
+++ b/src/app/pages/visibility/visibility.component.ts
@@ -11,7 +11,7 @@ import { PollUtilities } from '../../config/PollUtilities';
})
export class VisibilityComponent extends BaseComponent implements OnInit {
showCustomPassword = false;
- baseUrl = environment.baseApiHref;
+ baseUrl = environment.api.baseHref;
environment = environment;
constructor(public config: ConfigService, public utils: PollUtilities) {
diff --git a/src/app/pages/voting/voting-choice/voting-choice.component.spec.ts b/src/app/pages/voting/voting-choice/voting-choice.component.spec.ts
index 9d416f5a..bb33374b 100644
--- a/src/app/pages/voting/voting-choice/voting-choice.component.spec.ts
+++ b/src/app/pages/voting/voting-choice/voting-choice.component.spec.ts
@@ -7,8 +7,8 @@ import { ConfirmationService, MessageService } from 'primeng';
import { Router } from '@angular/router';
import { ConfigService } from '../../../services/config.service';
import { VotingChoiceComponent } from './voting-choice.component';
-import { mockChoice } from '../../../config/mocks/choice';
-import { mockPoll3 } from '../../../config/mocks/mock-poll3';
+import { mockChoice } from '../../../mocks/choice';
+import { mockPoll3 } from '../../../mocks/mock-poll3';
const routerSpy = jasmine.createSpyObj('Router', ['navigateByUrl']);
diff --git a/src/app/pages/voting/voting-comment/voting-comment.component.ts b/src/app/pages/voting/voting-comment/voting-comment.component.ts
index bf66f443..15d52f04 100644
--- a/src/app/pages/voting/voting-comment/voting-comment.component.ts
+++ b/src/app/pages/voting/voting-comment/voting-comment.component.ts
@@ -1,5 +1,5 @@
import { Component, Input, OnInit } from '@angular/core';
-import { mockComments } from '../../../config/mocks/mock-comments';
+import { mockComments } from '../../../mocks/mock-comments';
@Component({
selector: 'framadate-voting-comment',
diff --git a/src/app/pages/voting/voting-summary/voting-summary.component.html b/src/app/pages/voting/voting-summary/voting-summary.component.html
index df5569fc..49d1989b 100644
--- a/src/app/pages/voting/voting-summary/voting-summary.component.html
+++ b/src/app/pages/voting/voting-summary/voting-summary.component.html
@@ -110,7 +110,7 @@
diff --git a/src/app/pages/voting/voting-summary/voting-summary.component.ts b/src/app/pages/voting/voting-summary/voting-summary.component.ts
index 137fb41f..3368898a 100644
--- a/src/app/pages/voting/voting-summary/voting-summary.component.ts
+++ b/src/app/pages/voting/voting-summary/voting-summary.component.ts
@@ -1,6 +1,6 @@
import { Component, Input, OnInit } from '@angular/core';
import { ConfigService } from '../../../services/config.service';
-import { mockPoll3 } from '../../../config/mocks/mock-poll3';
+import { mockPoll3 } from '../../../mocks/mock-poll3';
@Component({
selector: 'framadate-voting-summary',
@@ -8,14 +8,15 @@ import { mockPoll3 } from '../../../config/mocks/mock-poll3';
styleUrls: ['./voting-summary.component.scss'],
})
export class VotingSummaryComponent implements OnInit {
- preferred: string = 'rien';
- severalPreferred: boolean = false;
+ public displayConfirmVoteModalAdmin = false;
+ public preferred = 'rien';
+ public severalPreferred = false;
@Input() pollconfig = mockPoll3;
constructor(public config: ConfigService) {}
- ngOnInit() {
+ ngOnInit(): void {
this.computePreferred();
}
@@ -44,7 +45,7 @@ export class VotingSummaryComponent implements OnInit {
});
}
- showModalDialog() {
- this.config.displayConfirmVoteModalAdmin = true;
+ toggleModalDialogVisibility(): void {
+ this.displayConfirmVoteModalAdmin = !this.displayConfirmVoteModalAdmin;
}
}
diff --git a/src/app/poll-administration/poll-administration.module.ts b/src/app/poll-administration/poll-administration.module.ts
new file mode 100644
index 00000000..7dff711e
--- /dev/null
+++ b/src/app/poll-administration/poll-administration.module.ts
@@ -0,0 +1,8 @@
+import { CommonModule } from '@angular/common';
+import { NgModule } from '@angular/core';
+
+@NgModule({
+ declarations: [],
+ imports: [CommonModule],
+})
+export class PollAdministrationModule {}
diff --git a/src/app/poll-graphic/poll-graphic.component.ts b/src/app/poll-graphic/poll-graphic.component.ts
index 37283a66..f2c86d47 100644
--- a/src/app/poll-graphic/poll-graphic.component.ts
+++ b/src/app/poll-graphic/poll-graphic.component.ts
@@ -1,10 +1,9 @@
import { Component, Inject, OnInit } from '@angular/core';
import { Chart } from 'chart.js';
import { DOCUMENT } from '@angular/common';
-import { mockGraphConfig } from '../config/mocks/mock-graph';
-import { graphOptions } from '../config/graph-canevas-options';
+import { mockGraphConfig } from '../mocks/mock-graph';
import { ConfigService } from '../services/config.service';
-import { mockPoll3 } from '../config/mocks/mock-poll3';
+import { mockPoll3 } from '../mocks/mock-poll3';
@Component({
selector: 'framadate-poll-graphic',
@@ -12,19 +11,19 @@ import { mockPoll3 } from '../config/mocks/mock-poll3';
styleUrls: ['./poll-graphic.component.scss'],
})
export class PollGraphicComponent implements OnInit {
- isColorblind: boolean = false;
+ isColorblind = false;
pollConfigRetrieved: any = mockPoll3;
graphicConfig: any = mockGraphConfig;
preferred: any = 'rien';
yesList: number[] = [];
maybeList: number[] = [];
noList: number[] = [];
- nbPoll: number = 0;
+ nbPoll = 0;
dateList: string[] = [];
constructor(@Inject(DOCUMENT) private document: any, private config: ConfigService) {}
- ngOnInit() {
+ ngOnInit(): void {
this.formatDataAnswers(this.graphicConfig);
this.isColorblind = false;
this.pollConfigRetrieved = new Chart(this.document.getElementById('graph'), {
@@ -52,15 +51,15 @@ export class PollGraphicComponent implements OnInit {
},
],
},
- options: graphOptions,
+ options: this.getSettedGraphOptions(),
});
}
- toggleColorblind() {
+ public toggleColorblind(): void {
this.isColorblind = !this.isColorblind;
}
- formatDataAnswers(poll) {
+ public formatDataAnswers(poll): void {
// if (poll && poll.pollType === "date") {
this.initPollCounter();
poll.answers.forEach((response) => {
@@ -79,11 +78,35 @@ export class PollGraphicComponent implements OnInit {
// }
}
- initPollCounter() {
+ public initPollCounter(): void {
this.nbPoll++;
this.dateList[this.nbPoll - 1] = 'jeudi';
this.maybeList[this.nbPoll - 1] = 0;
this.yesList[this.nbPoll - 1] = 0;
this.noList[this.nbPoll - 1] = 0;
}
+
+ private getSettedGraphOptions(): any {
+ // TODO: create interfaces, or find another way to work. "any" return type should be removed.
+ return {
+ legend: { display: false },
+ scales: {
+ xAxes: [
+ {
+ gridLines: { drawBorder: false, display: false },
+ display: false,
+ stacked: true,
+ ticks: { beginAtZero: true, maxRotation: 0, minRotation: 0 },
+ },
+ ],
+ yAxes: [
+ {
+ gridLines: { drawBorder: true, display: false },
+ display: true,
+ stacked: true,
+ },
+ ],
+ },
+ };
+ }
}
diff --git a/src/app/poll-participation/poll-participation.module.ts b/src/app/poll-participation/poll-participation.module.ts
new file mode 100644
index 00000000..c120c6bb
--- /dev/null
+++ b/src/app/poll-participation/poll-participation.module.ts
@@ -0,0 +1,8 @@
+import { CommonModule } from '@angular/common';
+import { NgModule } from '@angular/core';
+
+@NgModule({
+ declarations: [],
+ imports: [CommonModule],
+})
+export class PollParticipationModule {}
diff --git a/src/app/services/config.service.ts b/src/app/services/config.service.ts
index 838117da..e6917e00 100644
--- a/src/app/services/config.service.ts
+++ b/src/app/services/config.service.ts
@@ -4,9 +4,9 @@ import { HttpClient } from '@angular/common/http';
import { environment } from '../../environments/environment';
import { ConfirmationService, MessageService } from 'primeng/api';
import { Router } from '@angular/router';
-import { mockMyPolls } from '../config/mocks/mockmypolls';
-import { mockPoll3 } from '../config/mocks/mock-poll3';
-import { mockSuccessVote } from '../config/mocks/mock-success-vote';
+import { mockMyPolls } from '../mocks/mockmypolls';
+import { mockPoll3 } from '../mocks/mock-poll3';
+import { mockSuccessVote } from '../mocks/mock-success-vote';
import { PollUtilities } from '../config/PollUtilities';
const LocalstoragePreferences = {
@@ -25,7 +25,7 @@ const LocalstoragePreferences = {
export class ConfigService extends PollConfig {
preferences: any = LocalstoragePreferences; // user specific preferences, stored in localstorage, used for theme.
loading = false;
- baseHref: any = environment.baseApiHref;
+ apiBaseHref: any = environment.api.baseHref;
constructor(
private http: HttpClient,
@@ -138,7 +138,7 @@ export class ConfigService extends PollConfig {
return jsonConfig;
}
- checkIfSlugIsUniqueInDatabase(slug: string = '') {
+ checkIfSlugIsUniqueInDatabase(slug = '') {
this.customUrlIsUnique = null;
if (!slug) {
slug = this.utils.makeSlug(this);
@@ -148,7 +148,7 @@ export class ConfigService extends PollConfig {
// TODO
this.todo('check slug is unique');
this.http
- .get(`${this.baseHref}/check-slug-is-uniq/${slug}`, this.utils.makeHeaders({ slug: this.customUrl }))
+ .get(`${this.apiBaseHref}/check-slug-is-uniq/${slug}`, this.utils.makeHeaders({ slug: this.customUrl }))
.subscribe(
(res: any) => {
this.customUrlIsUnique = res.poll.isUnique;
@@ -170,7 +170,7 @@ export class ConfigService extends PollConfig {
this.todo('send email for real : TODO');
this.loading = true;
- this.http.get(`${this.baseHref}/send-polls-to-user/${this.myEmail}`, this.utils.makeHeaders()).subscribe(
+ this.http.get(`${this.apiBaseHref}/send-polls-to-user/${this.myEmail}`, this.utils.makeHeaders()).subscribe(
(res) => {
// message: 'Trouvé! Allez voir votre boite email',
this.myPolls = res;
@@ -211,7 +211,7 @@ export class ConfigService extends PollConfig {
*/
getPollByURL(url: string) {
this.todo();
- return this.http.get(`${this.baseHref}/poll/slug/${url}`, this.utils.makeHeaders());
+ return this.http.get(`${this.apiBaseHref}/poll/slug/${url}`, this.utils.makeHeaders());
}
/**
@@ -220,7 +220,7 @@ export class ConfigService extends PollConfig {
* @param id
*/
getPollById(id: string, password?: string) {
- return this.http.get(`${this.baseHref}/poll/${id}`, this.utils.makeHeaders({ body: password }));
+ return this.http.get(`${this.apiBaseHref}/poll/${id}`, this.utils.makeHeaders({ body: password }));
}
fetchPollFromRoute(event) {
@@ -233,7 +233,7 @@ export class ConfigService extends PollConfig {
* @param ownerEmail
*/
getMyPolls(ownerEmail: string) {
- this.http.get(`${this.baseHref}/my-polls`, this.utils.makeHeaders({ ownerEmail })).subscribe(
+ this.http.get(`${this.apiBaseHref}/my-polls`, this.utils.makeHeaders({ ownerEmail })).subscribe(
(res: any) => {
// this.myPolls = res.poll;
},
@@ -256,16 +256,16 @@ export class ConfigService extends PollConfig {
this.currentPoll = res;
this.pollId = res.poll.id;
this.owner_modifier_token = res.owner_modifier_token;
- this.urlPublic = this.baseHref + '#/vote/poll/id/' + res.poll.id;
- this.urlSlugPublic = this.baseHref + '#/vote/poll/slug/' + res.poll.id;
+ this.urlPublic = this.apiBaseHref + '#/vote/poll/id/' + res.poll.id;
+ this.urlSlugPublic = this.apiBaseHref + '#/vote/poll/slug/' + res.poll.id;
if (res.poll.customUrl) {
- this.urlSlugPublic = this.baseHref + '#/vote/poll/id/' + res.poll.customUrl;
+ this.urlSlugPublic = this.apiBaseHref + '#/vote/poll/id/' + res.poll.customUrl;
}
if (res.vote_stack) {
this.loadVoteStack(res.vote_stack);
}
this.adminKey = res.admin_key;
- this.urlAdmin = this.baseHref + '#/admin/' + res.admin_key;
+ this.urlAdmin = this.apiBaseHref + '#/admin/' + res.admin_key;
}
resetCurrentChoicesAnswers() {
@@ -312,7 +312,7 @@ export class ConfigService extends PollConfig {
createPollFromConfig(config: any) {
this.loading = true;
console.log('config', config);
- return this.http.post(`${this.baseHref}/poll`, config, this.utils.makeHeaders()).subscribe(
+ return this.http.post(`${this.apiBaseHref}/poll`, config, this.utils.makeHeaders()).subscribe(
(res: any) => {
// redirect to the page to administrate the new poll
this.messageService.add({ severity: 'success', summary: 'Sondage Créé' });
@@ -372,7 +372,7 @@ export class ConfigService extends PollConfig {
this.handleVoteAdded(mockSuccessVote);
return;
}
- this.http.post(`${this.baseHref}/poll/${this.pollId}/vote`, voteStack, this.utils.makeHeaders()).subscribe(
+ this.http.post(`${this.apiBaseHref}/poll/${this.pollId}/vote`, voteStack, this.utils.makeHeaders()).subscribe(
(res: any) => {
this.handleVoteAdded(res);
},
@@ -384,7 +384,8 @@ export class ConfigService extends PollConfig {
handleVoteAdded(res) {
if (this.isAdmin) {
- this.displayConfirmVoteModalAdmin = true;
+ // TODO : REFACTO, displayConfirmVoteModalAdmin exists only in voting-summary.component
+ // this.displayConfirmVoteModalAdmin = true;
}
// save modifier token
this.myVoteStack.modifier_token = res.modifier_token;
@@ -405,7 +406,7 @@ export class ConfigService extends PollConfig {
}
this.http
.patch(
- `${this.baseHref}/vote-stack/${voteStack.id}/token/${this.owner_modifier_token}`,
+ `${this.apiBaseHref}/vote-stack/${voteStack.id}/token/${this.owner_modifier_token}`,
voteStack,
this.utils.makeHeaders()
)
@@ -436,7 +437,7 @@ export class ConfigService extends PollConfig {
};
}
console.log('comment', comment);
- this.http.post(`${this.baseHref}/poll/${this.pollId}/comment`, comment, this.utils.makeHeaders()).subscribe(
+ this.http.post(`${this.apiBaseHref}/poll/${this.pollId}/comment`, comment, this.utils.makeHeaders()).subscribe(
(res: any) => {
this.messageService.add({
severity: 'success',
@@ -468,18 +469,20 @@ export class ConfigService extends PollConfig {
this.title +
') permanentely?',
accept: () => {
- this.http.delete(`${this.baseHref}/poll/${this.pollId}/comments`, this.utils.makeHeaders()).subscribe(
- (res: any) => {
- this.messageService.add({
- severity: 'success',
- summary: 'Commentaires bien supprimés',
- detail: 'Commentaires du sondage "' + this.title + '" supprimé',
- });
- },
- (e) => {
- this.handleError(e);
- }
- );
+ this.http
+ .delete(`${this.apiBaseHref}/poll/${this.pollId}/comments`, this.utils.makeHeaders())
+ .subscribe(
+ (res: any) => {
+ this.messageService.add({
+ severity: 'success',
+ summary: 'Commentaires bien supprimés',
+ detail: 'Commentaires du sondage "' + this.title + '" supprimé',
+ });
+ },
+ (e) => {
+ this.handleError(e);
+ }
+ );
},
});
}
@@ -492,7 +495,7 @@ export class ConfigService extends PollConfig {
this.title +
') permanentely?',
accept: () => {
- this.http.delete(`${this.baseHref}/poll/${this.pollId}/votes`, this.utils.makeHeaders()).subscribe(
+ this.http.delete(`${this.apiBaseHref}/poll/${this.pollId}/votes`, this.utils.makeHeaders()).subscribe(
(res: any) => {
this.messageService.add({
severity: 'success',
@@ -524,7 +527,7 @@ export class ConfigService extends PollConfig {
self.title +
') and all is data permanentely?',
accept: () => {
- this.http.delete(`${this.baseHref}/poll/${this.pollId}`, this.utils.makeHeaders()).subscribe(
+ this.http.delete(`${this.apiBaseHref}/poll/${this.pollId}`, this.utils.makeHeaders()).subscribe(
(res: any) => {
this.messageService.add({
severity: 'success',
@@ -549,7 +552,7 @@ export class ConfigService extends PollConfig {
* TODO
*/
updatePoll(voteStack: any) {
- this.http.put(`${this.baseHref}/poll/${this.pollId}`, voteStack, this.utils.makeHeaders()).subscribe(
+ this.http.put(`${this.apiBaseHref}/poll/${this.pollId}`, voteStack, this.utils.makeHeaders()).subscribe(
(res: any) => {
this.messageService.add({
severity: 'success',
@@ -645,7 +648,7 @@ export class ConfigService extends PollConfig {
}
download(filename, text) {
- var element = document.createElement('a');
+ const element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
diff --git a/src/app/services/poll-service.service.spec.ts b/src/app/services/poll-service.service.spec.ts
deleted file mode 100644
index e2a84713..00000000
--- a/src/app/services/poll-service.service.spec.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-
-import { PollService } from './poll.service';
-
-describe('PollServiceService', () => {
- beforeEach(() => TestBed.configureTestingModule({}));
-
- it('should be created', () => {
- const service: PollService = TestBed.get(PollService);
- expect(service).toBeTruthy();
- });
-});
diff --git a/src/app/services/poll.service.ts b/src/app/services/poll.service.ts
deleted file mode 100644
index 21d42e22..00000000
--- a/src/app/services/poll.service.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Injectable } from '@angular/core';
-import { environment } from '../../environments/environment';
-
-@Injectable({
- providedIn: 'root',
-})
-export class PollService {
- private baseHref: string = environment.baseApiHref;
-
- constructor() {}
-}
diff --git a/src/app/services/progression.service.spec.ts b/src/app/services/progression.service.spec.ts
deleted file mode 100644
index 5833109e..00000000
--- a/src/app/services/progression.service.spec.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-
-import { ConfigService } from './config.service';
-
-describe('ConfigService', () => {
- beforeEach(() => TestBed.configureTestingModule({}));
-
- it('should be created', () => {
- const service: ConfigService = TestBed.get(ConfigService);
- expect(service).toBeTruthy();
- });
-});
diff --git a/src/app/shared/enums/answer-granularity.enum.ts b/src/app/shared/enums/answer-granularity.enum.ts
new file mode 100644
index 00000000..41db4d07
--- /dev/null
+++ b/src/app/shared/enums/answer-granularity.enum.ts
@@ -0,0 +1,4 @@
+export enum AnswerGranularity {
+ BASIC = 'BASIC',
+ COMPLEX = 'COMPLEX',
+}
diff --git a/src/app/shared/enums/answer-type.enum.ts b/src/app/shared/enums/answer-type.enum.ts
new file mode 100644
index 00000000..bb70f154
--- /dev/null
+++ b/src/app/shared/enums/answer-type.enum.ts
@@ -0,0 +1,5 @@
+export enum AnswerType {
+ YES = 'YES',
+ NO = 'NO',
+ MAYBE = 'MAYBE',
+}
diff --git a/src/app/shared/enums/poll-type.enum.ts b/src/app/shared/enums/poll-type.enum.ts
new file mode 100644
index 00000000..ac9b2432
--- /dev/null
+++ b/src/app/shared/enums/poll-type.enum.ts
@@ -0,0 +1,4 @@
+export enum PollType {
+ CLASSIC = 'CLASSIC',
+ DATES = 'DATES',
+}
diff --git a/src/app/shared/enums/theme.enum.ts b/src/app/shared/enums/theme.enum.ts
new file mode 100644
index 00000000..fd0d9f6a
--- /dev/null
+++ b/src/app/shared/enums/theme.enum.ts
@@ -0,0 +1,5 @@
+export enum Theme {
+ LIGHT = 'LIGHT',
+ DARK = 'DARK',
+ RED = 'RED',
+}
diff --git a/src/app/shared/interfaces/date-options.interface.ts b/src/app/shared/interfaces/date-options.interface.ts
new file mode 100644
index 00000000..63bd34a6
--- /dev/null
+++ b/src/app/shared/interfaces/date-options.interface.ts
@@ -0,0 +1,5 @@
+export interface DateOption {
+ timeList: any;
+ literal: string;
+ date_object?: object;
+}
diff --git a/src/app/shared/models/answer.model.ts b/src/app/shared/models/answer.model.ts
new file mode 100644
index 00000000..03e14b92
--- /dev/null
+++ b/src/app/shared/models/answer.model.ts
@@ -0,0 +1,6 @@
+import { AnswerType } from '../enums/answer-type.enum';
+import { PollOption } from './poll-options.model';
+
+export class Answer {
+ constructor(public pollOption: PollOption, public type: AnswerType, public userPseudo: string) {}
+}
diff --git a/src/app/shared/models/poll-config.model.ts b/src/app/shared/models/poll-config.model.ts
new file mode 100644
index 00000000..b3cadaeb
--- /dev/null
+++ b/src/app/shared/models/poll-config.model.ts
@@ -0,0 +1,13 @@
+import { AnswerGranularity } from '../enums/answer-granularity.enum';
+
+export class PollConfig {
+ constructor(
+ public allowSeveralHours = true,
+ public isVisibleToAnyoneWithTheLink: boolean = true,
+ public answerType: AnswerGranularity = AnswerGranularity.BASIC,
+ public creationDate: Date = new Date(),
+ public expirationDate?: Date,
+ public canVotersModifyTheirAnswers = true,
+ public isProtectedByPassword: boolean = false
+ ) {}
+}
diff --git a/src/app/shared/models/poll-options.model.ts b/src/app/shared/models/poll-options.model.ts
new file mode 100644
index 00000000..da14d52e
--- /dev/null
+++ b/src/app/shared/models/poll-options.model.ts
@@ -0,0 +1,9 @@
+import { isValid } from 'date-fns';
+
+export class PollOption {
+ constructor(public label: string, public url?: string, public subOptions?: PollOption[]) {}
+
+ public isDatePoll(): boolean {
+ return isValid(this.label);
+ }
+}
diff --git a/src/app/shared/models/poll.model.ts b/src/app/shared/models/poll.model.ts
new file mode 100644
index 00000000..600aafa4
--- /dev/null
+++ b/src/app/shared/models/poll.model.ts
@@ -0,0 +1,19 @@
+import { PollType } from '../enums/poll-type.enum';
+import { Answer } from './answer.model';
+import { PollConfig } from './poll-config.model';
+import { PollOption } from './poll-options.model';
+import { User } from './user.model';
+
+export class Poll {
+ constructor(
+ public id: string,
+ public slug: string,
+ public type: PollType,
+ public title: string,
+ public description: string,
+ public owner: User,
+ public config: PollConfig,
+ public options: PollOption[] = [],
+ public answers: Answer[] = []
+ ) {}
+}
diff --git a/src/app/shared/models/ui-config.model.ts b/src/app/shared/models/ui-config.model.ts
new file mode 100644
index 00000000..d748cfea
--- /dev/null
+++ b/src/app/shared/models/ui-config.model.ts
@@ -0,0 +1,5 @@
+import { Theme } from '../enums/theme.enum';
+
+export class UIConfig {
+ constructor(public isMenuVisible = true, public theme: Theme.LIGHT) {}
+}
diff --git a/src/app/shared/models/user.model.ts b/src/app/shared/models/user.model.ts
new file mode 100644
index 00000000..9d381d7e
--- /dev/null
+++ b/src/app/shared/models/user.model.ts
@@ -0,0 +1,10 @@
+import { Poll } from './poll.model';
+
+export class User {
+ constructor(
+ public isOwner: boolean = false,
+ public pseudo?: string,
+ public email?: string,
+ public polls?: Poll[]
+ ) {}
+}
diff --git a/src/app/shared/services/api.service.spec.ts b/src/app/shared/services/api.service.spec.ts
new file mode 100644
index 00000000..76f8ad98
--- /dev/null
+++ b/src/app/shared/services/api.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { ApiService } from './api.service';
+
+describe('ApiService', () => {
+ let service: ApiService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(ApiService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/api.service.ts b/src/app/shared/services/api.service.ts
new file mode 100644
index 00000000..17e0f0fe
--- /dev/null
+++ b/src/app/shared/services/api.service.ts
@@ -0,0 +1,195 @@
+import { Injectable } from '@angular/core';
+import axios, { AxiosResponse } from 'axios';
+import { environment } from 'src/environments/environment';
+
+import { Poll } from '../models/poll.model';
+import { User } from '../models/user.model';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class ApiService {
+ ////////////
+ // CREATE //
+ ////////////
+ public async savePoll(poll: Poll): Promise {
+ try {
+ await axios.post(`${environment.api.baseHref}${environment.api.endpoints.poll.root}`, {
+ params: { config: poll.config },
+ });
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async saveVote(poll: Poll): Promise {
+ try {
+ // TODO: add the votestack in the params
+ await axios.post(
+ `${environment.api.baseHref}${environment.api.endpoints.poll.root}/${poll.id}${environment.api.endpoints.vote}`,
+ { params: { voteStack: {} } }
+ );
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async saveComment(poll: Poll, comment: string): Promise {
+ try {
+ // TODO: add the comment in the params
+ await axios.post(
+ `${environment.api.baseHref}${environment.api.endpoints.poll.root}/${poll.id}${environment.api.endpoints.comment}`,
+ { params: { comment } }
+ );
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ //////////
+ // READ //
+ //////////
+ public async isSlugAvailable(slug: string): Promise {
+ try {
+ // TODO: what is the return of the API ? could it be changed to an object { isAvailable: true } ?
+ const response: AxiosResponse = await axios.get(
+ `${environment.api.baseHref}${environment.api.endpoints.slug.isAvailable}/${slug}`
+ );
+ if (response) {
+ const { isAvailable } = response.data;
+ return isAvailable;
+ }
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async sendUserPollsByEmail(email: string): Promise {
+ // If user is not authenticated: the list of polls is send to user's email by the backend.
+ try {
+ const response: AxiosResponse = await axios.get(
+ `${environment.api.baseHref}${environment.api.endpoints.poll.byEmail.sendEmail}/${email}`
+ );
+ return response ? response.data : [];
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async getUserPollsByEmail(user: User): Promise {
+ // If user is authenticated : retrieve polls & display directly in frontend.
+ // TODO: Backend should handle this case. Actually the endpoint doesn't exist in backend.
+ try {
+ const response: AxiosResponse = await axios.get(
+ `${environment.api.baseHref}${environment.api.endpoints.poll.byEmail.retrieve}/${user.email}`
+ );
+ return response ? response.data : [];
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async getPollsByUrl(url: string): Promise {
+ try {
+ const response: AxiosResponse = await axios.get(
+ `${environment.api.baseHref}${environment.api.endpoints.poll.byUrl}/${url}`
+ );
+ return response ? response.data : [];
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async getPollById(id: string, password?: string): Promise {
+ try {
+ const response: AxiosResponse = await axios.get(
+ `${environment.api.baseHref}${environment.api.endpoints.poll.root}/${id}`,
+ password ? { params: { password } } : {}
+ );
+ return response ? response.data : [];
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ ////////////
+ // UPDATE //
+ ////////////
+ public async updatePoll(poll: Poll): Promise {
+ try {
+ // TODO: implement the params when entities are finalized.
+ await axios.put(`${environment.api.baseHref}${environment.api.endpoints.poll.root}/${poll.id}`, {
+ params: { voteStack: {}, token: '' },
+ });
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async updateVote(voteStack: any): Promise {
+ try {
+ // TODO: implement the params when entities are finalized.
+ await axios.patch(`${environment.api.baseHref}${environment.api.endpoints.vote.root}/${voteStack.id}`, {
+ params: { voteStack: {}, token: '' },
+ });
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ ////////////
+ // DELETE //
+ ////////////
+
+ public async deletePoll(poll: Poll): Promise {
+ try {
+ await axios.delete(`${environment.api.baseHref}${environment.api.endpoints.poll.root}${poll.id}`, {});
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async deletePollVotes(poll: Poll): Promise {
+ try {
+ // TODO: update endpoint in Backend
+ await axios.delete(
+ `${environment.api.baseHref}${environment.api.endpoints.poll.root}${poll.id}${environment.api.endpoints.vote.root}`
+ );
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ public async deletePollComments(poll: Poll): Promise {
+ try {
+ // TODO: modify endpoint in Backend
+ await axios.delete(
+ `${environment.api.baseHref}${environment.api.endpoints.poll.root}${poll.id}${environment.api.endpoints.comment.root}`
+ );
+ } catch (error) {
+ this.handleError(error);
+ }
+ }
+
+ /////////////////////
+ // PRIVATE METHODS //
+ /////////////////////
+ private handleError(error): void {
+ if (error.response) {
+ // The request was made and the server responded with a status code
+ // that falls out of the range of 2xx
+ console.log(error.response.data);
+ console.log(error.response.status);
+ console.log(error.response.headers);
+ } else if (error.request) {
+ // The request was made but no response was received
+ // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
+ // http.ClientRequest in node.js
+ console.log(error.request);
+ } else {
+ // Something happened in setting up the request that triggered an Error
+ console.log('Error', error.message);
+ }
+ console.log(error.config);
+ }
+}
diff --git a/src/app/shared/services/comment.service.spec.ts b/src/app/shared/services/comment.service.spec.ts
new file mode 100644
index 00000000..1b037bdc
--- /dev/null
+++ b/src/app/shared/services/comment.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { CommentService } from './comment.service';
+
+describe('CommentService', () => {
+ let service: CommentService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(CommentService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/comment.service.ts b/src/app/shared/services/comment.service.ts
new file mode 100644
index 00000000..58313418
--- /dev/null
+++ b/src/app/shared/services/comment.service.ts
@@ -0,0 +1,15 @@
+import { Injectable } from '@angular/core';
+
+import { Poll } from '../models/poll.model';
+import { ApiService } from './api.service';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class CommentService {
+ constructor(private apiService: ApiService) {}
+
+ public saveComment(poll: Poll, comment: string): void {
+ this.apiService.saveComment(poll, comment);
+ }
+}
diff --git a/src/app/shared/services/date-utils.service.spec.ts b/src/app/shared/services/date-utils.service.spec.ts
new file mode 100644
index 00000000..64eb56af
--- /dev/null
+++ b/src/app/shared/services/date-utils.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { DateUtilsService } from './date-utils.service';
+
+describe('DateUtilsService', () => {
+ let service: DateUtilsService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(DateUtilsService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/date-utils.service.ts b/src/app/shared/services/date-utils.service.ts
new file mode 100644
index 00000000..5e02c515
--- /dev/null
+++ b/src/app/shared/services/date-utils.service.ts
@@ -0,0 +1,50 @@
+import { Injectable } from '@angular/core';
+import { addDays, differenceInDays, format } from 'date-fns';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class DateUtilsService {
+ public static addDaysToDate(days: number, date: Date): Date {
+ return addDays(date, days);
+ }
+
+ public static diffInDays(dateLeft: Date, dateRight: Date): number {
+ return differenceInDays(dateLeft, dateRight);
+ }
+
+ public static formatDate(date): string {
+ return format(date, 'yyyy-MM-dd');
+ }
+
+ public static orderDates(): Date[] {
+ // TODO: to implement
+ const datesOrdered: Date[] = [];
+ return datesOrdered;
+ }
+
+ public static getDatesInRange(d1: Date, d2: Date, interval: number): Date[] {
+ // TODO: refacto this
+ d1 = new Date(d1);
+ d2 = new Date(d2);
+ const dates = [];
+ while (+d1 < +d2) {
+ dates.push({
+ literal: this.formateDate(d1),
+ date_object: d1,
+ });
+ d1.setDate(d1.getDate() + interval);
+ }
+ return [...dates];
+ }
+
+ public static getDoubleDigits(str: string): string {
+ // TODO: ça sert à quoi ça ?
+ // Parce que ajouter 2 caractère à une string et ensuite slicer à partir du 2ème caractère, euh…
+ return ('00' + str).slice(-2);
+ }
+
+ private isInChronologicalOrder(date1: Date, date2: Date): boolean {
+ return date1 < date2;
+ }
+}
diff --git a/src/app/shared/services/poll-utils.service.spec.ts b/src/app/shared/services/poll-utils.service.spec.ts
new file mode 100644
index 00000000..b4d15e67
--- /dev/null
+++ b/src/app/shared/services/poll-utils.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { PollUtilsService } from './poll-utils.service';
+
+describe('PollUtilsService', () => {
+ let service: PollUtilsService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(PollUtilsService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/poll-utils.service.ts b/src/app/shared/services/poll-utils.service.ts
new file mode 100644
index 00000000..cbe39664
--- /dev/null
+++ b/src/app/shared/services/poll-utils.service.ts
@@ -0,0 +1,47 @@
+import { Injectable } from '@angular/core';
+import { v4 as uuidv4 } from 'uuid';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class PollUtilsService {
+ public makeUuid(): string {
+ // TODO: how to be sure the uuid generated in front is available in backend ?
+ // It could be a better way to generate uuids in backend.
+ return uuidv4();
+ }
+
+ /**
+ * make a uniq slug for the current poll creation
+ * @param str
+ */
+ public makeSlug(config: PollConfig): string {
+ let str = '';
+ str =
+ config.creationDate.getFullYear() +
+ '_' +
+ (config.creationDate.getMonth() + 1) +
+ '_' +
+ config.creationDate.getDate() +
+ '_' +
+ config.myName +
+ '_' +
+ config.title;
+ str = str.replace(/^\s+|\s+$/g, ''); // trim
+ str = str.toLowerCase();
+
+ // remove accents, swap ñ for n, etc
+ const from = 'àáäâèéëêìíïîòóöôùúüûñç·/_,:;';
+ const to = 'aaaaeeeeiiiioooouuuunc------';
+ for (let i = 0, l = from.length; i < l; i++) {
+ str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
+ }
+
+ str = str
+ .replace(/[^a-z0-9 -]/g, '') // remove invalid chars
+ .replace(/\s+/g, '-') // collapse whitespace and replace by -
+ .replace(/-+/g, '-'); // collapse dashes
+
+ return str;
+ }
+}
diff --git a/src/app/shared/services/poll.service.spec.ts b/src/app/shared/services/poll.service.spec.ts
new file mode 100644
index 00000000..73ce53fe
--- /dev/null
+++ b/src/app/shared/services/poll.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { PollService } from './poll.service';
+
+describe('PollService', () => {
+ let service: PollService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(PollService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/poll.service.ts b/src/app/shared/services/poll.service.ts
new file mode 100644
index 00000000..58731446
--- /dev/null
+++ b/src/app/shared/services/poll.service.ts
@@ -0,0 +1,42 @@
+import { Injectable } from '@angular/core';
+import { BehaviorSubject, Observable } from 'rxjs';
+
+import { Poll } from '../models/poll.model';
+import { ApiService } from './api.service';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class PollService {
+ private _poll: BehaviorSubject = new BehaviorSubject(undefined);
+
+ constructor(private apiService: ApiService) {}
+
+ public get poll(): Observable {
+ return this._poll.asObservable();
+ }
+
+ public updateCurrentPoll(poll: Poll): void {
+ this._poll.next(poll);
+ }
+
+ public savePoll(poll: Poll): void {
+ this.apiService.savePoll(poll);
+ }
+
+ public saveVote(poll: Poll): void {
+ this.apiService.saveVote(poll);
+ }
+
+ public saveComment(poll: Poll, comment: string): void {
+ this.apiService.saveComment(poll, comment);
+ }
+
+ public deletePollVotes(poll: Poll): void {
+ this.apiService.deletePollVotes(poll);
+ }
+
+ public deletePollComments(poll: Poll): void {
+ this.apiService.deletePollComments(poll);
+ }
+}
diff --git a/src/app/shared/services/theme.service.spec.ts b/src/app/shared/services/theme.service.spec.ts
new file mode 100644
index 00000000..102938f6
--- /dev/null
+++ b/src/app/shared/services/theme.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { ThemeService } from './theme.service';
+
+describe('ThemeService', () => {
+ let service: ThemeService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(ThemeService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/theme.service.ts b/src/app/shared/services/theme.service.ts
new file mode 100644
index 00000000..93f19666
--- /dev/null
+++ b/src/app/shared/services/theme.service.ts
@@ -0,0 +1,8 @@
+import { Injectable } from '@angular/core';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class ThemeService {
+ constructor() {}
+}
diff --git a/src/app/shared/services/user.service.spec.ts b/src/app/shared/services/user.service.spec.ts
new file mode 100644
index 00000000..3e8525df
--- /dev/null
+++ b/src/app/shared/services/user.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { UserService } from './user.service';
+
+describe('UserService', () => {
+ let service: UserService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(UserService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/user.service.ts b/src/app/shared/services/user.service.ts
new file mode 100644
index 00000000..125019c8
--- /dev/null
+++ b/src/app/shared/services/user.service.ts
@@ -0,0 +1,19 @@
+import { Injectable } from '@angular/core';
+import { BehaviorSubject, Observable } from 'rxjs';
+
+import { User } from '../models/user.model';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class UserService {
+ private _user: BehaviorSubject = new BehaviorSubject(undefined);
+
+ public get user(): Observable {
+ return this._user.asObservable();
+ }
+
+ public updateUser(user: User): void {
+ this._user.next(user);
+ }
+}
diff --git a/src/app/shared/services/vote.service.spec.ts b/src/app/shared/services/vote.service.spec.ts
new file mode 100644
index 00000000..c0d73363
--- /dev/null
+++ b/src/app/shared/services/vote.service.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { VoteService } from './vote.service';
+
+describe('VoteService', () => {
+ let service: VoteService;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ service = TestBed.inject(VoteService);
+ });
+
+ it('should be created', () => {
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/src/app/shared/services/vote.service.ts b/src/app/shared/services/vote.service.ts
new file mode 100644
index 00000000..c84b7863
--- /dev/null
+++ b/src/app/shared/services/vote.service.ts
@@ -0,0 +1,17 @@
+import { Injectable } from '@angular/core';
+import { ApiService } from './api.service';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class VoteService {
+ constructor(private apiService: ApiService) {}
+
+ public saveVote(vote: any): void {
+ this.apiService.saveVote(vote);
+ }
+
+ public updateVote(vote: any): void {
+ this.apiService.updateVote(vote);
+ }
+}
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
new file mode 100644
index 00000000..4104f864
--- /dev/null
+++ b/src/app/shared/shared.module.ts
@@ -0,0 +1,8 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+@NgModule({
+ declarations: [],
+ imports: [CommonModule],
+})
+export class SharedModule {}
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
index 46200b00..ffb48d86 100644
--- a/src/environments/environment.prod.ts
+++ b/src/environments/environment.prod.ts
@@ -1,5 +1,18 @@
export const environment = {
production: true,
- baseHref: 'https://framadate-api.cipherbliss.com/',
- baseApiHref: 'https://framadate-api.cipherbliss.com/api/v1',
+ api: {
+ baseHref: 'https://framadate-api.cipherbliss.com/api/v1',
+ endpoints: {
+ isSlugAvailable: '/check-slug-is-uniq',
+ },
+ },
+ poll: {
+ defaultConfig: {
+ expiracyInDays: 60,
+ expiracyAfterLastModificationInDays: 180,
+ },
+ },
+ localStorage: {
+ key: 'framadate-storage',
+ },
};
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 7e5e9188..c7fcb8b6 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -1,18 +1,47 @@
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
-let baseURL = 'http://localhost:8000/';
-const baseURLProd = 'https://framadate.org/';
-const baseURLDemo = 'https://framadate-api.cipherbliss.com/';
-const apiVersion = 1;
-const testOnDemo = 0;
-if (testOnDemo) {
- baseURL = baseURLDemo;
-}
+
+const backendApiUrlsInDev = {
+ local: 'http://localhost:8000/',
+ remote: 'https://framadate-api.cipherbliss.com/',
+};
+
export const environment = {
production: false,
- baseHref: baseURL,
- baseApiHref: baseURL + 'api/v' + apiVersion,
+ api: {
+ baseHref: backendApiUrlsInDev.local + 'api/v1',
+ endpoints: {
+ slug: {
+ root: '/slug',
+ isAvailable: '/check-slug-is-uniq',
+ },
+ poll: {
+ root: '/poll',
+ byEmail: {
+ sendEmail: '/send-polls-to-user',
+ retrieve: '/my-polls',
+ },
+ byUrl: '/poll/slug',
+ byId: '/poll/slug',
+ },
+ vote: {
+ root: '/vote',
+ },
+ comment: {
+ root: '/comment',
+ },
+ },
+ },
+ poll: {
+ defaultConfig: {
+ expiracyInDays: 60,
+ expiracyAfterLastModificationInDays: 180,
+ },
+ },
+ localStorage: {
+ key: 'framadate-storage',
+ },
};
/*
@@ -22,4 +51,4 @@ export const environment = {
* This import should be commented out in production mode because it will have a negative impact
* on performance if an error is thrown.
*/
-// import 'zone.js/dist/zone-error'; // Included with Angular CLI.
+import 'zone.js/dist/zone-error'; // Included with Angular CLI.
diff --git a/tsconfig.spec.json b/tsconfig.spec.json
index 244b4bf8..a1659053 100644
--- a/tsconfig.spec.json
+++ b/tsconfig.spec.json
@@ -6,4 +6,4 @@
},
"files": ["src/test.ts", "src/polyfills.ts"],
"include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
-}
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index d8b85827..92a826cc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -118,14 +118,14 @@
rxjs "6.5.4"
"@angular/animations@^9.1.1":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.1.1.tgz#983e54d96e7a854cee801dbac214f31c03c1cfa8"
- integrity sha512-IvKv8sV0ymbzDEX2ZLW+F6nOTQqDYallHexuzRVT9txvNE8TNHyySvLcyC5dTmX9fj9LA72NZ6nFyhxq0LFvtQ==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.1.2.tgz#01bb52d5a8813701bfacbba99338d88cfc0da9b4"
+ integrity sha512-5UJ8SzCtFj4vZChVsni4K9oa4qE9tQ67bwnP6DKxkLEJKQWWyasYp+2siAi/7zD2ro2XA0qRMYhgQz5Vj6eBoQ==
"@angular/cdk@^9.2.0":
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-9.2.0.tgz#587e4a9d5046fa89a68d8eddaee6b185e2915842"
- integrity sha512-jeeznvNDpR9POuxzz8Y0zFvMynG9HCJo3ZPTqOjlOq8Lj8876+rLsHDvKEMeLdwlkdi1EweYJW1CLQzI+TwqDA==
+ version "9.2.1"
+ resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-9.2.1.tgz#9a590b8d4671fe2fa47648297b5ea372267d238f"
+ integrity sha512-aSG1UNPszkSnpNuDCNd7ZgT29oQ8vqHPmoqjvJI0JkEv3i6uEs5tRuhWl3TK39wDNuwdlq0AY47XTa/0Ppb5RQ==
optionalDependencies:
parse5 "^5.0.0"
@@ -156,14 +156,14 @@
uuid "7.0.2"
"@angular/common@^9.0.7":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.1.tgz#29828cbb5e1f3f81cd6aa9468e9e1d4f02c1c7e8"
- integrity sha512-bS13veMs7//YqYjYJ+JI78ylaCyVcdFKZKikd5SZa6+r6fajcyvLnSKqrKypG3O1BeJ8vOG/Pq54P5gWhbR6eA==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.2.tgz#cec9fbfc572bbcf715e994523b04ac48700c1b2c"
+ integrity sha512-MAQW0DGq2NhvJSETLTwuImdzwI+wboG+5Uzgc0L8C/hX7SrEE65Hmz4nIjmGi2CPGLpodfWEcCPlV0R0dHun4A==
"@angular/compiler-cli@^9.1.1":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-9.1.1.tgz#c827190576e20e276c92fc2b140ece662b082ac5"
- integrity sha512-2jGp0ck2kkLNMzXUo/3iJkrQqJ7oGXE8h2tksxBsH2ptnhexRYTHZ626t7Np128tduY5JeC7J1Jxz7MUuYsJ2Q==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-9.1.2.tgz#2b8de148aadcd58fcd31d0f1ad3b984f412f4c82"
+ integrity sha512-zC/oIuT68vtuiYrgXqWsDNi/0DQ1Ti6J6gMTrXVvZXlEDikEExTAJKrrBV5jo6B0bpUofe/dDcJaKR3Ys3cM3Q==
dependencies:
canonical-path "1.0.0"
chokidar "^3.0.0"
@@ -179,48 +179,48 @@
yargs "15.3.0"
"@angular/compiler@^9.0.7":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.1.tgz#c2964849cc42d483ef2a5dd06d8e91d69a8ebe12"
- integrity sha512-u1IP6IzUgK6lIzrG1cxp96umXgtThyhuFn/KPoyVt7wPxZ6vVR0ZxjM7zycEcrMGzk0nf0nyOKaksJk9sTXTbg==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.2.tgz#52b22120ca3c7d27dccf4239c849158ad64fb435"
+ integrity sha512-82DitvlZA5DoE++qiiJdgx6HE71h96sfLHCjjvYJHApoOcnX+zBZFBrflpbXK9W4YdvydU4Lc1Ql1eleQPeT/g==
"@angular/core@^9.0.7":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.1.tgz#0a4bb3f81e4103d141556dd5c7272f05bc78cfaa"
- integrity sha512-6lDlUlePafr/392hOvvTZZl6xPHT50U6658sHUAVIr0Un4mJ2MHNHKZtO45bpn3hM4gjFcYRQ7Rpd0umW74iTA==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.2.tgz#30970d49dc3b53c0dc68cd75dbc2c96afc7fee62"
+ integrity sha512-nAqRl+5drAnZlBT7AgSo2JJubmPNrGCvhZ83dosPEUqJoLr69/lYipnF/iqKzYn5xo4MM1O27WIhSNDtDjBmzQ==
"@angular/forms@^9.0.7":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.1.tgz#3090829dd2989207fd9a4dbc5b44b3ff9b2fe948"
- integrity sha512-NX+LuK8JFisiq3uHCOK6YoN/yIb2R9Ye5mwiOPkuZA3lZLKCnUXqCHZbM8VHy/WdjIxxeUaFMJc38yV8RVoabg==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.2.tgz#84b7c429fad81c781108fc71d694ae76eab4c808"
+ integrity sha512-/f2WhMiKDo1/RoisTI71Dy4Z4+sAsAuzgIxJEXvgDGSYvzLl9G8erFx4N6be8Cy/xXwErmp3JOwXIAXjzxF8tA==
"@angular/language-service@^9.0.7":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-9.1.1.tgz#c3aa6afdc4b5c14423086527e6f0783c3c00d600"
- integrity sha512-T+/0X2VnmgW/vzynqYTVv29qtebNvrCB/yJqtNIlqXvBjcB8XRRwZPDZvRyl5BiwEPSsJnjdRFNH9krQHxYp+g==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-9.1.2.tgz#01b6e289c43148378a54a616681f24d9e8b87183"
+ integrity sha512-0BnDIFbIAtFKS/2HDI0efcnW3DSkAAFhUWluBnssvwGzuMHikOKGeamuWM27ki3IzPQKGJ7fGS2fz8A7sMeIYQ==
"@angular/localize@^9.1.1":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.1.tgz#267d7cecb288b3019482744330da0ef9e049c85d"
- integrity sha512-5mYdSL7IwqFXWRgBXj9c5vHT15AQy2kjD40fJJsmUx4WUFr+uf0Ss9ADCfL2FjCHpATrjYKpiyJs1mAF60USPQ==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.2.tgz#c4846e2beaaf18ca7923b1d96541195e293ebef8"
+ integrity sha512-Oee/SmFB5wrvmw2evzNnNdQUUqeVg1w1B4YdqLdI7cuPv5Y+YXvo6Mz6yUh1IFELgpK9elYARLYTx6HVobbaWw==
dependencies:
"@babel/core" "7.8.3"
glob "7.1.2"
yargs "15.3.0"
"@angular/platform-browser-dynamic@^9.0.7":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.1.tgz#aaaa31a8ddf6e810755644180703118c792b8ca0"
- integrity sha512-kEox5UOwkRLjGKXLh5o5SYopoAylpKgrXtRrKRKTCMmZTpYSe1bLlXMjpwMAMZ9ZFSTvWp9iX94aT5bJDpLrRQ==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.2.tgz#5587d536184e1c92498d9000475dd8998df1b110"
+ integrity sha512-BWHxy8S71z+NmUQmtR+/Dkohlj3LQIXltOqeVdCSpjV9cultBNN3bE1w0Rjp3BmCRGCIDH7qFlr4U5woHa7ldw==
"@angular/platform-browser@^9.0.7":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.1.tgz#bb5a98a3a33a307436684c4c7e2c448c786ae466"
- integrity sha512-tjALKhdAWPErj0euIIdvx/31AHEZ7is7ADsMu+nYn2NY2gcPUuiqq3RCUJVxBYJ2Cclq1nlF0i2rEDKh7TrBKg==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.2.tgz#ae52a0a9087e682e62c33722d7d7f81813cf499a"
+ integrity sha512-/3L4DdvnebvaJUurusaq8RJBFfr/SHWG6DMmV1VVpADxe8kjREyN0LdNDSkZgVf/QcUSwNEA6153iwcF92Otew==
"@angular/router@^9.0.7":
- version "9.1.1"
- resolved "https://registry.yarnpkg.com/@angular/router/-/router-9.1.1.tgz#a296207900b623d991cd1e6371ae2341ffa40e8c"
- integrity sha512-OQ5Ctd+swF7ZNlgUxrkGKk2B4yBFqJm0QCxkM86kFDCKQV/4OButZ+4HPy1HxeozBIAmm2pbQA+YjsAUs0VZcQ==
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@angular/router/-/router-9.1.2.tgz#f23ba191c4407c4bce0b7ea7f7ca5edd47ada010"
+ integrity sha512-csxE4HkuhVR1X932Q3kSDqBoF7Awuq5dsjv0nFk78raiHgG3CNnfMLHt8xD9XtOmR7ZT+D4yh/YmIK6W7J5hbQ==
"@babel/code-frame@7.5.5":
version "7.5.5"
@@ -1054,7 +1054,7 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.0", "@babel/runtime@^7.9.2":
version "7.9.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==
@@ -1215,11 +1215,6 @@
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
-"@fortawesome/angular-fontawesome@^0.6.1":
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.6.1.tgz#1ebe5db16bfdd4be44bdde61f78c760eb4e219fa"
- integrity sha512-ARQjtRuT+ZskzJDJKPwuiGO3+7nS0iyNLU/uHVJHfG4LwGJxwVIGldwg1SU957sra0Z0OtWEajHMhiS4vB9LwQ==
-
"@fullcalendar/core@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@fullcalendar/core/-/core-4.4.0.tgz#79dbc0cca836ce628a07e739a456da11ff141373"
@@ -1748,9 +1743,9 @@
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
"@types/marked@^0.7.2":
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.7.3.tgz#3859f6fea52a2b73f42283018bd34b03f3c4fb3f"
- integrity sha512-WXdEKuT3azHxLTThd5dwnpLt2Q9QiC8iKj09KZRtVqro3pX8hhY+GbD8FZOae6SBBEJ22yKJn3c7ejL0aucAcA==
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.7.4.tgz#607685669bb1bbde2300bc58ba43486cbbee1f0a"
+ integrity sha512-fdg0NO4qpuHWtZk6dASgsrBggY+8N4dWthl1bAQG9ceKUNKFjqpHaDKCAhRUI6y8vavG7hLSJ4YBwJtZyZEXqw==
"@types/minimatch@*":
version "3.0.3"
@@ -1758,9 +1753,9 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*", "@types/node@^13.11.1":
- version "13.11.1"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.1.tgz#49a2a83df9d26daacead30d0ccc8762b128d53c7"
- integrity sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==
+ version "13.13.0"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.0.tgz#30d2d09f623fe32cde9cb582c7a6eda2788ce4a8"
+ integrity sha512-WE4IOAC6r/yBZss1oQGM5zs2D7RuKR6Q+w+X2SouPofnWn+LbCqClRyhO3ZE7Ix8nmFgo/oVuuE01cJT2XB13A==
"@types/npmlog@^4.1.2":
version "4.1.2"
@@ -1809,7 +1804,7 @@
dependencies:
"@types/react" "*"
-"@types/react@*", "@types/react@^16.9.11":
+"@types/react@*":
version "16.9.34"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.34.tgz#f7d5e331c468f53affed17a8a4d488cd44ea9349"
integrity sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow==
@@ -1833,12 +1828,17 @@
integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ==
"@types/uglify-js@*":
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.5.tgz#2c70d5c68f6e002e3b2e4f849adc5f162546f633"
- integrity sha512-L7EbSkhSaWBpkl+PZAEAqZTqtTeIsq7s/oX/q0LNnxxJoRVKQE0T81XDVyaxjiiKQwiV2vhVeYRqxdRNqGOGJw==
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.0.tgz#4490a140ca82aa855ad68093829e7fd6ae94ea87"
+ integrity sha512-3ZcoyPYHVOCcLpnfZwD47KFLr8W/mpUcgjpf1M4Q78TMJIw7KMAHSjiCLJp1z3ZrBR9pTLbe191O0TldFK5zcw==
dependencies:
source-map "^0.6.1"
+"@types/uuid@^7.0.2":
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-7.0.2.tgz#d680a9c596ef84abf5c4c07a32ffd66d582526f8"
+ integrity sha512-8Ly3zIPTnT0/8RCU6Kg/G3uTICf9sRwYOpUzSIM3503tLIKcnJPRuinHhXngJUy2MntrEf6dlpOHXJju90Qh5w==
+
"@types/webpack-env@^1.15.0":
version "1.15.1"
resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.15.1.tgz#c8e84705e08eed430b5e15b39c65b0944e4d1422"
@@ -1866,39 +1866,39 @@
source-map "^0.6.0"
"@typescript-eslint/eslint-plugin@^2.27.0":
- version "2.27.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.27.0.tgz#e479cdc4c9cf46f96b4c287755733311b0d0ba4b"
- integrity sha512-/my+vVHRN7zYgcp0n4z5A6HAK7bvKGBiswaM5zIlOQczsxj/aiD7RcgD+dvVFuwFaGh5+kM7XA6Q6PN0bvb1tw==
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.28.0.tgz#4431bc6d3af41903e5255770703d4e55a0ccbdec"
+ integrity sha512-w0Ugcq2iatloEabQP56BRWJowliXUP5Wv6f9fKzjJmDW81hOTBxRoJ4LoEOxRpz9gcY51Libytd2ba3yLmSOfg==
dependencies:
- "@typescript-eslint/experimental-utils" "2.27.0"
+ "@typescript-eslint/experimental-utils" "2.28.0"
functional-red-black-tree "^1.0.1"
regexpp "^3.0.0"
tsutils "^3.17.1"
-"@typescript-eslint/experimental-utils@2.27.0":
- version "2.27.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.27.0.tgz#801a952c10b58e486c9a0b36cf21e2aab1e9e01a"
- integrity sha512-vOsYzjwJlY6E0NJRXPTeCGqjv5OHgRU1kzxHKWJVPjDYGbPgLudBXjIlc+OD1hDBZ4l1DLbOc5VjofKahsu9Jw==
+"@typescript-eslint/experimental-utils@2.28.0":
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.28.0.tgz#1fd0961cd8ef6522687b4c562647da6e71f8833d"
+ integrity sha512-4SL9OWjvFbHumM/Zh/ZeEjUFxrYKtdCi7At4GyKTbQlrj1HcphIDXlje4Uu4cY+qzszR5NdVin4CCm6AXCjd6w==
dependencies:
"@types/json-schema" "^7.0.3"
- "@typescript-eslint/typescript-estree" "2.27.0"
+ "@typescript-eslint/typescript-estree" "2.28.0"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
"@typescript-eslint/parser@^2.27.0":
- version "2.27.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.27.0.tgz#d91664335b2c46584294e42eb4ff35838c427287"
- integrity sha512-HFUXZY+EdwrJXZo31DW4IS1ujQW3krzlRjBrFRrJcMDh0zCu107/nRfhk/uBasO8m0NVDbBF5WZKcIUMRO7vPg==
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.28.0.tgz#bb761286efd2b0714761cab9d0ee5847cf080385"
+ integrity sha512-RqPybRDquui9d+K86lL7iPqH6Dfp9461oyqvlXMNtap+PyqYbkY5dB7LawQjDzot99fqzvS0ZLZdfe+1Bt3Jgw==
dependencies:
"@types/eslint-visitor-keys" "^1.0.0"
- "@typescript-eslint/experimental-utils" "2.27.0"
- "@typescript-eslint/typescript-estree" "2.27.0"
+ "@typescript-eslint/experimental-utils" "2.28.0"
+ "@typescript-eslint/typescript-estree" "2.28.0"
eslint-visitor-keys "^1.1.0"
-"@typescript-eslint/typescript-estree@2.27.0":
- version "2.27.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.27.0.tgz#a288e54605412da8b81f1660b56c8b2e42966ce8"
- integrity sha512-t2miCCJIb/FU8yArjAvxllxbTiyNqaXJag7UOpB5DVoM3+xnjeOngtqlJkLRnMtzaRcJhe3CIR9RmL40omubhg==
+"@typescript-eslint/typescript-estree@2.28.0":
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.28.0.tgz#d34949099ff81092c36dc275b6a1ea580729ba00"
+ integrity sha512-HDr8MP9wfwkiuqzRVkuM3BeDrOC4cKbO5a6BymZBHUt5y/2pL0BXD6I/C/ceq2IZoHWhcASk+5/zo+dwgu9V8Q==
dependencies:
debug "^4.1.1"
eslint-visitor-keys "^1.1.0"
@@ -2222,16 +2222,6 @@ JSONStream@^1.3.4:
jsonparse "^1.2.0"
through ">=2.2.7 <3"
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-abbrev@1.0.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
- integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
-
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
version "1.3.7"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
@@ -2347,11 +2337,6 @@ alphanum-sort@^1.0.0:
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-amdefine@>=0.0.4:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
- integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
-
angular-date-value-accessor@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/angular-date-value-accessor/-/angular-date-value-accessor-1.0.2.tgz#96277a794fe0ab5760ceba3e7aeb3a05a63388a1"
@@ -2547,11 +2532,6 @@ array-differ@^1.0.0:
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=
-array-find-index@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
- integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
-
array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
@@ -2679,11 +2659,6 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
-async@1.x:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
- integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
-
async@^2.5.0, async@^2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
@@ -2737,6 +2712,13 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==
+axios@^0.19.2:
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
+ integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==
+ dependencies:
+ follow-redirects "1.5.10"
+
babel-code-frame@^6.22.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@@ -3478,19 +3460,6 @@ camel-case@^4.1.1:
pascal-case "^3.1.1"
tslib "^1.10.0"
-camelcase-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
- integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
- dependencies:
- camelcase "^2.0.0"
- map-obj "^1.0.0"
-
-camelcase@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
- integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-
camelcase@^5.0.0, camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
@@ -3512,9 +3481,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001038, caniuse-lite@^1.0.30001039:
- version "1.0.30001041"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001041.tgz#c2ea138dafc6fe03877921ddcddd4a02a14daf76"
- integrity sha512-fqDtRCApddNrQuBxBS7kEiSGdBsgO4wiVw4G/IClfqzfhW45MbTumfN4cuUJGTM0YGFNn97DCXPJ683PS6zwvA==
+ version "1.0.30001042"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001042.tgz#c91ec21ec2d270bd76dbc2ce261260c292b8c93c"
+ integrity sha512-igMQ4dlqnf4tWv0xjaaE02op9AJ2oQzXKjWf4EuAHFN694Uo9/EfPVIPJcmn2WkU9RqozCxx5e2KPcVClHDbDw==
canonical-path@1.0.0:
version "1.0.0"
@@ -3766,9 +3735,9 @@ cli-truncate@^0.2.1:
string-width "^1.0.1"
cli-width@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
- integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
+ integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
clipboard@^2.0.0:
version "2.0.6"
@@ -4435,13 +4404,6 @@ csstype@^2.2.0, csstype@^2.5.7:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b"
integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==
-currently-unhandled@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
- integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
- dependencies:
- array-find-index "^1.0.1"
-
custom-event@~1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
@@ -4464,19 +4426,16 @@ date-fns@^1.27.2:
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
+date-fns@^2.12.0:
+ version "2.12.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.12.0.tgz#01754c8a2f3368fc1119cf4625c3dad8c1845ee6"
+ integrity sha512-qJgn99xxKnFgB1qL4jpxU7Q2t0LOn1p8KMIveef3UZD7kqjT3tpFNNdXJelEHhE+rUgffriXriw/sOSU+cS1Hw==
+
date-format@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf"
integrity sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==
-dateformat@^1.0.6:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
- integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=
- dependencies:
- get-stdin "^4.0.1"
- meow "^3.3.0"
-
dateformat@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
@@ -4489,7 +4448,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
dependencies:
ms "2.0.0"
-debug@3.1.0, debug@~3.1.0:
+debug@3.1.0, debug@=3.1.0, debug@~3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
@@ -4515,7 +4474,7 @@ debuglog@^1.0.1:
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
-decamelize@^1.1.2, decamelize@^1.2.0:
+decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -4928,9 +4887,9 @@ ejs@^2.7.4:
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.390:
- version "1.3.403"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.403.tgz#c8bab4e2e72bf78bc28bad1cc355c061f9cc1918"
- integrity sha512-JaoxV4RzdBAZOnsF4dAlZ2ijJW72MbqO5lNfOBHUWiBQl3Rwe+mk2RCUMrRI3rSClLJ8HSNQNqcry12H+0ZjFw==
+ version "1.3.413"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.413.tgz#9c457a4165c7b42e59d66dff841063eb9bfe5614"
+ integrity sha512-Jm1Rrd3siqYHO3jftZwDljL2LYQafj3Kki5r+udqE58d0i91SkjItVJ5RwlJn9yko8i7MOcoidVKjQlgSdd1hg==
elegant-spinner@^1.0.1:
version "1.0.1"
@@ -5081,7 +5040,7 @@ errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
dependencies:
prr "~1.0.1"
-error-ex@^1.2.0, error-ex@^1.3.1:
+error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
@@ -5164,18 +5123,6 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-escodegen@1.8.x:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
- integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=
- dependencies:
- esprima "^2.7.1"
- estraverse "^1.9.1"
- esutils "^2.0.2"
- optionator "^0.8.1"
- optionalDependencies:
- source-map "~0.2.0"
-
eslint-config-prettier@^6.10.1:
version "6.10.1"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a"
@@ -5277,22 +5224,17 @@ espree@^6.1.2:
acorn-jsx "^5.2.0"
eslint-visitor-keys "^1.1.0"
-esprima@2.7.x, esprima@^2.7.1:
- version "2.7.3"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
- integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
-
esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.0.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe"
- integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
+ integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
dependencies:
- estraverse "^5.0.0"
+ estraverse "^5.1.0"
esrecurse@^4.1.0:
version "4.2.1"
@@ -5301,20 +5243,15 @@ esrecurse@^4.1.0:
dependencies:
estraverse "^4.1.0"
-estraverse@^1.9.1:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
- integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=
-
estraverse@^4.1.0, estraverse@^4.1.1:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
-estraverse@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22"
- integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==
+estraverse@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
+ integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
esutils@^2.0.2:
version "2.0.3"
@@ -5732,14 +5669,6 @@ find-up@3.0.0, find-up@^3.0.0:
dependencies:
locate-path "^3.0.0"
-find-up@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
- integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
- dependencies:
- path-exists "^2.0.0"
- pinkie-promise "^2.0.0"
-
find-up@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
@@ -5784,10 +5713,17 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
-focus-lock@^0.6.6:
- version "0.6.6"
- resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.6.tgz#98119a755a38cfdbeda0280eaa77e307eee850c7"
- integrity sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw==
+focus-lock@^0.6.7:
+ version "0.6.7"
+ resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.7.tgz#65e298f2ba2a3372ab57a4e4c4bdc19e1e32a4e5"
+ integrity sha512-KRo93U/afEqt7w5tBm4t0FHf/Li8tEYav3n4GUiZdeRlRfrtMbL8yQg0xRVnY/kmBRmQ4xkqIlbaMvuqlu53kg==
+
+follow-redirects@1.5.10:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+ integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+ dependencies:
+ debug "=3.1.0"
follow-redirects@^1.0.0:
version "1.11.0"
@@ -6057,11 +5993,6 @@ get-own-enumerable-property-symbols@^3.0.0:
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
-get-stdin@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
- integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
-
get-stdin@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
@@ -6152,17 +6083,6 @@ glob@7.1.6, glob@^7.0.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glo
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^5.0.15:
- version "5.0.15"
- resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
- integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
- dependencies:
- inflight "^1.0.4"
- inherits "2"
- minimatch "2 || 3"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
global-modules@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
@@ -6322,7 +6242,7 @@ handle-thing@^2.0.0:
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
-handlebars@^4.0.1, handlebars@^4.0.6:
+handlebars@^4.0.6:
version "4.7.6"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e"
integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==
@@ -6366,11 +6286,6 @@ has-cors@1.1.0:
resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=
-has-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
- integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
-
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -6831,13 +6746,6 @@ imurmurhash@^0.1.4:
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-indent-string@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
- integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
- dependencies:
- repeating "^2.0.0"
-
indent-string@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
@@ -7153,11 +7061,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-is-finite@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
- integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
-
is-fullwidth-code-point@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
@@ -7373,11 +7276,6 @@ is-typedarray@~1.0.0:
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-is-utf8@^0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
- integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-
is-window@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d"
@@ -7521,6 +7419,15 @@ istanbul-lib-report@^2.0.8:
make-dir "^2.1.0"
supports-color "^6.1.0"
+istanbul-lib-report@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
+ integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
+ dependencies:
+ istanbul-lib-coverage "^3.0.0"
+ make-dir "^3.0.0"
+ supports-color "^7.1.0"
+
istanbul-lib-source-maps@^3.0.6:
version "3.0.6"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
@@ -7532,6 +7439,15 @@ istanbul-lib-source-maps@^3.0.6:
rimraf "^2.6.3"
source-map "^0.6.1"
+istanbul-lib-source-maps@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9"
+ integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==
+ dependencies:
+ debug "^4.1.1"
+ istanbul-lib-coverage "^3.0.0"
+ source-map "^0.6.1"
+
istanbul-reports@^2.2.4:
version "2.2.7"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931"
@@ -7539,25 +7455,13 @@ istanbul-reports@^2.2.4:
dependencies:
html-escaper "^2.0.0"
-istanbul@^0.4.0:
- version "0.4.5"
- resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
- integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=
+istanbul-reports@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
+ integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
dependencies:
- abbrev "1.0.x"
- async "1.x"
- escodegen "1.8.x"
- esprima "2.7.x"
- glob "^5.0.15"
- handlebars "^4.0.1"
- js-yaml "3.x"
- mkdirp "0.5.x"
- nopt "3.x"
- once "1.x"
- resolve "1.1.x"
- supports-color "^3.1.0"
- which "^1.1.1"
- wordwrap "^1.0.0"
+ html-escaper "^2.0.0"
+ istanbul-lib-report "^3.0.0"
iterate-iterator@^1.0.1:
version "1.0.1"
@@ -7629,7 +7533,7 @@ js-tokens@^3.0.2:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
-js-yaml@3.x, js-yaml@^3.13.1:
+js-yaml@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
@@ -7751,20 +7655,16 @@ karma-coverage-istanbul-reporter@~2.1.1:
minimatch "^3.0.4"
karma-coverage@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-2.0.1.tgz#f024f191f0f135dee2403763ac36cc52aac279ac"
- integrity sha512-SnFkHsnLsaXfxkey51rRN9JDLAEKYW2Lb0qOEvcruukk0NkSNDkjobNDZPt9Ni3kIhLZkLtpGOz661hN7OaZvQ==
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-2.0.2.tgz#75d5ce983033d8f738d57df82948dc3534392519"
+ integrity sha512-zge5qiGEIKDdzWciQwP4p0LSac4k/L6VfrBsERMUn5mpDvxhv1sPVOrSlpzpi70T7NhuEy4bgnpAKIYuumIMCw==
dependencies:
- dateformat "^1.0.6"
- istanbul "^0.4.0"
- istanbul-lib-coverage "^2.0.5"
- istanbul-lib-instrument "^3.3.0"
- istanbul-lib-report "^2.0.8"
- istanbul-lib-source-maps "^3.0.6"
- istanbul-reports "^2.2.4"
- lodash "^4.17.11"
- minimatch "^3.0.0"
- source-map "^0.5.1"
+ istanbul-lib-coverage "^3.0.0"
+ istanbul-lib-instrument "^4.0.1"
+ istanbul-lib-report "^3.0.0"
+ istanbul-lib-source-maps "^4.0.0"
+ istanbul-reports "^3.0.0"
+ minimatch "^3.0.4"
karma-firefox-launcher@^1.3.0:
version "1.3.0"
@@ -7801,9 +7701,9 @@ karma-source-map-support@1.4.0:
source-map-support "^0.5.5"
karma@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/karma/-/karma-5.0.1.tgz#cd516f56d99ecd83e925a405b8003abebb72a074"
- integrity sha512-xrDGtZ0mykEQjx1BUHOP1ITi39MDsCGocmSvLJWHxUQpxuKwxk3ZUrC6HI2VWh1plLC6+7cA3B19m12yzO/FRw==
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/karma/-/karma-5.0.2.tgz#e404373dac6e3fa08409ae4d9eda7d83adb43ee5"
+ integrity sha512-RpUuCuGJfN3WnjYPGIH+VBF8023Lfm3TQH6D1kcNL+FxtEPc2UUz/nVjbVAGXH4Pm+Q7FVOAQjdAeFUpXpQ3IA==
dependencies:
body-parser "^1.16.1"
braces "^3.0.2"
@@ -7963,9 +7863,9 @@ lines-and-columns@^1.1.6:
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
lint-staged@^10.1.3:
- version "10.1.3"
- resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.1.3.tgz#da27713d3ac519da305381b4de87d5f866b1d2f1"
- integrity sha512-o2OkLxgVns5RwSC5QF7waeAjJA5nz5gnUfqL311LkZcFipKV7TztrSlhNUK5nQX9H0E5NELAdduMQ+M/JPT7RQ==
+ version "10.1.5"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.1.5.tgz#de21ee7c4a91d75e5135b100b963f65e61645230"
+ integrity sha512-Etn83be+CiG674kIkE4pOyjtpssXfdmuAPhOehy5w4bOVMnQJ5DsiWq5CShpZj38NA+UdJSsMMkqhb3hB72kOg==
dependencies:
chalk "^3.0.0"
commander "^4.0.1"
@@ -8044,17 +7944,6 @@ live-server@^1.2.0:
send latest
serve-index "^1.9.1"
-load-json-file@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
- integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
- strip-bom "^2.0.0"
-
loader-runner@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
@@ -8087,6 +7976,13 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4
emojis-list "^3.0.0"
json5 "^1.0.1"
+locale-enum@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/locale-enum/-/locale-enum-1.1.0.tgz#c08bd7c2a748ef65ac8ff791d4652240cc9432ac"
+ integrity sha512-WXnW+u8PgfjyaiC4h5Tt/4ic7XB+tICqaH+Yz38OyI4SLxUfQbOjlUODV8GGqwx4kUKwDMcgG1y3ItWQoI9piw==
+ dependencies:
+ typescript latest
+
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
@@ -8334,9 +8230,9 @@ log4js@^4.0.0:
streamroller "^1.0.6"
loglevel@^1.6.6:
- version "1.6.7"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56"
- integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==
+ version "1.6.8"
+ resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171"
+ integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
@@ -8345,14 +8241,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
-loud-rejection@^1.0.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
- integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
- dependencies:
- currently-unhandled "^0.4.1"
- signal-exit "^3.0.0"
-
lower-case@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7"
@@ -8395,7 +8283,7 @@ make-dir@^2.0.0, make-dir@^2.1.0:
pify "^4.0.1"
semver "^5.6.0"
-make-dir@^3.0.2:
+make-dir@^3.0.0, make-dir@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392"
integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==
@@ -8441,11 +8329,6 @@ map-cache@^0.2.2:
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-map-obj@^1.0.0, map-obj@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
- integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
-
map-or-similar@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08"
@@ -8537,22 +8420,6 @@ memory-fs@^0.5.0:
errno "^0.1.3"
readable-stream "^2.0.1"
-meow@^3.3.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
- integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
- dependencies:
- camelcase-keys "^2.0.0"
- decamelize "^1.1.2"
- loud-rejection "^1.0.0"
- map-obj "^1.0.1"
- minimist "^1.1.3"
- normalize-package-data "^2.3.4"
- object-assign "^4.0.1"
- read-pkg-up "^1.0.1"
- redent "^1.0.0"
- trim-newlines "^1.0.0"
-
merge-descriptors@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
@@ -8679,23 +8546,18 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
+minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
-minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
+minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
-minimist@~0.0.1:
- version "0.0.10"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
- integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
-
minipass-collect@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
@@ -8771,7 +8633,7 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
-mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1, mkdirp@~0.5.x:
+mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1, mkdirp@~0.5.x:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
@@ -8986,14 +8848,7 @@ node-releases@^1.1.29, node-releases@^1.1.53:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==
-nopt@3.x:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
- integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
- dependencies:
- abbrev "1"
-
-normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0:
+normalize-package-data@^2.0.0, normalize-package-data@^2.4.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
@@ -9189,9 +9044,12 @@ object-inspect@^1.7.0:
integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
object-is@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4"
- integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6"
+ integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
@@ -9277,7 +9135,7 @@ on-headers@~1.0.2:
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0:
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@@ -9332,15 +9190,7 @@ opn@latest:
dependencies:
is-wsl "^1.1.0"
-optimist@~0.6.0:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
- integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
- dependencies:
- minimist "~0.0.1"
- wordwrap "~0.0.2"
-
-optionator@^0.8.1, optionator@^0.8.3:
+optionator@^0.8.3:
version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
@@ -9583,13 +9433,6 @@ parse-entities@^1.1.2:
is-decimal "^1.0.0"
is-hexadecimal "^1.0.0"
-parse-json@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
- integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
- dependencies:
- error-ex "^1.2.0"
-
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -9665,13 +9508,6 @@ path-dirname@^1.0.0:
resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
-path-exists@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
- integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
- dependencies:
- pinkie-promise "^2.0.0"
-
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
@@ -9712,15 +9548,6 @@ path-to-regexp@0.1.7:
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
-path-type@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
- integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
- dependencies:
- graceful-fs "^4.1.2"
- pify "^2.0.0"
- pinkie-promise "^2.0.0"
-
path-type@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
@@ -10369,9 +10196,9 @@ protoduck@^5.0.1:
genfun "^5.0.0"
protractor@~5.4.3:
- version "5.4.3"
- resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.3.tgz#35f050741e404a45868618ea648745d89af31683"
- integrity sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==
+ version "5.4.4"
+ resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.4.tgz#b241466aaf83b76bc2c58df67deb9a5cdfc61529"
+ integrity sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==
dependencies:
"@types/q" "^0.0.32"
"@types/selenium-webdriver" "^3.0.0"
@@ -10381,13 +10208,13 @@ protractor@~5.4.3:
glob "^7.0.3"
jasmine "2.8.0"
jasminewd2 "^2.1.0"
- optimist "~0.6.0"
q "1.4.1"
saucelabs "^1.5.0"
selenium-webdriver "3.6.0"
source-map-support "~0.4.0"
webdriver-js-extender "2.1.0"
webdriver-manager "^12.0.6"
+ yargs "^12.0.5"
proxy-addr@~2.0.5:
version "2.0.6"
@@ -10650,32 +10477,32 @@ react-error-overlay@^6.0.3:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108"
integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==
-react-fast-compare@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
- integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
+react-fast-compare@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.0.1.tgz#884d339ce1341aad22392e7a88664c71da48600e"
+ integrity sha512-C5vP0J644ofZGd54P8++O7AvrqMEbrGf8Ue0eAUJLJyw168dAX2aiYyX/zcY/eSNwO0IDjsKUaLE6n83D+TnEg==
react-focus-lock@^2.1.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.2.1.tgz#1d12887416925dc53481914b7cedd39494a3b24a"
- integrity sha512-47g0xYcCTZccdzKRGufepY8oZ3W1Qg+2hn6u9SHZ0zUB6uz/4K4xJe7yYFNZ1qT6m+2JDm82F6QgKeBTbjW4PQ==
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.3.1.tgz#9d5d85899773609c7eefa4fc54fff6a0f5f2fc47"
+ integrity sha512-j15cWLPzH0gOmRrUg01C09Peu8qbcdVqr6Bjyfxj80cNZmH+idk/bNBYEDSmkAtwkXI+xEYWSmHYqtaQhZ8iUQ==
dependencies:
"@babel/runtime" "^7.0.0"
- focus-lock "^0.6.6"
+ focus-lock "^0.6.7"
prop-types "^15.6.2"
react-clientside-effect "^1.2.2"
use-callback-ref "^1.2.1"
use-sidecar "^1.0.1"
react-helmet-async@^1.0.2:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.0.4.tgz#079ef10b7fefcaee6240fefd150711e62463cc97"
- integrity sha512-KTGHE9sz8N7+fCkZ2a3vzXH9eIkiTNhL2NhKR7XzzQl3WsGlCHh76arauJUIiGdfhjeMp7DY7PkASAmYFXeJYg==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.0.5.tgz#d2557bf274e32280a877ecb648b81740d8fb0bf1"
+ integrity sha512-nqGA5a1HRZsw1lzDn+bYuUN2FyHRiY+DgjRVhEOKVBDTrrqJCpCIOuY/IRHdobr+KD1gGTP0WabZsTrIHnFKJA==
dependencies:
- "@babel/runtime" "^7.3.4"
+ "@babel/runtime" "^7.9.2"
invariant "^2.2.4"
prop-types "^15.7.2"
- react-fast-compare "^2.0.4"
+ react-fast-compare "^3.0.1"
shallowequal "^1.1.0"
react-hotkeys@2.0.0:
@@ -10791,23 +10618,6 @@ read-package-tree@5.3.1:
readdir-scoped-modules "^1.0.0"
util-promisify "^2.1.0"
-read-pkg-up@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
- integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
- dependencies:
- find-up "^1.0.0"
- read-pkg "^1.0.0"
-
-read-pkg@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
- integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
- dependencies:
- load-json-file "^1.0.0"
- normalize-package-data "^2.3.2"
- path-type "^1.0.0"
-
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@@ -10880,14 +10690,6 @@ recursive-readdir@2.2.2:
dependencies:
minimatch "3.0.4"
-redent@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
- integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
- dependencies:
- indent-string "^2.1.0"
- strip-indent "^1.0.1"
-
reflect-metadata@^0.1.2:
version "0.1.13"
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
@@ -11008,13 +10810,6 @@ repeat-string@^1.6.1:
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
- dependencies:
- is-finite "^1.0.0"
-
replace-ext@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
@@ -11105,15 +10900,10 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-resolve@1.1.x:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
- integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
-
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2:
- version "1.15.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
- integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.16.1.tgz#49fac5d8bacf1fd53f200fa51247ae736175832c"
+ integrity sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==
dependencies:
path-parse "^1.0.6"
@@ -11307,9 +11097,9 @@ schema-utils@^1.0.0:
ajv-keywords "^3.1.0"
schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6.1, schema-utils@^2.6.4, schema-utils@^2.6.5:
- version "2.6.5"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a"
- integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==
+ version "2.6.6"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c"
+ integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==
dependencies:
ajv "^6.12.0"
ajv-keywords "^3.4.1"
@@ -11379,9 +11169,9 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.3.0:
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.0.0, semver@^7.1.1:
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.2.2.tgz#d01432d74ed3010a20ffaf909d63a691520521cd"
- integrity sha512-Zo84u6o2PebMSK3zjJ6Zp5wi8VnQZnEaCP13Ul/lt1ANsLACxnJxq4EEm1PY94/por1Hm9+7xpIswdS5AkieMA==
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
+ integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
send@0.17.1, send@latest:
version "0.17.1"
@@ -11785,7 +11575,7 @@ source-map@0.7.3, source-map@^0.7.3:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
-source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7:
+source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -11795,13 +11585,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-source-map@~0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
- integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50=
- dependencies:
- amdefine ">=0.0.4"
-
sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8:
version "1.4.8"
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
@@ -11948,9 +11731,9 @@ static-extend@^0.1.1:
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
store2@^2.7.1:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/store2/-/store2-2.11.0.tgz#307636a239014ef4d8f1c8b47afe903509484fc8"
- integrity sha512-WeIZ5+c/KzBSutSqOjUCAkk1qTLVBcYUuvrhNx8ndjLZKdZRfP6Vv7AOxlynuL6tVU/6zt6e2CTHwWI5KE+fKg==
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/store2/-/store2-2.11.1.tgz#118645f1b5e38d20604852362183955e360a5893"
+ integrity sha512-llZqXAXjG2E4FvWsZxFmBDfh6kqQuGFZm64TX23qW02Hf4dyElhDEbYx1IIVTEMKWrrDnDA9oqOjY8WHo2NgcA==
stream-browserify@^2.0.1:
version "2.0.2"
@@ -12165,13 +11948,6 @@ strip-ansi@^6.0.0:
dependencies:
ansi-regex "^5.0.0"
-strip-bom@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
- integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
- dependencies:
- is-utf8 "^0.2.0"
-
strip-bom@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
@@ -12187,19 +11963,12 @@ strip-final-newline@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-strip-indent@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
- integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
- dependencies:
- get-stdin "^4.0.1"
-
strip-json-comments@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
-style-loader@1.1.3, style-loader@^1.0.0:
+style-loader@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200"
integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==
@@ -12207,6 +11976,14 @@ style-loader@1.1.3, style-loader@^1.0.0:
loader-utils "^1.2.3"
schema-utils "^2.6.4"
+style-loader@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.4.tgz#1ad81283cefe51096756fd62697258edad933230"
+ integrity sha512-SbBHRD8fwK3pX+4UDF4ETxUF0+rCvk29LWTTI7Rt0cgsDjAj3SWM76ByTe6u2+4IlJ/WwluB7wuslWETCoPQdg==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^2.6.5"
+
stylehacks@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
@@ -12244,13 +12021,6 @@ supports-color@^2.0.0:
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-supports-color@^3.1.0:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
- integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
- dependencies:
- has-flag "^1.0.0"
-
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -12550,11 +12320,6 @@ tree-kill@1.2.2:
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
-trim-newlines@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
- integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
-
ts-dedent@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.1.1.tgz#68fad040d7dbd53a90f545b450702340e17d18f3"
@@ -12685,7 +12450,7 @@ typescript@^2.4.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c"
integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==
-typescript@~3.8.3:
+typescript@latest, 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==
@@ -12696,9 +12461,9 @@ ua-parser-js@0.7.21:
integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==
uglify-js@^3.1.4:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.0.tgz#037163a936992050ed5d14f5d5c4014126019661"
- integrity sha512-j5wNQBWaql8gr06dOUrfaohHlscboQZ9B8sNsoK5o4sBjm7Ht9dxSbrMXyktQpA16Acaij8AcoozteaPYZON0g==
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.1.tgz#a56a71c8caa2d36b5556cc1fd57df01ae3491539"
+ integrity sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA==
dependencies:
commander "~2.20.3"
@@ -12849,11 +12614,9 @@ url@^0.11.0:
querystring "0.2.0"
use-callback-ref@^1.2.1:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.2.tgz#43f6270a2979915d0b0c715581859026c68ad5f8"
- integrity sha512-s7WLAjMmcgSQ6ocTv93xfljIhpIi6r7f+bH54BX7eP26c0Q+W0iemfFBHYND2cSfaWpweiN0/NVtXVMKRlktdg==
- dependencies:
- "@types/react" "^16.9.11"
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.3.tgz#9f939dfb5740807bbf9dd79cdd4e99d27e827756"
+ integrity sha512-DPBPh1i2adCZoIArRlTuKRy7yue7QogtEnfv0AKrWsY+GA+4EKe37zhRDouNnyWMoNQFYZZRF+2dLHsWE4YvJA==
use-sidecar@^1.0.1:
version "1.0.2"
@@ -12932,6 +12695,11 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+uuid@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
+ integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
+
v8-compile-cache@^2.0.3:
version "2.1.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
@@ -13234,7 +13002,7 @@ which-pm-runs@^1.0.0:
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
-which@^1.1.1, which@^1.2.1, which@^1.2.10, which@^1.2.9, which@^1.3.1:
+which@^1.2.1, which@^1.2.10, which@^1.2.9, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -13272,11 +13040,6 @@ wordwrap@^1.0.0:
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
-wordwrap@~0.0.2:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
- integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
-
worker-farm@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
@@ -13390,11 +13153,11 @@ yallist@^4.0.0:
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yaml@^1.7.2:
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a"
- integrity sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.0.tgz#dc1ff3e24837b62bc3c8ae02c28e16ee5742b9d6"
+ integrity sha512-3GLZOj8A9Gsp0Fw3kOyj0zqk4xMq+YvhbHSDYALd2NMOfIpyZeBhz32ZiNU7AtX1MtXX/9JJgxSElGRwvv9enA==
dependencies:
- "@babel/runtime" "^7.8.7"
+ "@babel/runtime" "^7.9.0"
yargs-parser@^11.1.1:
version "11.1.1"
@@ -13405,14 +13168,14 @@ yargs-parser@^11.1.1:
decamelize "^1.2.0"
yargs-parser@^18.1.0, yargs-parser@^18.1.1:
- version "18.1.2"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1"
- integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
dependencies:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs@12.0.5:
+yargs@12.0.5, yargs@^12.0.5:
version "12.0.5"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==