diff --git a/package.json b/package.json index 057cdbe06c5f96489765720ea930a4dc3cb7c7b7..dc29f61aba66bb7780eb06ba6ce23d9e7efed5df 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "@ngx-translate/core": "8.0.0", "@ngx-translate/http-loader": "2.0.0", "body-parser": "1.18.2", - "bootstrap": "4.0.0-alpha.6", + "bootstrap": "v4.0.0-beta", "cerialize": "0.1.16", "compression": "1.7.1", "cookie-parser": "1.4.3", diff --git a/resources/i18n/en.json b/resources/i18n/en.json index 9714640287b04834e6272bc2c47fd48e9015bd70..c605d769611efa715fc50e7b4485bb4a3edd6d1e 100644 --- a/resources/i18n/en.json +++ b/resources/i18n/en.json @@ -69,5 +69,14 @@ "head": "Communities in DSpace", "help": "Select a community to browse its collections." } + }, + "search": { + "form": { + "search": "Search", + "search_dspace": "Search DSpace" + }, + "results": { + "title": "Search Results" + } } } diff --git a/src/app/+collection-page/collection-page.component.html b/src/app/+collection-page/collection-page.component.html index a8345ef23ddd2cc9499d15ffadb92b16a6372ca9..b1aae17f7cb32cce718fb0a9fac236968eb1dced 100644 --- a/src/app/+collection-page/collection-page.component.html +++ b/src/app/+collection-page/collection-page.component.html @@ -32,13 +32,9 @@ </ds-comcol-page-content> </div> <br> - <div *ngIf="itemData.hasSucceeded | async"> + <div *ngIf="(itemData.hasSucceeded | async)"> <h2>{{'collection.page.browse.recent.head' | translate}}</h2> - <ds-object-list [config]="config" [sortConfig]="sortConfig" - [objects]="itemData" [hideGear]="true" - (pageChange)="onPageChange($event)" - (pageSizeChange)="onPageSizeChange($event)" - (sortDirectionChange)="onSortDirectionChange($event)" - (sortFieldChange)="onSortDirectionChange($event)"></ds-object-list> + <ds-object-list [config]="paginationConfig" [sortConfig]="sortConfig" + [objects]="itemData" [hideGear]="false"></ds-object-list> </div> </div> diff --git a/src/app/+collection-page/collection-page.component.ts b/src/app/+collection-page/collection-page.component.ts index 44c45edc4f2193b737748fa31f16f6223b66e922..ca349ce5bcdc78a37eda7c1572bfbed1437b778f 100644 --- a/src/app/+collection-page/collection-page.component.ts +++ b/src/app/+collection-page/collection-page.component.ts @@ -14,90 +14,81 @@ import { ItemDataService } from '../core/data/item-data.service'; import { Item } from '../core/shared/item.model'; import { SortOptions, SortDirection } from '../core/cache/models/sort-options.model'; import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model'; -import { hasValue, isUndefined } from '../shared/empty.util'; +import { hasValue, isNotEmpty, isUndefined } from '../shared/empty.util'; import { PageInfo } from '../core/shared/page-info.model'; +import { Observable } from 'rxjs/Observable'; @Component({ selector: 'ds-collection-page', styleUrls: ['./collection-page.component.scss'], templateUrl: './collection-page.component.html', - changeDetection: ChangeDetectionStrategy.OnPush }) export class CollectionPageComponent implements OnInit, OnDestroy { collectionData: RemoteData<Collection>; itemData: RemoteData<Item[]>; logoData: RemoteData<Bitstream>; - config: PaginationComponentOptions; + paginationConfig: PaginationComponentOptions; sortConfig: SortOptions; private subs: Subscription[] = []; private collectionId: string; - private pageInfoState: PageInfo; - - constructor( - private collectionDataService: CollectionDataService, - private itemDataService: ItemDataService, - private ref: ChangeDetectorRef, - private route: ActivatedRoute - ) { + constructor(private collectionDataService: CollectionDataService, + private itemDataService: ItemDataService, + private route: ActivatedRoute) { + this.paginationConfig = new PaginationComponentOptions(); + this.paginationConfig.id = 'collection-page-pagination'; + this.paginationConfig.pageSizeOptions = [4]; + this.paginationConfig.pageSize = 4; + this.paginationConfig.currentPage = 1; + this.sortConfig = new SortOptions(); } ngOnInit(): void { - this.subs.push(this.route.params.map((params: Params) => params.id) - .subscribe((id: string) => { - this.collectionId = id; - this.collectionData = this.collectionDataService.findById(this.collectionId); - this.subs.push(this.collectionData.payload.subscribe((collection) => this.logoData = collection.logo)); + this.subs.push( + Observable.combineLatest( + this.route.params, + this.route.queryParams, + (params, queryParams,) => { + return Object.assign({}, params, queryParams); + }) + .subscribe((params) => { + this.collectionId = params.id; + this.collectionData = this.collectionDataService.findById(this.collectionId); + this.subs.push(this.collectionData.payload.subscribe((collection) => this.logoData = collection.logo)); - this.config = new PaginationComponentOptions(); - this.config.id = 'collection-browse'; - this.config.pageSizeOptions = [4]; - this.config.pageSize = 4; - this.sortConfig = new SortOptions(); + const page = +params.page || this.paginationConfig.currentPage; + const pageSize = +params.pageSize || this.paginationConfig.pageSize; + const sortDirection = +params.page || this.sortConfig.direction; + const pagination = Object.assign({}, + this.paginationConfig, + { currentPage: page, pageSize: pageSize } + ); + const sort = Object.assign({}, + this.sortConfig, + { direction: sortDirection, field: params.sortField } + ); + this.updatePage({ + pagination: pagination, + sort: sort + }); + })); - this.updateResults(); - })); + } + updatePage(searchOptions) { + this.itemData = this.itemDataService.findAll({ + scopeID: this.collectionId, + currentPage: searchOptions.pagination.currentPage, + elementsPerPage: searchOptions.pagination.pageSize, + sort: searchOptions.sort + }); } ngOnDestroy(): void { this.subs.filter((sub) => hasValue(sub)).forEach((sub) => sub.unsubscribe()); } - onPageChange(currentPage: number): void { - this.config.currentPage = currentPage; - this.updateResults(); - } - - onPageSizeChange(elementsPerPage: number): void { - this.config.pageSize = elementsPerPage; - this.updateResults(); - } - - onSortDirectionChange(sortDirection: SortDirection): void { - this.sortConfig = new SortOptions(this.sortConfig.field, sortDirection); - this.updateResults(); - } - - onSortFieldChange(field: string): void { - this.sortConfig = new SortOptions(field, this.sortConfig.direction); - this.updateResults(); - } - - updateResults() { - this.itemData = null; - this.ref.markForCheck(); - this.itemData = this.itemDataService.findAll({ - scopeID: this.collectionId, - currentPage: this.config.currentPage, - elementsPerPage: this.config.pageSize, - sort: this.sortConfig - }); - this.subs.push(this.itemData.pageInfo.subscribe((pageInfo) => { - if (isUndefined(this.pageInfoState) || this.pageInfoState !== pageInfo) { - this.pageInfoState = pageInfo; - this.ref.detectChanges(); - } - })); + isNotEmpty(object: any) { + return isNotEmpty(object); } } diff --git a/src/app/+home/home-news/home-news.component.scss b/src/app/+home/home-news/home-news.component.scss index a1b1c665163191b2ef9696f91060a8ff04f2f5f0..c1c16995c5bafba41b445d8ce4c830705aabcacc 100644 --- a/src/app/+home/home-news/home-news.component.scss +++ b/src/app/+home/home-news/home-news.component.scss @@ -1,7 +1,10 @@ -@import '../../../styles/mixins.scss'; +@import '../../../styles/variables.scss'; :host { display: block; - @include negate-gutters(); + margin-right: ($grid-gutter-width / -2); + margin-left: ($grid-gutter-width / -2); + margin-top: -$content-spacing; + margin-bottom: -$content-spacing; } .dspace-logo-container { diff --git a/src/app/+home/home.component.html b/src/app/+home/home.component.html index fd7d4b6309832c6f3693369d0377892b7b52ceb6..acd6f0d7eb97529fe9b8262f8c91a6a265dbcb1b 100644 --- a/src/app/+home/home.component.html +++ b/src/app/+home/home.component.html @@ -1,2 +1,3 @@ <ds-home-news></ds-home-news> +<ds-search-form></ds-search-form> <ds-top-level-community-list></ds-top-level-community-list> diff --git a/src/app/+home/top-level-community-list/top-level-community-list.component.html b/src/app/+home/top-level-community-list/top-level-community-list.component.html index 625cb5118dc008a001d89145080b5c02a264901e..772eb66012c559214a5d7855299c37ba585efdb0 100644 --- a/src/app/+home/top-level-community-list/top-level-community-list.component.html +++ b/src/app/+home/top-level-community-list/top-level-community-list.component.html @@ -2,9 +2,5 @@ <h2>{{'home.top-level-communities.head' | translate}}</h2> <p class="lead">{{'home.top-level-communities.help' | translate}}</p> <ds-object-list [config]="config" [sortConfig]="sortConfig" - [objects]="topLevelCommunities" [hideGear]="true" - (pageChange)="onPageChange($event)" - (pageSizeChange)="onPageSizeChange($event)" - (sortDirectionChange)="onSortDirectionChange($event)" - (sortFieldChange)="onSortDirectionChange($event)"></ds-object-list> + [objects]="topLevelCommunities" [hideGear]="true" (paginationChange)="updatePage($event)"></ds-object-list> </div> diff --git a/src/app/+home/top-level-community-list/top-level-community-list.component.ts b/src/app/+home/top-level-community-list/top-level-community-list.component.ts index 259ea4cf5afd0818706e06c577b16cc890fa2166..a3882d703699b6260a9c11a43f1a87678ddb4cd6 100644 --- a/src/app/+home/top-level-community-list/top-level-community-list.component.ts +++ b/src/app/+home/top-level-community-list/top-level-community-list.component.ts @@ -5,58 +5,40 @@ import { CommunityDataService } from '../../core/data/community-data.service'; import { Community } from '../../core/shared/community.model'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { SortOptions, SortDirection } from '../../core/cache/models/sort-options.model'; +import { ActivatedRoute } from '@angular/router'; @Component({ selector: 'ds-top-level-community-list', styleUrls: ['./top-level-community-list.component.scss'], templateUrl: './top-level-community-list.component.html', - changeDetection: ChangeDetectionStrategy.OnPush }) -export class TopLevelCommunityListComponent implements OnInit { + +export class TopLevelCommunityListComponent { topLevelCommunities: RemoteData<Community[]>; config: PaginationComponentOptions; sortConfig: SortOptions; - constructor( - private cds: CommunityDataService, - private ref: ChangeDetectorRef - ) { - - } - - ngOnInit(): void { + constructor(private cds: CommunityDataService) { this.config = new PaginationComponentOptions(); this.config.id = 'top-level-pagination'; this.config.pageSizeOptions = [4]; this.config.pageSize = 4; + this.config.currentPage = 1; this.sortConfig = new SortOptions(); - this.updateResults(); - } - - onPageChange(currentPage: number): void { - this.config.currentPage = currentPage; - this.updateResults(); - } - - onPageSizeChange(elementsPerPage: number): void { - this.config.pageSize = elementsPerPage; - this.updateResults(); - } - - onSortDirectionChange(sortDirection: SortDirection): void { - this.sortConfig = new SortOptions(this.sortConfig.field, sortDirection); - this.updateResults(); - } - - onSortFieldChange(field: string): void { - this.sortConfig = new SortOptions(field, this.sortConfig.direction); - this.updateResults(); + this.updatePage({ + page: this.config.currentPage, + pageSize: this.config.pageSize, + sortField: this.sortConfig.field, + direction: this.sortConfig.direction + }); } - updateResults() { - this.topLevelCommunities = undefined; - this.topLevelCommunities = this.cds.findAll({ currentPage: this.config.currentPage, elementsPerPage: this.config.pageSize, sort: this.sortConfig }); - // this.ref.detectChanges(); + updatePage(data) { + this.topLevelCommunities = this.cds.findAll({ + currentPage: data.page, + elementsPerPage: data.pageSize, + sort: { field: data.sortField, direction: data.sortDirection } + }); } } diff --git a/src/app/+item-page/full/field-components/file-section/full-file-section.component.scss b/src/app/+item-page/full/field-components/file-section/full-file-section.component.scss index 4597c711ffcea34e6f628bf7a5ef11e7397e6ce7..77db5d97cf5a092065b7e639af008f9d13a4f99d 100644 --- a/src/app/+item-page/full/field-components/file-section/full-file-section.component.scss +++ b/src/app/+item-page/full/field-components/file-section/full-file-section.component.scss @@ -1,5 +1,5 @@ -@import '../../../../../styles/variables.scss'; -@import '../../../../../../node_modules/bootstrap/scss/_variables.scss'; +@import '../../../../../styles/variables'; +@import '../../../../../styles/mixins'; @media screen and (min-width: map-get($grid-breakpoints, md)) { dt { text-align: right; diff --git a/src/app/+item-page/full/full-item-page.component.html b/src/app/+item-page/full/full-item-page.component.html index b0b1f98037c7ff313c245f61801daeaf9fdd3304..59511d7d9d175698facdfd19eb47255350ce96b8 100644 --- a/src/app/+item-page/full/full-item-page.component.html +++ b/src/app/+item-page/full/full-item-page.component.html @@ -2,7 +2,7 @@ <ds-item-page-title-field [item]="item.payload | async"></ds-item-page-title-field> <div class="simple-view-link"> - <a class="btn btn-secondary col-4" [routerLink]="['/items/' + (item.payload | async)?.id]"> + <a class="btn btn-outline-primary col-4" [routerLink]="['/items/' + (item.payload | async)?.id]"> {{"item.page.link.simple" | translate}} </a> </div> diff --git a/src/app/+item-page/simple/item-page.component.html b/src/app/+item-page/simple/item-page.component.html index 9378c3839b650d0be5c15da12b327e9be910deb5..94ab99482fd36b3c345baa2d3790655871da5f48 100644 --- a/src/app/+item-page/simple/item-page.component.html +++ b/src/app/+item-page/simple/item-page.component.html @@ -16,7 +16,7 @@ <ds-item-page-uri-field [item]="item.payload | async"></ds-item-page-uri-field> <ds-item-page-collections [item]="item.payload | async"></ds-item-page-collections> <div> - <a class="btn btn-secondary" [routerLink]="['/items/' + (item.payload | async)?.id + '/full']"> + <a class="btn btn-outline-primary" [routerLink]="['/items/' + (item.payload | async)?.id + '/full']"> {{"item.page.link.full" | translate}} </a> </div> diff --git a/src/app/app.component.scss b/src/app/app.component.scss index a000423c3407eb19117e2c264d56d028fe035810..d274f5fe4a071ddf117c43fdacfcd4c7c35669e0 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -23,4 +23,6 @@ html { .main-content { flex: 1 0 auto; + margin-top: $content-spacing; + margin-bottom: $content-spacing; } diff --git a/src/app/core/cache/builders/remote-data-build.service.ts b/src/app/core/cache/builders/remote-data-build.service.ts index d01959d3dd423e7f1458ed519d161ab5aa20effd..f170e342c0bcb5c3e353df845e7c4f1a00b8837b 100644 --- a/src/app/core/cache/builders/remote-data-build.service.ts +++ b/src/app/core/cache/builders/remote-data-build.service.ts @@ -14,6 +14,7 @@ import { GenericConstructor } from '../../shared/generic-constructor'; import { getMapsTo, getRelationMetadata, getRelationships } from './build-decorators'; import { NormalizedObjectFactory } from '../models/normalized-object-factory'; import { Request } from '../../data/request.models'; +import { PageInfo } from '../../shared/page-info.model'; @Injectable() export class RemoteDataBuildService { @@ -21,13 +22,12 @@ export class RemoteDataBuildService { protected objectCache: ObjectCacheService, protected responseCache: ResponseCacheService, protected requestService: RequestService + ) { } - buildSingle<TNormalized extends CacheableObject, TDomain>( - href: string, - normalizedType: GenericConstructor<TNormalized> - ): RemoteData<TDomain> { + buildSingle<TNormalized extends CacheableObject, TDomain>(href: string, + normalizedType: GenericConstructor<TNormalized>): RemoteData<TDomain> { const requestHrefObs = this.objectCache.getRequestHrefBySelfLink(href); const requestObs = Observable.race( @@ -61,6 +61,13 @@ export class RemoteDataBuildService { const pageInfo = responseCacheObs .filter((entry: ResponseCacheEntry) => hasValue(entry.response) && hasValue(entry.response['pageInfo'])) .map((entry: ResponseCacheEntry) => (entry.response as SuccessResponse).pageInfo) + .map((pInfo: PageInfo) => { + if (isNotEmpty(pageInfo) && pInfo.currentPage >= 0) { + return Object.assign({}, pInfo, {currentPage: pInfo.currentPage + 1}); + } else { + return pInfo; + } + }) .distinctUntilChanged(); /* tslint:enable:no-string-literal */ @@ -104,10 +111,8 @@ export class RemoteDataBuildService { ); } - buildList<TNormalized extends CacheableObject, TDomain>( - href: string, - normalizedType: GenericConstructor<TNormalized> - ): RemoteData<TDomain[]> { + buildList<TNormalized extends CacheableObject, TDomain>(href: string, + normalizedType: GenericConstructor<TNormalized>): RemoteData<TDomain[]> { const requestObs = this.requestService.get(href) .filter((entry) => hasValue(entry)); const responseCacheObs = this.responseCache.get(href).filter((entry) => hasValue(entry)); @@ -237,7 +242,7 @@ export class RemoteDataBuildService { }) .filter((e) => hasValue(e)) .join(', ') - ); + ); const statusCode = Observable.combineLatest( ...input.map((rd) => rd.statusCode), @@ -249,7 +254,7 @@ export class RemoteDataBuildService { }) .filter((c) => hasValue(c)) .join(', ') - ); + ); const pageInfo = Observable.of(undefined); diff --git a/src/app/core/shared/dspace-object.model.ts b/src/app/core/shared/dspace-object.model.ts index ad3c2dac8c6055f0a75143aa314df7ba3c407c20..8584c179dc56670b74c73830d31a8a4e87b2eedc 100644 --- a/src/app/core/shared/dspace-object.model.ts +++ b/src/app/core/shared/dspace-object.model.ts @@ -3,11 +3,12 @@ import { isEmpty, isNotEmpty } from '../../shared/empty.util'; import { CacheableObject } from '../cache/object-cache.reducer'; import { RemoteData } from '../data/remote-data'; import { ResourceType } from './resource-type'; +import { ListableObject } from '../../object-list/listable-object/listable-object.model'; /** * An abstract model class for a DSpaceObject. */ -export abstract class DSpaceObject implements CacheableObject { +export abstract class DSpaceObject implements CacheableObject, ListableObject { self: string; diff --git a/src/app/footer/footer.component.scss b/src/app/footer/footer.component.scss index 4a409af122d6c0ba343bd0661f3f705ba25d138b..fec6473f687d68ebdd6e80a5cf805d4d43ba9b3a 100644 --- a/src/app/footer/footer.component.scss +++ b/src/app/footer/footer.component.scss @@ -1,6 +1,5 @@ @import '../../styles/variables.scss'; -@import '../../../node_modules/bootstrap/scss/_variables.scss'; -$footer-bg: $gray-lighter; +$footer-bg: $gray-100; $footer-border: 1px solid darken($footer-bg, 10%); $footer-padding: $spacer * 1.5; diff --git a/src/app/header/header.component.html b/src/app/header/header.component.html index 0d8362698a63ff0a0cede722830b870eb77bb910..0cdb443b8a849c187c4cac40fe2dd76af8ed435b 100644 --- a/src/app/header/header.component.html +++ b/src/app/header/header.component.html @@ -1,11 +1,11 @@ <header> - <nav class="navbar navbar-toggleable-sm navbar-inverse bg-inverse"> - <button class="navbar-toggler navbar-toggler-right" type="button" (click)="toggle()" aria-controls="collapsingNav" aria-expanded="false" aria-label="Toggle navigation"> - <span class="navbar-toggler-icon fa fa-bars fa-fw" aria-hidden="true"></span> - </button> + <nav class="navbar navbar-expand-md navbar-dark bg-dark"> <div [ngClass]="{'clearfix': !(isNavBarCollapsed | async)}"> <a class="navbar-brand" routerLink="/home">{{ 'title' | translate }}</a> </div> + <button class="navbar-toggler" type="button" (click)="toggle()" aria-controls="collapsingNav" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon fa fa-bars fa-fw" aria-hidden="true"></span> + </button> <div [ngbCollapse]="(isNavBarCollapsed | async)" class="collapse navbar-collapse" id="collapsingNav"> <ul class="navbar-nav mr-auto"> <li class="nav-item"> diff --git a/src/app/object-list/collection-list-element/collection-list-element.component.html b/src/app/object-list/collection-list-element/collection-list-element.component.html index c680743716c8a85209674821c781e6b4a91712f5..8fb498d4741419baf4359df16a42f7b3af5f0324 100644 --- a/src/app/object-list/collection-list-element/collection-list-element.component.html +++ b/src/app/object-list/collection-list-element/collection-list-element.component.html @@ -1,6 +1,6 @@ -<a [routerLink]="['/collections/' + collection.id]" class="lead"> - {{collection.name}} +<a [routerLink]="['/collections/' + object.id]" class="lead"> + {{object.name}} </a> -<div *ngIf="collection.shortDescription" class="text-muted"> - {{collection.shortDescription}} +<div *ngIf="object.shortDescription" class="text-muted"> + {{object.shortDescription}} </div> diff --git a/src/app/object-list/collection-list-element/collection-list-element.component.ts b/src/app/object-list/collection-list-element/collection-list-element.component.ts index 45f285a60b3bc724549097e0d24ea60bd8818ee8..a99e64a27fbc00f88cdb522d28342a9c721080a0 100644 --- a/src/app/object-list/collection-list-element/collection-list-element.component.ts +++ b/src/app/object-list/collection-list-element/collection-list-element.component.ts @@ -1,16 +1,14 @@ -import { Component, Input } from '@angular/core'; +import { Component, Inject } from '@angular/core'; import { Collection } from '../../core/shared/collection.model'; +import { ObjectListElementComponent } from '../object-list-element/object-list-element.component'; +import { listElementFor } from '../list-element-decorator'; @Component({ selector: 'ds-collection-list-element', styleUrls: ['./collection-list-element.component.scss'], templateUrl: './collection-list-element.component.html' }) -export class CollectionListElementComponent { - @Input() collection: Collection; - - data: any = {}; - -} +@listElementFor(Collection) +export class CollectionListElementComponent extends ObjectListElementComponent<Collection> {} diff --git a/src/app/object-list/community-list-element/community-list-element.component.html b/src/app/object-list/community-list-element/community-list-element.component.html index 2c2f4fc35f225358ff73b8e1edac6d724dc63bb9..d39995de4027c361cc274071652ab840ba7a41fa 100644 --- a/src/app/object-list/community-list-element/community-list-element.component.html +++ b/src/app/object-list/community-list-element/community-list-element.component.html @@ -1,6 +1,6 @@ -<a [routerLink]="['/communities/' + community.id]" class="lead"> - {{community.name}} +<a [routerLink]="['/communities/' + object.id]" class="lead"> + {{object.name}} </a> -<div *ngIf="community.shortDescription" class="text-muted"> - {{community.shortDescription}} +<div *ngIf="object.shortDescription" class="text-muted"> + {{object.shortDescription}} </div> diff --git a/src/app/object-list/community-list-element/community-list-element.component.ts b/src/app/object-list/community-list-element/community-list-element.component.ts index 634e573e92a3c6f6545eabad8053f9d32b43f284..c05915e8d78519db8161b21c1fdd923279219df4 100644 --- a/src/app/object-list/community-list-element/community-list-element.component.ts +++ b/src/app/object-list/community-list-element/community-list-element.component.ts @@ -1,16 +1,14 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, Inject } from '@angular/core'; import { Community } from '../../core/shared/community.model'; +import { ObjectListElementComponent } from '../object-list-element/object-list-element.component'; +import { listElementFor } from '../list-element-decorator'; @Component({ selector: 'ds-community-list-element', styleUrls: ['./community-list-element.component.scss'], templateUrl: './community-list-element.component.html' }) -export class CommunityListElementComponent { - @Input() community: Community; - - data: any = {}; - -} +@listElementFor(Community) +export class CommunityListElementComponent extends ObjectListElementComponent<Community> {} diff --git a/src/app/object-list/item-list-element/item-list-element.component.html b/src/app/object-list/item-list-element/item-list-element.component.html index 517cae480f7a99fd303bafbbad555ab38c288440..cc24ba76b86b6ec445055c297bb826fe9bc6283a 100644 --- a/src/app/object-list/item-list-element/item-list-element.component.html +++ b/src/app/object-list/item-list-element/item-list-element.component.html @@ -1,14 +1,14 @@ -<a [routerLink]="['/items/' + item.id]" class="lead"> - {{item.findMetadata("dc.title")}} +<a [routerLink]="['/items/' + object.id]" class="lead"> + {{object.findMetadata("dc.title")}} </a> <div> <span class="text-muted"> - <span *ngIf="item.filterMetadata(['dc.contributor.author', 'dc.creator', 'dc.contributor.*']);" class="item-list-authors"> - <span *ngFor="let authorMd of item.filterMetadata(['dc.contributor.author', 'dc.creator', 'dc.contributor.*']); let last=last;">{{authorMd.value}} + <span *ngIf="object.filterMetadata(['dc.contributor.author', 'dc.creator', 'dc.contributor.*']);" class="item-list-authors"> + <span *ngFor="let authorMd of object.filterMetadata(['dc.contributor.author', 'dc.creator', 'dc.contributor.*']); let last=last;">{{authorMd.value}} <span *ngIf="!last">; </span> </span> </span> - (<span *ngIf="item.findMetadata('dc.publisher')" class="item-list-publisher">{{item.findMetadata("dc.publisher")}}, </span><span *ngIf="item.findMetadata('dc.date.issued')" class="item-list-date">{{item.findMetadata("dc.date.issued")}}</span>) + (<span *ngIf="object.findMetadata('dc.publisher')" class="item-list-publisher">{{object.findMetadata("dc.publisher")}}, </span><span *ngIf="object.findMetadata('dc.date.issued')" class="item-list-date">{{object.findMetadata("dc.date.issued")}}</span>) </span> - <div *ngIf="item.findMetadata('dc.description.abstract')" class="item-list-abstract">{{item.findMetadata("dc.description.abstract") | dsTruncate:[200] }}</div> + <div *ngIf="object.findMetadata('dc.description.abstract')" class="item-list-abstract">{{object.findMetadata("dc.description.abstract") | dsTruncate:[200] }}</div> </div> diff --git a/src/app/object-list/item-list-element/item-list-element.component.ts b/src/app/object-list/item-list-element/item-list-element.component.ts index 880f3d9fdc0aa1e76c8c4235dd5ccf12ef98f80d..cc6c837bb7547584bff167dcb1cebaed8fac3f3d 100644 --- a/src/app/object-list/item-list-element/item-list-element.component.ts +++ b/src/app/object-list/item-list-element/item-list-element.component.ts @@ -1,15 +1,14 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, Inject } from '@angular/core'; import { Item } from '../../core/shared/item.model'; +import { ObjectListElementComponent } from '../object-list-element/object-list-element.component'; +import { listElementFor } from '../list-element-decorator'; @Component({ selector: 'ds-item-list-element', styleUrls: ['./item-list-element.component.scss'], templateUrl: './item-list-element.component.html' }) -export class ItemListElementComponent { - @Input() item: Item; - data: any = {}; - -} +@listElementFor(Item) +export class ItemListElementComponent extends ObjectListElementComponent<Item> {} diff --git a/src/app/object-list/list-element-decorator.ts b/src/app/object-list/list-element-decorator.ts new file mode 100644 index 0000000000000000000000000000000000000000..64a747d4a5e83f6af3a5ff57e66b904d4f825f0e --- /dev/null +++ b/src/app/object-list/list-element-decorator.ts @@ -0,0 +1,16 @@ +import { ListableObject } from './listable-object/listable-object.model'; +import { GenericConstructor } from '../core/shared/generic-constructor'; + +const listElementMap = new Map(); +export function listElementFor(listable: GenericConstructor<ListableObject>) { + return function decorator(objectElement: any) { + if (!objectElement) { + return; + } + listElementMap.set(listable, objectElement); + }; +} + +export function getListElementFor(listable: GenericConstructor<ListableObject>) { + return listElementMap.get(listable); +} diff --git a/src/app/object-list/listable-object/listable-object.model.ts b/src/app/object-list/listable-object/listable-object.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..07c626cda28c5f42c2c232462b3f67b9583efe0d --- /dev/null +++ b/src/app/object-list/listable-object/listable-object.model.ts @@ -0,0 +1 @@ +export interface ListableObject {} diff --git a/src/app/object-list/object-list-element/object-list-element.component.html b/src/app/object-list/object-list-element/object-list-element.component.html index 5feb69b3a6a6b039ca87aa027c109a7e34777103..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/src/app/object-list/object-list-element/object-list-element.component.html +++ b/src/app/object-list/object-list-element/object-list-element.component.html @@ -1,5 +0,0 @@ -<div [ngSwitch]="object.type"> - <ds-item-list-element *ngSwitchCase="type.Item" [item]="object"></ds-item-list-element> - <ds-collection-list-element *ngSwitchCase="type.Collection" [collection]="object"></ds-collection-list-element> - <ds-community-list-element *ngSwitchCase="type.Community" [community]="object"></ds-community-list-element> -</div> \ No newline at end of file diff --git a/src/app/object-list/object-list-element/object-list-element.component.scss b/src/app/object-list/object-list-element/object-list-element.component.scss index 6bdc45f30f700c11ff6b4a873f35d8ca4dc34b8b..1a22768fe8d8e1602354616568b13334be0a3488 100644 --- a/src/app/object-list/object-list-element/object-list-element.component.scss +++ b/src/app/object-list/object-list-element/object-list-element.component.scss @@ -1,7 +1,6 @@ @import '../../../styles/variables.scss'; -@import '../../../../node_modules/bootstrap/scss/variables'; :host { display: block; - margin-bottom: $spacer-y; + margin-bottom: $spacer; } diff --git a/src/app/object-list/object-list-element/object-list-element.component.ts b/src/app/object-list/object-list-element/object-list-element.component.ts index 4b5f56e1e1257f896b7450c8f994cb0c0c80d34a..df39a7d18d2a8a145395ccd9bd1a27f36dbcaa71 100644 --- a/src/app/object-list/object-list-element/object-list-element.component.ts +++ b/src/app/object-list/object-list-element/object-list-element.component.ts @@ -1,18 +1,14 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { DSpaceObject } from '../../core/shared/dspace-object.model'; -import { ResourceType } from '../../core/shared/resource-type'; +import { Component, Inject } from '@angular/core'; +import { ListableObject } from '../listable-object/listable-object.model'; @Component({ selector: 'ds-object-list-element', styleUrls: ['./object-list-element.component.scss'], templateUrl: './object-list-element.component.html' }) -export class ObjectListElementComponent { - - public type = ResourceType; - - @Input() object: DSpaceObject; - - data: any = {}; - +export class ObjectListElementComponent <T extends ListableObject> { + object: T; + public constructor(@Inject('objectElementProvider') public listable: ListableObject) { + this.object = listable as T; + } } diff --git a/src/app/object-list/object-list.component.html b/src/app/object-list/object-list.component.html index da25195e27cf4853372172339a9fa68640293e17..0765e00476b69ade9a1a5f6b90601ded7624229b 100644 --- a/src/app/object-list/object-list.component.html +++ b/src/app/object-list/object-list.component.html @@ -7,10 +7,11 @@ (pageChange)="onPageChange($event)" (pageSizeChange)="onPageSizeChange($event)" (sortDirectionChange)="onSortDirectionChange($event)" - (sortFieldChange)="onSortDirectionChange($event)"> + (sortFieldChange)="onSortDirectionChange($event)" + (paginationChange)="onPaginationChange($event)"> <ul *ngIf="objects.hasSucceeded | async"> <!--class="list-unstyled"--> <li *ngFor="let object of (objects.payload | async) | paginate: { itemsPerPage: (pageInfo | async)?.elementsPerPage, currentPage: (pageInfo | async)?.currentPage, totalItems: (pageInfo | async)?.totalElements }"> - <ds-object-list-element [object]="object"></ds-object-list-element> + <ds-wrapper-list-element [object]="object"></ds-wrapper-list-element> </li> </ul> diff --git a/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html new file mode 100644 index 0000000000000000000000000000000000000000..914fb4948764df3fc227b71be25345b8aa26e277 --- /dev/null +++ b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html @@ -0,0 +1,2 @@ +<a [routerLink]="['/collections/' + dso.id]" class="lead" [innerHTML]="getFirstValue('dc.title')"></a> +<div *ngIf="dso.shortDescription" class="text-muted" [innerHTML]="getFirstValue('dc.description.abstract')"></div> diff --git a/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.scss b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..88eb98509acff8ad3ba1b4b7dd133891fc647246 --- /dev/null +++ b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.scss @@ -0,0 +1 @@ +@import '../../../../styles/variables.scss'; \ No newline at end of file diff --git a/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..9bea14e9a13aef2018dd91843b312833471d71dd --- /dev/null +++ b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; + +import { listElementFor } from '../../list-element-decorator'; +import { CollectionSearchResult } from './collection-search-result.model'; +import { SearchResultListElementComponent } from '../search-result-list-element.component'; +import { Collection } from '../../../core/shared/collection.model'; + +@Component({ + selector: 'ds-collection-search-result-list-element', + styleUrls: ['../search-result-list-element.component.scss', 'collection-search-result-list-element.component.scss'], + templateUrl: 'collection-search-result-list-element.component.html' +}) + +@listElementFor(CollectionSearchResult) +export class CollectionSearchResultListElementComponent extends SearchResultListElementComponent<CollectionSearchResult, Collection> {} diff --git a/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result.model.ts b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..081111e96c6623d2ac6c7f5ab3236035cdd050b0 --- /dev/null +++ b/src/app/object-list/search-result-list-element/collection-search-result/collection-search-result.model.ts @@ -0,0 +1,5 @@ +import { SearchResult } from '../../../search/search-result.model'; +import { Collection } from '../../../core/shared/collection.model'; + +export class CollectionSearchResult extends SearchResult<Collection> { +} diff --git a/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html b/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html new file mode 100644 index 0000000000000000000000000000000000000000..d09ef7d6686e454c1cfe0948ed4ffe30aa8b2848 --- /dev/null +++ b/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html @@ -0,0 +1,2 @@ +<a [routerLink]="['/communities/' + dso.id]" class="lead" [innerHTML]="getFirstValue('dc.title')"></a> +<div *ngIf="dso.shortDescription" class="text-muted" [innerHTML]="getFirstValue('dc.description.abstract')"></div> diff --git a/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.scss b/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..88eb98509acff8ad3ba1b4b7dd133891fc647246 --- /dev/null +++ b/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.scss @@ -0,0 +1 @@ +@import '../../../../styles/variables.scss'; \ No newline at end of file diff --git a/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts b/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..741b4b4f659b3c7bbd9a29e72948244187b202aa --- /dev/null +++ b/src/app/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; + +import { listElementFor } from '../../list-element-decorator'; +import { CommunitySearchResult } from './community-search-result.model'; +import { SearchResultListElementComponent } from '../search-result-list-element.component'; +import { Community } from '../../../core/shared/community.model'; + +@Component({ + selector: 'ds-community-search-result-list-element', + styleUrls: ['../search-result-list-element.component.scss', 'community-search-result-list-element.component.scss'], + templateUrl: 'community-search-result-list-element.component.html' +}) + +@listElementFor(CommunitySearchResult) +export class CommunitySearchResultListElementComponent extends SearchResultListElementComponent<CommunitySearchResult, Community> { + +} diff --git a/src/app/object-list/search-result-list-element/community-search-result/community-search-result.model.ts b/src/app/object-list/search-result-list-element/community-search-result/community-search-result.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..522b41700e2851a5ccc0d6cb6914a87fdc7e1e85 --- /dev/null +++ b/src/app/object-list/search-result-list-element/community-search-result/community-search-result.model.ts @@ -0,0 +1,5 @@ +import { SearchResult } from '../../../search/search-result.model'; +import { Community } from '../../../core/shared/community.model'; + +export class CommunitySearchResult extends SearchResult<Community> { +} diff --git a/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.html b/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.html new file mode 100644 index 0000000000000000000000000000000000000000..27b40eeeeb60d6cce58a379b3bb0e8e5694e5ef5 --- /dev/null +++ b/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.html @@ -0,0 +1,12 @@ +<a [routerLink]="['/items/' + dso.id]" class="lead" [innerHTML]="getFirstValue('dc.title')"></a> +<div> + <span class="text-muted"> + <span *ngIf="dso.filterMetadata(['dc.contributor.author', 'dc.creator', 'dc.contributor.*']);" class="item-list-authors"> + <span *ngFor="let author of getValues(['dc.contributor.author', 'dc.creator', 'dc.contributor.*']); let last=last;"> + <span [innerHTML]="author"><span [innerHTML]="author"></span></span> + </span> + </span> + (<span *ngIf="dso.findMetadata('dc.publisher')" class="item-list-publisher" [innerHTML]="getFirstValue('dc.publisher')">, </span><span *ngIf="dso.findMetadata('dc.date.issued')" class="item-list-date" [innerHTML]="getFirstValue('dc.date.issued')"></span>) + </span> + <div *ngIf="dso.findMetadata('dc.description.abstract')" class="item-list-abstract" [innerHTML]="getFirstValue('dc.description.abstract') | dsTruncate:[200]"></div> +</div> diff --git a/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.scss b/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..88eb98509acff8ad3ba1b4b7dd133891fc647246 --- /dev/null +++ b/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.scss @@ -0,0 +1 @@ +@import '../../../../styles/variables.scss'; \ No newline at end of file diff --git a/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.ts b/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..ef968db0b8fcb50a3b256cbfbcfe228198cf4abb --- /dev/null +++ b/src/app/object-list/search-result-list-element/item-search-result/item-search-result-list-element.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; + +import { listElementFor } from '../../list-element-decorator'; +import { ItemSearchResult } from './item-search-result.model'; +import { SearchResultListElementComponent } from '../search-result-list-element.component'; +import { Item } from '../../../core/shared/item.model'; + +@Component({ + selector: 'ds-item-search-result-list-element', + styleUrls: ['../search-result-list-element.component.scss', 'item-search-result-list-element.component.scss'], + templateUrl: 'item-search-result-list-element.component.html' +}) + +@listElementFor(ItemSearchResult) +export class ItemSearchResultListElementComponent extends SearchResultListElementComponent<ItemSearchResult, Item> {} diff --git a/src/app/object-list/search-result-list-element/item-search-result/item-search-result.model.ts b/src/app/object-list/search-result-list-element/item-search-result/item-search-result.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..dc5d282c2585f8708272dd4352c4f407910612a9 --- /dev/null +++ b/src/app/object-list/search-result-list-element/item-search-result/item-search-result.model.ts @@ -0,0 +1,5 @@ +import { SearchResult } from '../../../search/search-result.model'; +import { Item } from '../../../core/shared/item.model'; + +export class ItemSearchResult extends SearchResult<Item> { +} diff --git a/src/app/object-list/search-result-list-element/search-result-list-element.component.scss b/src/app/object-list/search-result-list-element/search-result-list-element.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..d688753eb3d48119515ff62a7174413818b1d6fd --- /dev/null +++ b/src/app/object-list/search-result-list-element/search-result-list-element.component.scss @@ -0,0 +1,7 @@ +@import '../../../styles/variables.scss'; +:host { + /deep/ em { + font-weight: bold; + font-style: normal; + } +} \ No newline at end of file diff --git a/src/app/object-list/search-result-list-element/search-result-list-element.component.ts b/src/app/object-list/search-result-list-element/search-result-list-element.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..3a2bf51c971a779a9a4afbf44762b56a5652c46d --- /dev/null +++ b/src/app/object-list/search-result-list-element/search-result-list-element.component.ts @@ -0,0 +1,57 @@ +import { Component, Inject } from '@angular/core'; + +import { ObjectListElementComponent } from '../object-list-element/object-list-element.component'; +import { ListableObject } from '../listable-object/listable-object.model'; +import { SearchResult } from '../../search/search-result.model'; +import { DSpaceObject } from '../../core/shared/dspace-object.model'; +import { Metadatum } from '../../core/shared/metadatum.model'; +import { isEmpty, hasNoValue } from '../../shared/empty.util'; + +@Component({ + selector: 'ds-search-result-list-element', + template: `` +}) + +export class SearchResultListElementComponent<T extends SearchResult<K>, K extends DSpaceObject> extends ObjectListElementComponent<T> { + dso: K; + + public constructor(@Inject('objectElementProvider') public listable: ListableObject) { + super(listable); + this.dso = this.object.dspaceObject; + } + + getValues(keys: string[]): string[] { + const results: string[] = new Array<string>(); + this.object.hitHighlights.forEach( + (md: Metadatum) => { + if (keys.indexOf(md.key) > -1) { + results.push(md.value); + } + } + ); + if (isEmpty(results)) { + this.dso.filterMetadata(keys).forEach( + (md: Metadatum) => { + results.push(md.value); + } + ); + } + return results; + } + + getFirstValue(key: string): string { + let result: string; + this.object.hitHighlights.some( + (md: Metadatum) => { + if (key === md.key) { + result = md.value; + return true; + } + } + ); + if (hasNoValue(result)) { + result = this.dso.findMetadata(key); + } + return result; + } +} diff --git a/src/app/object-list/wrapper-list-element/wrapper-list-element.component.html b/src/app/object-list/wrapper-list-element/wrapper-list-element.component.html new file mode 100644 index 0000000000000000000000000000000000000000..d5cfebdfa5b889808837912e19c0c1ad9bdfcd3b --- /dev/null +++ b/src/app/object-list/wrapper-list-element/wrapper-list-element.component.html @@ -0,0 +1 @@ +<ng-container *ngComponentOutlet="getListElement(); injector: objectInjector;"></ng-container> \ No newline at end of file diff --git a/src/app/object-list/wrapper-list-element/wrapper-list-element.component.scss b/src/app/object-list/wrapper-list-element/wrapper-list-element.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6f997644cc157483ad25042b68b97fe1a57012ab --- /dev/null +++ b/src/app/object-list/wrapper-list-element/wrapper-list-element.component.scss @@ -0,0 +1,2 @@ +@import '../../../styles/variables.scss'; + diff --git a/src/app/object-list/wrapper-list-element/wrapper-list-element.component.ts b/src/app/object-list/wrapper-list-element/wrapper-list-element.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..443b9681d177ee27279c68455a22c7df0ce0bc08 --- /dev/null +++ b/src/app/object-list/wrapper-list-element/wrapper-list-element.component.ts @@ -0,0 +1,27 @@ +import { Component, Input, Injector, ReflectiveInjector, OnInit } from '@angular/core'; +import { ListableObject } from '../listable-object/listable-object.model'; +import { getListElementFor } from '../list-element-decorator' +import { GenericConstructor } from '../../core/shared/generic-constructor'; + +@Component({ + selector: 'ds-wrapper-list-element', + styleUrls: ['./wrapper-list-element.component.scss'], + templateUrl: './wrapper-list-element.component.html' +}) +export class WrapperListElementComponent implements OnInit { + @Input() object: ListableObject; + objectInjector: Injector; + + constructor(private injector: Injector) {} + + ngOnInit(): void { + this.objectInjector = ReflectiveInjector.resolveAndCreate( + [{provide: 'objectElementProvider', useFactory: () => (this.object) }], this.injector); + + } + + getListElement(): string { + const f: GenericConstructor<ListableObject> = this.object.constructor as GenericConstructor<ListableObject>; + return getListElementFor(f); + } +} diff --git a/src/app/search-page/search-page-routing.module.ts b/src/app/search-page/search-page-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..76b7d9ad0c7c3bde7b9c64eb42dbd151aa1900c7 --- /dev/null +++ b/src/app/search-page/search-page-routing.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { SearchPageComponent } from './search-page.component'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: 'search', component: SearchPageComponent } + ]) + ] +}) +export class SearchPageRoutingModule { } diff --git a/src/app/search-page/search-page.component.html b/src/app/search-page/search-page.component.html new file mode 100644 index 0000000000000000000000000000000000000000..a8747a6cf9eed99db6152bb9bd6356b531a832a0 --- /dev/null +++ b/src/app/search-page/search-page.component.html @@ -0,0 +1,4 @@ +<div class="search-page"> + <ds-search-form [query]="query" [scope]="scopeObject?.payload | async" [currentParams]="currentParams" [scopes]="scopeList?.payload"></ds-search-form> + <ds-search-results [searchResults]="results" [searchConfig]="searchOptions"></ds-search-results> +</div> diff --git a/src/app/search-page/search-page.component.scss b/src/app/search-page/search-page.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..da97dd7a62e610066229abae8f4c43a981b82780 --- /dev/null +++ b/src/app/search-page/search-page.component.scss @@ -0,0 +1 @@ +@import '../../styles/variables.scss'; diff --git a/src/app/search-page/search-page.component.ts b/src/app/search-page/search-page.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..a35f6f01a3d3529a7abc5d83ed37bde235e07f7d --- /dev/null +++ b/src/app/search-page/search-page.component.ts @@ -0,0 +1,89 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { SearchService } from '../search/search.service'; +import { ActivatedRoute, Router } from '@angular/router'; +import { RemoteData } from '../core/data/remote-data'; +import { SearchResult } from '../search/search-result.model'; +import { DSpaceObject } from '../core/shared/dspace-object.model'; +import { SortOptions } from '../core/cache/models/sort-options.model'; +import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model'; +import { SearchOptions } from '../search/search-options.model'; +import { CommunityDataService } from '../core/data/community-data.service'; +import { isNotEmpty } from '../shared/empty.util'; +import { Community } from '../core/shared/community.model'; + +/** + * This component renders a simple item page. + * The route parameter 'id' is used to request the item it represents. + * All fields of the item that should be displayed, are defined in its template. + */ + +@Component({ + selector: 'ds-search-page', + styleUrls: ['./search-page.component.scss'], + templateUrl: './search-page.component.html', +}) +export class SearchPageComponent implements OnInit, OnDestroy { + private sub; + query: string; + private scope: string; + scopeObject: RemoteData<DSpaceObject>; + results: RemoteData<Array<SearchResult<DSpaceObject>>>; + currentParams = {}; + searchOptions: SearchOptions; + scopeList: RemoteData<Community[]>; + + constructor(private service: SearchService, + private route: ActivatedRoute, + private communityService: CommunityDataService,) { + this.scopeList = communityService.findAll(); + // Initial pagination config + const pagination: PaginationComponentOptions = new PaginationComponentOptions(); + pagination.id = 'search-results-pagination'; + pagination.currentPage = 1; + pagination.pageSize = 10; + const sort: SortOptions = new SortOptions(); + this.searchOptions = { pagination: pagination, sort: sort }; + } + + ngOnInit(): void { + this.sub = this.route + .queryParams + .subscribe((params) => { + // Save current parameters + this.currentParams = params; + this.query = params.query || ''; + this.scope = params.scope; + const page = +params.page || this.searchOptions.pagination.currentPage; + const pageSize = +params.pageSize || this.searchOptions.pagination.pageSize; + const sortDirection = +params.sortDirection || this.searchOptions.sort.direction; + const pagination = Object.assign({}, + this.searchOptions.pagination, + { currentPage: page, pageSize: pageSize } + ); + const sort = Object.assign({}, + this.searchOptions.sort, + { direction: sortDirection, field: params.sortField } + ); + this.updateSearchResults({ + pagination: pagination, + sort: sort + }); + if (isNotEmpty(this.scope)) { + this.scopeObject = this.communityService.findById(this.scope); + } else { + this.scopeObject = undefined; + } + } + ); + } + + private updateSearchResults(searchOptions) { + // Resolve search results + this.results = this.service.search(this.query, this.scope, searchOptions); + + } + + ngOnDestroy() { + this.sub.unsubscribe(); + } +} diff --git a/src/app/search-page/search-page.module.ts b/src/app/search-page/search-page.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..67a88f579cebdf079e01f0819fc1a4070fee5ddf --- /dev/null +++ b/src/app/search-page/search-page.module.ts @@ -0,0 +1,38 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; + +import { TranslateModule } from '@ngx-translate/core'; + +import { SharedModule } from '../shared/shared.module'; +import { SearchPageRoutingModule } from './search-page-routing.module'; +import { SearchPageComponent } from './search-page.component'; +import { SearchResultsComponent } from './search-results/search-results.compontent'; +import { SearchModule } from '../search/search.module'; +import { ItemSearchResultListElementComponent } from '../object-list/search-result-list-element/item-search-result/item-search-result-list-element.component'; +import { CollectionSearchResultListElementComponent } from '../object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component'; +import { CommunitySearchResultListElementComponent } from '../object-list/search-result-list-element/community-search-result/community-search-result-list-element.component'; + +@NgModule({ + imports: [ + SearchPageRoutingModule, + CommonModule, + TranslateModule, + RouterModule, + SharedModule, + SearchModule + ], + declarations: [ + SearchPageComponent, + SearchResultsComponent, + ItemSearchResultListElementComponent, + CollectionSearchResultListElementComponent, + CommunitySearchResultListElementComponent + ], + entryComponents: [ + ItemSearchResultListElementComponent, + CollectionSearchResultListElementComponent, + CommunitySearchResultListElementComponent + ] +}) +export class SearchPageModule { } diff --git a/src/app/search-page/search-results/search-results.component.html b/src/app/search-page/search-results/search-results.component.html new file mode 100644 index 0000000000000000000000000000000000000000..7d769dbeb038086cb0f406243851467adedf7d0b --- /dev/null +++ b/src/app/search-page/search-results/search-results.component.html @@ -0,0 +1,3 @@ +<h2 *ngIf="(searchResults.payload | async)?.length > 0">{{ 'search.results.title' | translate }}</h2> +<ds-object-list [config]="searchConfig.pagination" [sortConfig]="searchConfig.sort" + [objects]="searchResults" [hideGear]="false"></ds-object-list> \ No newline at end of file diff --git a/src/app/search-page/search-results/search-results.compontent.ts b/src/app/search-page/search-results/search-results.compontent.ts new file mode 100644 index 0000000000000000000000000000000000000000..505a3eeae4dccdf47311d0c7aaf61e08f6d715e4 --- /dev/null +++ b/src/app/search-page/search-results/search-results.compontent.ts @@ -0,0 +1,21 @@ +import { Component, Input } from '@angular/core'; +import { RemoteData } from '../../core/data/remote-data'; +import { SearchResult } from '../../search/search-result.model'; +import { DSpaceObject } from '../../core/shared/dspace-object.model'; +import { SearchOptions } from '../../search/search-options.model'; + +/** + * This component renders a simple item page. + * The route parameter 'id' is used to request the item it represents. + * All fields of the item that should be displayed, are defined in its template. + */ + +@Component({ + selector: 'ds-search-results', + templateUrl: './search-results.component.html', +}) + +export class SearchResultsComponent { + @Input() searchResults: RemoteData<Array<SearchResult<DSpaceObject>>>; + @Input() searchConfig: SearchOptions; +} diff --git a/src/app/search/search-options.model.ts b/src/app/search/search-options.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..fd4a5accf688dd4acb61ae246a4cad6919d406fe --- /dev/null +++ b/src/app/search/search-options.model.ts @@ -0,0 +1,7 @@ +import { SortOptions } from '../core/cache/models/sort-options.model'; +import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model'; + +export class SearchOptions { + pagination?: PaginationComponentOptions; + sort?: SortOptions; +} diff --git a/src/app/search/search-result.model.ts b/src/app/search/search-result.model.ts index a6022c166133158cf51dba5353e9c8e14d7eed11..2dd9130ee8391af143798a165df4a5e45f222404 100644 --- a/src/app/search/search-result.model.ts +++ b/src/app/search/search-result.model.ts @@ -1,7 +1,8 @@ import { DSpaceObject } from '../core/shared/dspace-object.model'; import { Metadatum } from '../core/shared/metadatum.model'; +import { ListableObject } from '../object-list/listable-object/listable-object.model'; -export class SearchResult<T extends DSpaceObject> { +export class SearchResult<T extends DSpaceObject> implements ListableObject { dspaceObject: T; hitHighlights: Metadatum[]; diff --git a/src/app/search/search.models.ts b/src/app/search/search.models.ts deleted file mode 100644 index 4ce3b2e39dfebed870644d168957d3412fd25666..0000000000000000000000000000000000000000 --- a/src/app/search/search.models.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { SortOptions } from '../core/cache/models/sort-options.model'; - -export class SearchOptions { - elementsPerPage?: number; - currentPage?: number; - sort?: SortOptions; -} diff --git a/src/app/search/search.service.ts b/src/app/search/search.service.ts index 3c127946cb4fa1fb50e087b60b59c1cc1640ddd0..87cfdafd4b4269f9af83cf4ac51f64286bc3a849 100644 --- a/src/app/search/search.service.ts +++ b/src/app/search/search.service.ts @@ -5,10 +5,25 @@ import { SearchResult } from './search-result.model'; import { ItemDataService } from '../core/data/item-data.service'; import { PageInfo } from '../core/shared/page-info.model'; import { DSpaceObject } from '../core/shared/dspace-object.model'; -import { SearchOptions } from './search.models'; +import { SearchOptions } from './search-options.model'; import { hasValue, isNotEmpty } from '../shared/empty.util'; import { Metadatum } from '../core/shared/metadatum.model'; import { Item } from '../core/shared/item.model'; +import { ItemSearchResult } from '../object-list/search-result-list-element/item-search-result/item-search-result.model'; + +function shuffle(array: any[]) { + let i = 0; + let j = 0; + let temp = null; + + for (i = array.length - 1; i > 0; i -= 1) { + j = Math.floor(Math.random() * (i + 1)); + temp = array[i]; + array[i] = array[j]; + array[j] = temp; + } + return array; +} @Injectable() export class SearchService { @@ -36,39 +51,47 @@ export class SearchService { if (hasValue(scopeId)) { self += `&scope=${scopeId}`; } - if (isNotEmpty(searchOptions) && hasValue(searchOptions.currentPage)) { - self += `&page=${searchOptions.currentPage}`; + if (isNotEmpty(searchOptions) && hasValue(searchOptions.pagination.currentPage)) { + self += `&page=${searchOptions.pagination.currentPage}`; + } + if (isNotEmpty(searchOptions) && hasValue(searchOptions.pagination.pageSize)) { + self += `&pageSize=${searchOptions.pagination.pageSize}`; + } + if (isNotEmpty(searchOptions) && hasValue(searchOptions.sort.direction)) { + self += `&sortDirection=${searchOptions.sort.direction}`; + } + if (isNotEmpty(searchOptions) && hasValue(searchOptions.sort.field)) { + self += `&sortField=${searchOptions.sort.field}`; } const requestPending = Observable.of(false); const responsePending = Observable.of(false); - const isSuccessFul = Observable.of(true); const errorMessage = Observable.of(undefined); const statusCode = Observable.of('200'); const returningPageInfo = new PageInfo(); if (isNotEmpty(searchOptions)) { - returningPageInfo.elementsPerPage = searchOptions.elementsPerPage; - returningPageInfo.currentPage = searchOptions.currentPage; + returningPageInfo.elementsPerPage = searchOptions.pagination.pageSize; + returningPageInfo.currentPage = searchOptions.pagination.currentPage; } else { returningPageInfo.elementsPerPage = 10; returningPageInfo.currentPage = 1; } - returningPageInfo.totalPages = this.totalPages; - returningPageInfo.totalElements = 10 * this.totalPages; - const pageInfo = Observable.of(returningPageInfo); const itemsRD = this.itemDataService.findAll({ - scopeID: '8e0928a0-047a-4369-8883-12669f32dd64', + scopeID: scopeId, currentPage: returningPageInfo.currentPage, elementsPerPage: returningPageInfo.elementsPerPage }); + + const pageInfo = itemsRD.pageInfo.map((info: PageInfo) => { + info.totalElements = info.totalElements > 20 ? 20 : info.totalElements; + return info; + }); + const payload = itemsRD.payload.map((items: Item[]) => { - return items.sort(() => { - const values = [-1, 0, 1]; - return values[Math.floor(Math.random() * values.length)]; - }) + return shuffle(items) .map((item: Item, index: number) => { - const mockResult: SearchResult<DSpaceObject> = new SearchResult(); + const mockResult: SearchResult<DSpaceObject> = new ItemSearchResult(); mockResult.dspaceObject = item; const highlight = new Metadatum(); highlight.key = 'dc.description.abstract'; @@ -82,7 +105,7 @@ export class SearchService { self, requestPending, responsePending, - isSuccessFul, + itemsRD.hasSucceeded, errorMessage, statusCode, pageInfo, diff --git a/src/app/shared/empty.util.spec.ts b/src/app/shared/empty.util.spec.ts index 7761bccf8cbfef1e7b14fc19b310918bd0d6b449..509f55f7f8f834b8946393fc6c1773d5cab378ad 100644 --- a/src/app/shared/empty.util.spec.ts +++ b/src/app/shared/empty.util.spec.ts @@ -317,7 +317,7 @@ describe('Empty Utils', () => { }); it('should return false for an empty Object', () => { - expect(isEmpty({})).toBe(false); + expect(isEmpty({})).toBe(true); }); it('should return true for an Object that has zero \'length\'', () => { @@ -377,7 +377,7 @@ describe('Empty Utils', () => { }); it('should return true for an empty Object', () => { - expect(isNotEmpty({})).toBe(true); + expect(isNotEmpty({})).toBe(false); }); it('should return false for an Object that has zero length', () => { diff --git a/src/app/shared/empty.util.ts b/src/app/shared/empty.util.ts index 6346e7d0428a366cac780c09c898b7d4d5e69d3d..1dc3f71871ff0f0b3f332c07ac7f29edd90db5dd 100644 --- a/src/app/shared/empty.util.ts +++ b/src/app/shared/empty.util.ts @@ -90,7 +90,7 @@ export function hasValue(obj?: any): boolean { * isEmpty(undefined); // true * isEmpty(''); // true * isEmpty([]); // true - * isEmpty({}); // false + * isEmpty({}); // true * isEmpty('Adam Hawkins'); // false * isEmpty([0,1,2]); // false * isEmpty('\n\t'); // false @@ -119,6 +119,9 @@ export function isEmpty(obj?: any): boolean { } if (objectType === 'object') { + if (Object.keys(obj).length === 0) { + return true; + } const length = obj.length; if (typeof length === 'number') { return !length; @@ -136,7 +139,7 @@ export function isEmpty(obj?: any): boolean { * isNotEmpty(undefined); // false * isNotEmpty(''); // false * isNotEmpty([]); // false - * isNotEmpty({}); // true + * isNotEmpty({}); // false * isNotEmpty('Adam Hawkins'); // true * isNotEmpty([0,1,2]); // true * isNotEmpty('\n\t'); // true diff --git a/src/app/shared/object-list/object-list.component.ts b/src/app/shared/object-list/object-list.component.ts index fd42e640fad1797dd874f0963e98217c1aeaa1fb..c3018b957c55c5e73f6dd37643e1a631b5941c16 100644 --- a/src/app/shared/object-list/object-list.component.ts +++ b/src/app/shared/object-list/object-list.component.ts @@ -11,12 +11,12 @@ import { import { Observable } from 'rxjs/Observable'; import { RemoteData } from '../../core/data/remote-data'; -import { DSpaceObject } from '../../core/shared/dspace-object.model'; import { PageInfo } from '../../core/shared/page-info.model'; import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; import { SortOptions, SortDirection } from '../../core/cache/models/sort-options.model'; +import { ListableObject } from '../../object-list/listable-object/listable-object.model'; @Component({ changeDetection: ChangeDetectionStrategy.Default, @@ -27,7 +27,7 @@ import { SortOptions, SortDirection } from '../../core/cache/models/sort-options }) export class ObjectListComponent implements OnChanges, OnInit { - @Input() objects: RemoteData<DSpaceObject[]>; + @Input() objects: RemoteData<ListableObject[]>; @Input() config: PaginationComponentOptions; @Input() sortConfig: SortOptions; @Input() hideGear = false; @@ -52,6 +52,8 @@ export class ObjectListComponent implements OnChanges, OnInit { */ @Output() sortDirectionChange: EventEmitter<SortDirection> = new EventEmitter<SortDirection>(); + @Output() paginationChange: EventEmitter<SortDirection> = new EventEmitter<any>(); + /** * An event fired when the sort field is changed. * Event's payload equals to the newly selected sort field. @@ -95,4 +97,8 @@ export class ObjectListComponent implements OnChanges, OnInit { this.sortFieldChange.emit(event); } + onPaginationChange(event) { + this.paginationChange.emit(event); + } + } diff --git a/src/app/shared/pagination/pagination.component.html b/src/app/shared/pagination/pagination.component.html index b61920567de4f78084d71a4119d98df5448b7b59..b280f481eda41984b575af3ea5f46a0ba9144097 100644 --- a/src/app/shared/pagination/pagination.component.html +++ b/src/app/shared/pagination/pagination.component.html @@ -3,22 +3,21 @@ <div class="row"> <div class="col pagination-info"> <span class="align-middle hidden-xs-down">{{ 'pagination.showing.label' | translate }}</span> - <span class="align-middle">{{ 'pagination.showing.detail' | translate:showingDetail }}</span> + <span class="align-middle" *ngIf="collectionSize">{{ 'pagination.showing.detail' | translate:getShowingDetails(collectionSize)}}</span> </div> <div class="col"> <div ngbDropdown #paginationControls="ngbDropdown" class="d-inline-block float-right"> - <button class="btn btn-outline-primary" id="paginationControls" (click)="$event.stopPropagation(); (paginationControls.isOpen())?paginationControls.close():paginationControls.open();"><i class="fa fa-cog" aria-hidden="true"></i></button> - <div class="dropdown-menu dropdown-menu-right" id="paginationControlsDropdownMenu" aria-labelledby="paginationControls"> + <button class="btn btn-outline-primary" id="paginationControls" ngbDropdownToggle><i class="fa fa-cog" aria-hidden="true"></i></button> + <div class="dropdown-menu dropdown-menu-right" id="paginationControlsDropdownMenu" aria-labelledby="paginationControls" ngbDropdownMenu> <h6 class="dropdown-header">{{ 'pagination.results-per-page' | translate}}</h6> - <button class="dropdown-item" style="padding-left: 20px" *ngFor="let item of pageSizeOptions" (click)="setPageSize(item)"><i class="fa fa-check {{(item != paginationOptions.pageSize) ? 'invisible' : ''}}" aria-hidden="true"></i> {{item}} </button> + <button class="dropdown-item" *ngFor="let item of pageSizeOptions" (click)="doPageSizeChange(item)"><i [ngClass]="{'invisible': item != pageSize}" class="fa fa-check" aria-hidden="true"></i> {{item}} </button> <h6 class="dropdown-header">{{ 'pagination.sort-direction' | translate}}</h6> - <button class="dropdown-item" style="padding-left: 20px" *ngFor="let direction of (sortDirections | dsKeys)" (click)="setSortDirection(direction.key)"><i class="fa fa-check {{(direction.key != sortOptions.direction) ? 'invisible' : ''}}" aria-hidden="true"></i> {{direction.value}} </button> + <button class="dropdown-item" *ngFor="let direction of (sortDirections | dsKeys)" (click)="doSortDirectionChange(direction.key)"><i [ngClass]="{'invisible': direction.key != sortDirection}" class="fa fa-check" aria-hidden="true"></i> {{direction.value}} </button> </div> </div> </div> - </div> </div> - + </div> <ng-content></ng-content> <div *ngIf="shouldShowBottomPager" class="pagination justify-content-center clearfix bottom"> @@ -27,7 +26,7 @@ [disabled]="paginationOptions.disabled" [ellipses]="paginationOptions.ellipses" [maxSize]="(isXs)?5:paginationOptions.maxSize" - [(page)]="currentPage" + [page]="currentPage" (pageChange)="doPageChange($event)" [pageSize]="pageSize" [rotate]="paginationOptions.rotate" diff --git a/src/app/shared/pagination/pagination.component.scss b/src/app/shared/pagination/pagination.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..755d916faa5913acfadfb903a25c323f33a19a39 --- /dev/null +++ b/src/app/shared/pagination/pagination.component.scss @@ -0,0 +1,8 @@ +:host { + .dropdown-toggle::after { + display: none; + } + .dropdown-item { + padding-left: 20px; + } +} \ No newline at end of file diff --git a/src/app/shared/pagination/pagination.component.spec.ts b/src/app/shared/pagination/pagination.component.spec.ts index c2e6a8956dba765845b839736b7d3e896c8ed05d..92d7ba693f57387a8e48cb7b27f042092985ec9f 100644 --- a/src/app/shared/pagination/pagination.component.spec.ts +++ b/src/app/shared/pagination/pagination.component.spec.ts @@ -223,43 +223,48 @@ describe('Pagination component', () => { }); it('should render and respond to pageSize change', () => { + const paginationComponent: PaginationComponent = testFixture.debugElement.query(By.css('ds-pagination')).references.p; testComp.collectionSize = 30; testFixture.detectChanges(); expectPages(testFixture, ['-« Previous', '+1', '2', '3', '» Next']); - changePageSize(testFixture, '5'); + paginationComponent.setPageSize(5); + testFixture.detectChanges(); expectPages(testFixture, ['-« Previous', '+1', '2', '3', '4', '5', '6', '» Next']); - changePageSize(testFixture, '10'); + paginationComponent.setPageSize(10); + testFixture.detectChanges(); expectPages(testFixture, ['-« Previous', '+1', '2', '3', '» Next']); - changePageSize(testFixture, '20'); + paginationComponent.setPageSize(20); + testFixture.detectChanges(); expectPages(testFixture, ['-« Previous', '+1', '2', '» Next']); }); it('should emit pageChange event with correct value', fakeAsync(() => { + const paginationComponent: PaginationComponent = testFixture.debugElement.query(By.css('ds-pagination')).references.p; spyOn(testComp, 'pageChanged'); - changePage(testFixture, 3); + paginationComponent.setPage(3); tick(); expect(testComp.pageChanged).toHaveBeenCalledWith(3); })); it('should emit pageSizeChange event with correct value', fakeAsync(() => { + const paginationComponent: PaginationComponent = testFixture.debugElement.query(By.css('ds-pagination')).references.p; spyOn(testComp, 'pageSizeChanged'); - changePageSize(testFixture, '5'); + paginationComponent.setPageSize(5); tick(); expect(testComp.pageSizeChanged).toHaveBeenCalledWith(5); })); - it('should set correct route parameters', fakeAsync(() => { - const paginationComponent: PaginationComponent = testFixture.debugElement.query(By.css('ds-pagination')).references.p; + it('should set correct page route parameters', fakeAsync(() => { routerStub = testFixture.debugElement.injector.get(Router) as any; testComp.collectionSize = 60; @@ -267,11 +272,29 @@ describe('Pagination component', () => { changePage(testFixture, 3); tick(); expect(routerStub.navigate).toHaveBeenCalledWith([], { queryParams: { pageId: 'test', page: 3, pageSize: 10, sortDirection: 0, sortField: 'name' } }); - expect(paginationComponent.currentPage).toEqual(3); + + })); + + it('should set correct pageSize route parameters', fakeAsync(() => { + routerStub = testFixture.debugElement.injector.get(Router) as any; + + testComp.collectionSize = 60; changePageSize(testFixture, '20'); tick(); - expect(routerStub.navigate).toHaveBeenCalledWith([], { queryParams: { pageId: 'test', page: 3, pageSize: 20, sortDirection: 0, sortField: 'name' } }); + expect(routerStub.navigate).toHaveBeenCalledWith([], { queryParams: { pageId: 'test', page: 1, pageSize: 20, sortDirection: 0, sortField: 'name' } }); + })); + + it('should set correct values', fakeAsync(() => { + const paginationComponent: PaginationComponent = testFixture.debugElement.query(By.css('ds-pagination')).references.p; + routerStub = testFixture.debugElement.injector.get(Router) as any; + + testComp.collectionSize = 60; + + paginationComponent.setPage(3); + expect(paginationComponent.currentPage).toEqual(3); + + paginationComponent.setPageSize(20); expect(paginationComponent.pageSize).toEqual(20); })); diff --git a/src/app/shared/pagination/pagination.component.ts b/src/app/shared/pagination/pagination.component.ts index 459b3d59cf9eec95edd739649d324c69576da3da..5f37030ec50d16935824c062674d5a818e7539fb 100644 --- a/src/app/shared/pagination/pagination.component.ts +++ b/src/app/shared/pagination/pagination.component.ts @@ -3,10 +3,9 @@ import { Component, EventEmitter, Input, - OnChanges, OnDestroy, OnInit, - Output, SimpleChanges, + Output, ViewEncapsulation } from '@angular/core' @@ -21,7 +20,7 @@ import { HostWindowService } from '../host-window.service'; import { HostWindowState } from '../host-window.reducer'; import { PaginationComponentOptions } from './pagination-component-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; -import { hasValue, isUndefined } from '../empty.util'; +import { hasValue, isNotEmpty } from '../empty.util'; import { PageInfo } from '../../core/shared/page-info.model'; /** @@ -30,12 +29,12 @@ import { PageInfo } from '../../core/shared/page-info.model'; @Component({ exportAs: 'paginationComponent', selector: 'ds-pagination', + styleUrls: ['pagination.component.scss'], templateUrl: 'pagination.component.html', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.Emulated }) -export class PaginationComponent implements OnChanges, OnDestroy, OnInit { - +export class PaginationComponent implements OnDestroy, OnInit { /** * Number of items in collection. */ @@ -80,6 +79,12 @@ export class PaginationComponent implements OnChanges, OnDestroy, OnInit { */ @Output() sortFieldChange: EventEmitter<string> = new EventEmitter<string>(); + /** + * An event fired when the sort field is changed. + * Event's payload equals to the newly selected sort field. + */ + @Output() paginationChange: EventEmitter<any> = new EventEmitter<any>(); + /** * Option for hiding the gear */ @@ -103,7 +108,7 @@ export class PaginationComponent implements OnChanges, OnDestroy, OnInit { /** * Current URL query parameters */ - public currentQueryParams = {}; + public currentQueryParams: any; /** * An observable of HostWindowState type @@ -146,34 +151,12 @@ export class PaginationComponent implements OnChanges, OnDestroy, OnInit { */ public sortField = 'id'; - /** - * Local variable, which can be used in the template to access the paginate controls ngbDropdown methods and properties - */ - public paginationControls; - /** * Array to track all subscriptions and unsubscribe them onDestroy * @type {Array} */ private subs: Subscription[] = []; - /** - * An object that represents pagination details of the current viewed page - */ - public showingDetail: any = { - range: null, - total: null - }; - - ngOnChanges(changes: SimpleChanges) { - if (changes.pageInfoState && !changes.pageInfoState.isFirstChange()) { - this.subs.push(this.pageInfoState.subscribe((pageInfo) => { - /* TODO: this is a temporary fix for the pagination start index (0 or 1) discrepancy between the rest and the frontend respectively */ - this.currentPageState = pageInfo.currentPage + 1; - })); - } - } - /** * Method provided by Angular. Invoked after the constructor. */ @@ -184,38 +167,25 @@ export class PaginationComponent implements OnChanges, OnDestroy, OnInit { this.cdRef.markForCheck(); })); this.checkConfig(this.paginationOptions); - - if (this.pageInfoState) { - this.subs.push(this.pageInfoState.subscribe((pageInfo) => { - /* TODO: this is a temporary fix for the pagination start index (0 or 1) discrepancy between the rest and the frontend respectively */ - this.currentPageState = pageInfo.currentPage + 1; - })); - } - - this.id = this.paginationOptions.id || null; - this.pageSizeOptions = this.paginationOptions.pageSizeOptions; + this.initializeConfig(); + // Listen to changes this.subs.push(this.route.queryParams - .filter((queryParams) => hasValue(queryParams)) .subscribe((queryParams) => { - this.currentQueryParams = queryParams; - if (this.id === queryParams.pageId - && (this.paginationOptions.currentPage !== +queryParams.page - || this.paginationOptions.pageSize !== +queryParams.pageSize - || this.sortOptions.direction !== +queryParams.sortDirection - || this.sortOptions.field !== queryParams.sortField) - ) { - this.validateParams(queryParams.page, queryParams.pageSize, queryParams.sortDirection, queryParams.sortField); - } else if (isUndefined(queryParams.pageId) && !isUndefined(this.currentPage)) { - // When moving back from a page with query params to page without them, initialize to the first page - this.doPageChange(1); + if (this.isEmptyPaginationParams(queryParams)) { + this.initializeConfig(); } else { - this.currentPage = this.paginationOptions.currentPage; - this.pageSize = this.paginationOptions.pageSize; - this.sortDirection = this.sortOptions.direction; - this.sortField = this.sortOptions.field; + this.currentQueryParams = queryParams; + const fixedProperties = this.validateParams(queryParams); + if (isNotEmpty(fixedProperties)) { + this.fixRoute(fixedProperties); + } + this.setFields(); } })); - this.setShowingDetail(); + } + + private fixRoute(fixedProperties) { + this.updateRoute(fixedProperties); } /** @@ -227,156 +197,251 @@ export class PaginationComponent implements OnChanges, OnDestroy, OnInit { .forEach((sub) => sub.unsubscribe()); } + /** + * Initializes all default variables + */ + private initializeConfig() { + // Set initial values + this.id = this.paginationOptions.id || null; + this.pageSizeOptions = this.paginationOptions.pageSizeOptions; + this.currentPage = this.paginationOptions.currentPage; + this.pageSize = this.paginationOptions.pageSize; + this.sortDirection = this.sortOptions.direction; + this.sortField = this.sortOptions.field; + this.currentQueryParams = { + pageId: this.id, + page: this.currentPage, + pageSize: this.pageSize, + sortDirection: this.sortDirection, + sortField: this.sortField + }; + } + /** * @param route * Route is a singleton service provided by Angular. * @param router * Router is a singleton service provided by Angular. */ - constructor( - private cdRef: ChangeDetectorRef, - private route: ActivatedRoute, - private router: Router, - public hostWindowService: HostWindowService) { + constructor(private cdRef: ChangeDetectorRef, + private route: ActivatedRoute, + private router: Router, + public hostWindowService: HostWindowService) { } /** - * Method to set set new page and update route parameters + * Method to change the route to the given page * * @param page * The page being navigated to. */ public doPageChange(page: number) { + this.updateRoute({ page: page }); + } + + /** + * Method to change the route to the given page size + * + * @param pageSize + * The page size being navigated to. + */ + public doPageSizeChange(pageSize: number) { + this.updateRoute({ page: 1, pageSize: pageSize }); + } + + /** + * Method to change the route to the given sort direction + * + * @param sortDirection + * The sort direction being navigated to. + */ + public doSortDirectionChange(sortDirection: SortDirection) { + this.updateRoute({ page: 1, sortDirection: sortDirection }); + } + + /** + * Method to change the route to the given sort field + * + * @param sortField + * The sort field being navigated to. + */ + public doSortFieldChange(field: string) { + this.updateRoute({ page: 1, sortField: field }); + } + + /** + * Method to set the current page and trigger page change events + * + * @param page + * The new page value + */ + public setPage(page: number) { this.currentPage = page; - this.updateRoute(); - this.setShowingDetail(); this.pageChange.emit(page); + this.emitPaginationChange(); } /** - * Method to set set new page size and update route parameters + * Method to set the current page size and trigger page size change events * * @param pageSize - * The new page size. + * The new page size value. */ public setPageSize(pageSize: number) { this.pageSize = pageSize; - this.updateRoute(); - this.setShowingDetail(); this.pageSizeChange.emit(pageSize); + this.emitPaginationChange(); } /** - * Method to set set new sort direction and update route parameters + * Method to set the current sort direction and trigger sort direction change events * * @param sortDirection - * The new sort direction. + * The new sort directionvalue. */ public setSortDirection(sortDirection: SortDirection) { this.sortDirection = sortDirection; - this.updateRoute(); - this.setShowingDetail(); this.sortDirectionChange.emit(sortDirection); + this.emitPaginationChange(); } /** - * Method to set set new sort field and update route parameters + * Method to set the current sort field and trigger sort field change events * * @param sortField * The new sort field. */ public setSortField(field: string) { this.sortField = field; - this.updateRoute(); - this.setShowingDetail(); this.sortFieldChange.emit(field); + this.emitPaginationChange(); + } + + /** + * Method to emit a general pagination change event + */ + private emitPaginationChange() { + this.paginationChange.emit({ + pageId: this.id, + page: this.currentPage, + pageSize: this.pageSize, + sortDirection: this.sortDirection, + sortField: this.sortField + }); } /** * Method to update the route parameters */ - private updateRoute() { + private updateRoute(params: {}) { this.router.navigate([], { - queryParams: Object.assign({}, this.currentQueryParams, { - pageId: this.id, - page: this.currentPage, - pageSize: this.pageSize, - sortDirection: this.sortDirection, - sortField: this.sortField - }) + queryParams: Object.assign({}, this.currentQueryParams, params) }); } /** - * Method to set pagination details of the current viewed page. + * Method to get pagination details of the current viewed page. */ - private setShowingDetail() { - let firstItem; - let lastItem; - const lastPage = Math.round(this.collectionSize / this.pageSize); + public getShowingDetails(collectionSize: number): any { + let showingDetails = { range: null + ' - ' + null, total: null }; + if (collectionSize) { + let firstItem; + let lastItem; + const pageMax = this.pageSize * this.currentPage; - firstItem = this.pageSize * (this.currentPage - 1) + 1; - if (this.currentPage !== lastPage) { - lastItem = this.pageSize * this.currentPage; - } else { - lastItem = this.collectionSize; - } - this.showingDetail = { - range: firstItem + ' - ' + lastItem, - total: this.collectionSize + firstItem = this.pageSize * (this.currentPage - 1) + 1; + if (collectionSize > pageMax) { + lastItem = pageMax; + } else { + lastItem = collectionSize; + } + showingDetails = { range: firstItem + ' - ' + lastItem, total: collectionSize }; } + return showingDetails; } /** - * Validate query params + * Method to validate query params * * @param page * The page number to validate * @param pageSize * The page size to validate + * @returns valid parameters if initial parameters were invalid + */ + private validateParams(params: any): any { + const validPage = this.validatePage(params.page); + const filteredSize = this.validatePageSize(params.pageSize); + const fixedFields: any = {}; + if (+params.page !== validPage) { + fixedFields.page = validPage; + } + if (+params.pageSize !== filteredSize) { + fixedFields.pageSize = filteredSize; + } + return fixedFields; + } + + /** + * Method to update all pagination variables to the current query parameters */ - private validateParams(page: any, pageSize: any, sortDirection: any, sortField: any) { - // tslint:disable-next-line:triple-equals - let filteredPageSize = this.pageSizeOptions.find((x) => x == pageSize); - if (!isNumeric(page) || !filteredPageSize) { - const filteredPage = isNumeric(page) ? page : this.currentPage; - filteredPageSize = (filteredPageSize) ? filteredPageSize : this.pageSize; - this.router.navigate([], { - queryParams: { - pageId: this.id, - page: filteredPage, - pageSize: filteredPageSize, - sortDirection: sortDirection, - sortField: sortField - } - }); - } else { - // (+) converts string to a number - if (this.currentPage !== +page) { - this.currentPage = +page; - this.pageChange.emit(this.currentPage); - } + private setFields() { + // (+) converts string to a number + const page = this.currentQueryParams.page; + if (this.currentPage !== +page) { + this.setPage(+page); + } - if (this.pageSize !== +pageSize) { - this.pageSize = +pageSize; - this.pageSizeChange.emit(this.pageSize); - } + const pageSize = this.currentQueryParams.pageSize; + if (this.pageSize !== +pageSize) { + this.setPageSize(+pageSize); + } - if (this.sortDirection !== +sortDirection) { - this.sortDirection = +sortDirection; - this.sortDirectionChange.emit(this.sortDirection); - } + const sortDirection = this.currentQueryParams.sortDirection; + if (this.sortDirection !== +sortDirection) { + this.setSortDirection(+sortDirection); + } - if (this.sortField !== sortField) { - this.sortField = sortField; - this.sortFieldChange.emit(this.sortField); - } - this.cdRef.detectChanges(); + const sortField = this.currentQueryParams.sortField; + if (this.sortField !== sortField) { + this.setSortField(sortField); + } + this.cdRef.detectChanges(); + } + + /** + * Method to validate the current page value + * + * @param page + * The page number to validate + * @returns returns valid page value + */ + private validatePage(page: any): number { + let result = this.currentPage; + if (isNumeric(page)) { + result = +page; } + return result; } /** - * Ensure options passed contains the required properties. + * Method to validate the current page size value + * + * @param page size + * The page size to validate + * @returns returns valid page size value + */ + private validatePageSize(pageSize: any): number { + const filteredPageSize = this.pageSizeOptions.find((x) => x === +pageSize); + let result = this.pageSize; + if (filteredPageSize) { + result = +pageSize; + } + return result; + } + + /** + * Method to ensure options passed contains the required properties. * * @param paginateOptions * The paginate options object. @@ -391,11 +456,35 @@ export class PaginationComponent implements OnChanges, OnDestroy, OnInit { } } + /** + * Method to check if none of the query params necessary for pagination are filled out. + * + * @param paginateOptions + * The paginate options object. + */ + private isEmptyPaginationParams(paginateOptions): boolean { + const properties = ['id', 'currentPage', 'pageSize', 'pageSizeOptions']; + const missing = properties.filter((prop) => { + return !(prop in paginateOptions); + }); + + return properties.length === missing.length; + } + + /** + * Property to check whether the current pagination object has multiple pages + * @returns true if there are multiple pages, else returns false + */ get hasMultiplePages(): boolean { return this.collectionSize > this.pageSize; } + /** + * Property to check whether the current pagination should show a bottom pages + * @returns true if a bottom pages should be shown, else returns false + */ get shouldShowBottomPager(): boolean { return this.hasMultiplePages || !this.hidePagerWhenSinglePage } + } diff --git a/src/app/shared/search-form/search-form.component.html b/src/app/shared/search-form/search-form.component.html new file mode 100644 index 0000000000000000000000000000000000000000..dfdc20024a0f42e7bd9398ae97bc966f2f1ad439 --- /dev/null +++ b/src/app/shared/search-form/search-form.component.html @@ -0,0 +1,16 @@ +<form #form="ngForm" (ngSubmit)="onSubmit(form.value)" class="row"> +<div *ngIf="isNotEmpty(scopes | async)" class="col-12 col-sm-3"> + <select [(ngModel)]="selectedId" name="scope" class="form-control" aria-label="Search scope" [compareWith]="byId"> + <option value>{{'search.form.search_dspace' | translate}}</option> + <option *ngFor="let scopeOption of scopes | async" [value]="scopeOption.id">{{scopeOption?.name ? scopeOption.name : 'search.form.search_dspace' | translate}}</option> + </select> +</div> + <div [ngClass]="{'col-sm-9': isNotEmpty(scopes | async)}" class="col-12"> + <div class="form-group input-group"> + <input type="text" [(ngModel)]="query" name="query" class="form-control" aria-label="Search input"> + <span class="input-group-btn"> + <button type="submit" class="search-button btn btn-secondary">{{ ('search.form.search' | translate) }}</button> + </span> + </div> + </div> +</form> diff --git a/src/app/shared/search-form/search-form.component.scss b/src/app/shared/search-form/search-form.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..d5811186e782c710b4c7c5377fbd7172ffa7425c --- /dev/null +++ b/src/app/shared/search-form/search-form.component.scss @@ -0,0 +1,7 @@ +@import '../../../styles/variables.scss'; + +// temporary fix for bootstrap 4 beta btn color issue +.btn-secondary { + background-color: $input-bg; + color: $input-color; +} diff --git a/src/app/shared/search-form/search-form.component.ts b/src/app/shared/search-form/search-form.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa019e61d19fb4b65d868c724dd08b3a66711702 --- /dev/null +++ b/src/app/shared/search-form/search-form.component.ts @@ -0,0 +1,83 @@ +import { Component, Input, OnDestroy, OnInit } from '@angular/core'; +import { DSpaceObject } from '../../core/shared/dspace-object.model'; +import { Router } from '@angular/router'; +import { isNotEmpty, hasValue, isEmpty } from '../empty.util'; +import { Observable } from 'rxjs/Observable'; + +/** + * This component renders a simple item page. + * The route parameter 'id' is used to request the item it represents. + * All fields of the item that should be displayed, are defined in its template. + */ + +@Component({ + selector: 'ds-search-form', + styleUrls: ['./search-form.component.scss'], + templateUrl: './search-form.component.html', +}) +export class SearchFormComponent implements OnInit, OnDestroy { + @Input() query: string; + selectedId = ''; + // Optional existing search parameters + @Input() currentParams: {}; + @Input() scopes: Observable<DSpaceObject[]>; + scopeOptions: string[] = []; + sub; + + @Input() + set scope(dso: DSpaceObject) { + if (hasValue(dso)) { + this.selectedId = dso.id; + } + } + + ngOnInit(): void { + if (this.scopes) { + this.sub = + this.scopes + .filter((scopes: DSpaceObject[]) => isEmpty(scopes)) + .subscribe((scopes: DSpaceObject[]) => { + this.scopeOptions = scopes + .map((scope: DSpaceObject) => scope.id); + } + ); + } + } + + constructor(private router: Router) { + } + + onSubmit(data: any) { + this.updateSearch(data); + } + + updateSearch(data: any) { + this.router.navigate(['/search'], { + queryParams: Object.assign({}, this.currentParams, + { + query: data.query, + scope: data.scope || undefined, + page: data.page || 1 + } + ) + }) + ; + } + + isNotEmpty(object: any) { + return isNotEmpty(object); + } + + byId(id1: string, id2: string) { + if (isEmpty(id1) && isEmpty(id2)) { + return true; + } + return id1 === id2; + } + + ngOnDestroy(): void { + if (this.sub) { + this.sub.unsubscribe(); + } + } +} diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 8d0c2a8437db68eb3b67e175277f1732a2525f1d..7f0975ea6e33bfe3bcf4c39b25722134025401aa 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -24,6 +24,9 @@ import { ItemListElementComponent } from '../object-list/item-list-element/item- import { CommunityListElementComponent } from '../object-list/community-list-element/community-list-element.component'; import { CollectionListElementComponent } from '../object-list/collection-list-element/collection-list-element.component'; import { TruncatePipe } from './utils/truncate.pipe'; +import { WrapperListElementComponent } from '../object-list/wrapper-list-element/wrapper-list-element.component'; +import { SearchResultListElementComponent } from '../object-list/search-result-list-element/search-result-list-element.component'; +import { SearchFormComponent } from './search-form/search-form.component'; const MODULES = [ // Do NOT include UniversalModule, HttpModule, or JsonpModule here @@ -53,9 +56,16 @@ const COMPONENTS = [ ComcolPageLogoComponent, ObjectListComponent, ObjectListElementComponent, + WrapperListElementComponent, + SearchFormComponent +]; + +const ENTRY_COMPONENTS = [ + // put shared entry components (components that are created dynamically) here ItemListElementComponent, CollectionListElementComponent, - CommunityListElementComponent + CommunityListElementComponent, + SearchResultListElementComponent ]; @NgModule({ @@ -64,12 +74,16 @@ const COMPONENTS = [ ], declarations: [ ...PIPES, - ...COMPONENTS + ...COMPONENTS, + ...ENTRY_COMPONENTS ], exports: [ ...MODULES, ...PIPES, ...COMPONENTS + ], + entryComponents: [ + ...ENTRY_COMPONENTS ] }) export class SharedModule { diff --git a/src/routes.ts b/src/routes.ts index bbb4b72ec14733faa96ac68f0162cf4bdf8d7897..f051b1619858d2f7f661048bfb51152fed02859e 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -3,5 +3,6 @@ export const ROUTES: string[] = [ 'items/:id', 'collections/:id', 'communities/:id', + 'search', '**' ]; diff --git a/src/styles/_bootstrap_variables.scss b/src/styles/_bootstrap_variables.scss new file mode 100644 index 0000000000000000000000000000000000000000..f3d13120cc9dad23a4bb4bc0d4610f334c01e2e5 --- /dev/null +++ b/src/styles/_bootstrap_variables.scss @@ -0,0 +1,31 @@ +/* Fonts */ +$fa-font-path: "../assets/fonts"; +/* Images */ +$image-path: "../assets/images"; +/* Colors */ +$gray-base: #000 !default; +$gray-900: lighten($gray-base, 13.5%) !default; // #222 +$gray-800: lighten($gray-base, 26.6%) !default; // #444 +$gray-700: lighten($gray-base, 46.6%) !default; // #777 +$gray-600: lighten($gray-base, 73.3%) !default; // #bbb +$gray-100: lighten($gray-base, 93.5%) !default; // #eee +/* Reassign color vars to semantic color scheme */ +$blue: #2B4E72 !default; +$green: #94BA65 !default; +$cyan: #2790B0 !default; +$yellow: #EBBB54 !default; +$red: #CF4444 !default; + +$theme-colors: ( + primary: $blue, + secondary: $gray-700, + success: $green, + info: $cyan, + warning: $yellow, + danger: $red, + light: $gray-100, + dark: $blue +) !default; +/* Fonts */ +$link-color: map-get($theme-colors, info) !default; + diff --git a/src/styles/_custom_variables.scss b/src/styles/_custom_variables.scss new file mode 100644 index 0000000000000000000000000000000000000000..d73193dc7cef7cb4f667806a601c04aa6af031cd --- /dev/null +++ b/src/styles/_custom_variables.scss @@ -0,0 +1 @@ +$content-spacing: $spacer * 1.5; \ No newline at end of file diff --git a/src/styles/_mixins.scss b/src/styles/_mixins.scss index a946a48642b70cbfab5c3e2e8d3c91de556a7d7e..73aa27eccc0b771388e213b306a306f3e0e1c211 100644 --- a/src/styles/_mixins.scss +++ b/src/styles/_mixins.scss @@ -1,12 +1,4 @@ -@import './variables.scss'; -@import '../../node_modules/bootstrap/scss/variables'; -@import '../../node_modules/bootstrap/scss/mixins'; -@mixin negate-gutters($gutters: $grid-gutter-widths) { - @each $breakpoint in map-keys($gutters){ - @include media-breakpoint-up($breakpoint) { - $gutter: map-get($gutters, $breakpoint); - margin-right: ($gutter / -2); - margin-left: ($gutter / -2); - } - } -} +@import '../../node_modules/bootstrap/scss/functions.scss'; +@import '../../node_modules/bootstrap/scss/mixins.scss'; + +/* Custom mixins go here */ diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss new file mode 100644 index 0000000000000000000000000000000000000000..812a19d4183eace1e7f20170be16f55ccce34aea --- /dev/null +++ b/src/styles/_variables.scss @@ -0,0 +1,5 @@ +@import 'bootstrap_variables.scss'; +@import '../../node_modules/font-awesome/scss/variables.scss'; +@import '../../node_modules/bootstrap/scss/functions.scss'; +@import '../../node_modules/bootstrap/scss/variables.scss'; +@import 'custom_variables.scss'; \ No newline at end of file diff --git a/src/styles/variables.scss b/src/styles/variables.scss deleted file mode 100644 index b733f9231bd622b7d8aee690a7ce4b1b4aaa92ef..0000000000000000000000000000000000000000 --- a/src/styles/variables.scss +++ /dev/null @@ -1,20 +0,0 @@ -/* Fonts */ -$fa-font-path: "../assets/fonts"; -/* Images */ -$image-path: "../assets/images"; -/* Colors */ -$gray-base: #000 !default; -$gray-darker: lighten($gray-base, 13.5%) !default; // #222 -$gray-dark: lighten($gray-base, 26.6%) !default; // #444 -$gray: lighten($gray-base, 46.6%) !default; // #777 -$gray-light: lighten($gray-base, 73.3%) !default; // #bbb -$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee -/* Reassign color vars to semantic color scheme */ -$brand-primary: #2B4E72 !default; -$brand-success: #94BA65 !default; -$brand-info: #2790B0 !default; -$brand-warning: #EBBB54 !default; -$brand-danger: #CF4444 !default; -$brand-inverse: $brand-primary !default; -/* Fonts */ -$link-color: $brand-info !default; diff --git a/tslint.json b/tslint.json index f971919ec67dc74b2d5c2c134d6c7e7205ce103f..8b685b80261423257f08ab448df83bc2fa92eeb4 100644 --- a/tslint.json +++ b/tslint.json @@ -53,7 +53,7 @@ "no-debugger": true, "no-duplicate-variable": true, "no-empty": true, - "no-empty-interface": true, + "no-empty-interface": false, "no-eval": true, "no-forward-ref": true, "no-inferrable-types": [ diff --git a/yarn.lock b/yarn.lock index 1d905563d3d1930cdb2f7804e15f57c3cee29c7d..34e29e19eaac47264317e000636f3cae61c5ec54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -137,26 +137,13 @@ version "0.1.1" resolved "https://registry.yarnpkg.com/@types/deep-freeze/-/deep-freeze-0.1.1.tgz#0e1ee6ceee06f51baeb663deec0bb7780bd72827" -"@types/express-serve-static-core@*": - version "4.0.49" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.49.tgz#3438d68d26e39db934ba941f18e3862a1beeb722" - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@4.0.53": +"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.0.53": version "4.0.53" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.53.tgz#1723a35d1447f2c55e13c8721eab3448e42f4d82" dependencies: "@types/node" "*" -"@types/express@*": - version "4.0.36" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.36.tgz#14eb47de7ecb10319f0a2fb1cf971aa8680758c2" - dependencies: - "@types/express-serve-static-core" "*" - "@types/serve-static" "*" - -"@types/express@4.0.37": +"@types/express@*", "@types/express@4.0.37": version "4.0.37" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.37.tgz#625ac3765169676e01897ca47011c26375784971" dependencies: @@ -169,25 +156,32 @@ dependencies: "@types/node" "*" +"@types/glob@*": + version "5.0.32" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.32.tgz#aec5cfe987c72f099fdb1184452986aa506d5e8f" + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/hammerjs@2.0.35": version "2.0.35" resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.35.tgz#7b7c950c7d54593e23bffc8d2b4feba9866a7277" "@types/handlebars@^4.0.31": - version "4.0.32" - resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.32.tgz#637e8d945a9354aab47df7125005490fe9f8e592" + version "4.0.36" + resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.36.tgz#ff57c77fa1ab6713bb446534ddc4d979707a3a79" "@types/highlight.js@^9.1.8": - version "9.1.9" - resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.1.9.tgz#ed6336955eaf233b75eb7923b9b1f373d045ef01" + version "9.1.10" + resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.1.10.tgz#b621f809cd9573b80992b90cffc5788208e3069c" "@types/jasmine@2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.6.0.tgz#997b41a27752b4850af2683bc4a8d8222c25bd02" "@types/lodash@^4.14.37": - version "4.14.50" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.50.tgz#2227da4d65fafe249bccd59c7b9396e27674c8f7" + version "4.14.76" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.76.tgz#87874f766774d54e89589697340be9496fb8bf70" "@types/marked@0.0.28": version "0.0.28" @@ -197,29 +191,29 @@ version "0.0.31" resolved "https://registry.yarnpkg.com/@types/memory-cache/-/memory-cache-0.0.31.tgz#d7b6cd1cedd79ace23fca75ba4aaacbc9906fc17" -"@types/mime@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.1.tgz#2cf42972d0931c1060c7d5fa6627fce6bd876f2f" - -"@types/mime@2.0.0": +"@types/mime@*", "@types/mime@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b" +"@types/minimatch@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.1.tgz#b683eb60be358304ef146f5775db4c0e3696a550" + "@types/minimatch@^2.0.29": version "2.0.29" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a" "@types/node@*": - version "8.0.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.14.tgz#4a19dc6bb61d16c01cbadc7b30ac23518fff176b" + version "8.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.31.tgz#d9af61093cf4bfc9f066ca34de0175012cfb0ce9" "@types/node@8.0.26": version "8.0.26" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.26.tgz#4d58be925306fd22b1141085535a0268b8beb189" "@types/node@^6.0.46": - version "6.0.52" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.52.tgz#1ac3a99b42320f9e463482f25af4c2359473aaa6" + version "6.0.88" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.88.tgz#f618f11a944f6a18d92b5c472028728a3e3d4b66" "@types/q@^0.0.32": version "0.0.32" @@ -229,14 +223,7 @@ version "2.53.42" resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.42.tgz#74cb77fb6052edaff2a8984ddafd88d419f25cac" -"@types/serve-static@*": - version "1.7.31" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.7.31.tgz#15456de8d98d6b4cff31be6c6af7492ae63f521a" - dependencies: - "@types/express-serve-static-core" "*" - "@types/mime" "*" - -"@types/serve-static@1.7.32": +"@types/serve-static@*", "@types/serve-static@1.7.32": version "1.7.32" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.7.32.tgz#0f6732e4dab0813771dd8fc8fe14940f34728b4c" dependencies: @@ -244,9 +231,10 @@ "@types/mime" "*" "@types/shelljs@^0.7.0": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.2.tgz#c2bdb3fe80cd7a3da08750ca898ae44c589671f3" + version "0.7.4" + resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.4.tgz#137b5f31306eaff4de120ffe5b9d74b297809cfc" dependencies: + "@types/glob" "*" "@types/node" "*" "@types/source-map@0.5.1": @@ -257,18 +245,22 @@ version "1.6.29" resolved "https://registry.yarnpkg.com/@types/webfontloader/-/webfontloader-1.6.29.tgz#c6b5f6eb8ca31d0aae6b02b6c1300349dd93ea8e" -abbrev@1, abbrev@1.0.x: +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" -accepts@1.3.3, accepts@~1.3.3: +accepts@1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" dependencies: mime-types "~2.1.11" negotiator "0.6.1" -accepts@~1.3.4: +accepts@~1.3.3, accepts@~1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" dependencies: @@ -286,8 +278,8 @@ acorn@^4.0.1, acorn@^4.0.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" acorn@^5.0.0, acorn@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" + version "5.1.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" adjust-sourcemap-loader@^1.1.0: version "1.1.0" @@ -314,8 +306,8 @@ after@0.8.2: resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" agent-base@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e" + version "2.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" dependencies: extend "~3.0.0" semver "~5.0.1" @@ -324,7 +316,7 @@ ajv-keywords@2.1.0, ajv-keywords@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" -ajv@5.2.3: +ajv@5.2.3, ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5: version "5.2.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" dependencies: @@ -340,15 +332,6 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.5: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - json-schema-traverse "^0.3.0" - json-stable-stringify "^1.0.1" - align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -362,8 +345,8 @@ alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" amdefine@>=0.0.4, amdefine@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.0.tgz#fd17474700cb5cc9c2b709f0be9d23ce3c198c33" + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" angular2-template-loader@0.6.2: version "0.6.2" @@ -393,13 +376,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750" - dependencies: - color-convert "^1.0.0" - -ansi-styles@^3.2.0: +ansi-styles@^3.1.0, ansi-styles@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -410,19 +387,19 @@ any-promise@^0.1.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27" anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" dependencies: - arrify "^1.0.0" micromatch "^2.1.5" + normalize-path "^2.0.0" app-root-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" archiver-utils@^1.3.0: version "1.3.0" @@ -473,8 +450,8 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" arr-flatten@^1.0.1, arr-flatten@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" arr-union@^3.1.0: version "3.1.0" @@ -589,7 +566,7 @@ async@2.0.1: dependencies: lodash "^4.8.0" -async@2.4.1, async@^2.0.0, async@^2.1.2, async@^2.1.5: +async@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" dependencies: @@ -599,6 +576,12 @@ async@^0.9.0, async@~0.9.0: version "0.9.2" resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" +async@^2.0.0, async@^2.1.2, async@^2.1.5: + version "2.5.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" + dependencies: + lodash "^4.14.0" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -611,7 +594,7 @@ atob@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" -autoprefixer@7.1.4: +autoprefixer@7.1.4, autoprefixer@^7.1.1: version "7.1.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.4.tgz#960847dbaa4016bc8e8e52ec891cbf8f1257a748" dependencies: @@ -633,17 +616,6 @@ autoprefixer@^6.3.1: postcss "^5.2.16" postcss-value-parser "^3.2.3" -autoprefixer@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.2.tgz#fbeaf07d48fd878e0682bf7cbeeade728adb2b18" - dependencies: - browserslist "^2.1.5" - caniuse-lite "^1.0.30000697" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^6.0.6" - postcss-value-parser "^3.2.3" - awesome-typescript-loader@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-3.2.3.tgz#aa2119b7c808a031e2b28945b031450a8975367f" @@ -661,29 +633,33 @@ aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" -aws4@^1.2.1: +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.11.0, babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" +babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: - chalk "^1.1.0" + chalk "^1.1.3" esutils "^2.0.2" - js-tokens "^3.0.0" + js-tokens "^3.0.2" babel-generator@^6.18.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" dependencies: babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" detect-indent "^4.0.0" jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" + lodash "^4.17.4" + source-map "^0.5.6" trim-right "^1.0.1" babel-messages@^6.23.0: @@ -692,49 +668,45 @@ babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-runtime@^6.22.0, babel-runtime@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" +babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: core-js "^2.4.0" - regenerator-runtime "^0.10.0" + regenerator-runtime "^0.11.0" babel-template@^6.16.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.25.0" - babel-types "^6.25.0" - babylon "^6.17.2" - lodash "^4.2.0" + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" +babel-traverse@^6.18.0, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: - babel-code-frame "^6.22.0" + babel-code-frame "^6.26.0" babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.25.0" - babylon "^6.17.2" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" -babel-types@^6.18.0, babel-types@^6.25.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" +babel-types@^6.18.0, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: - babel-runtime "^6.22.0" + babel-runtime "^6.26.0" esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.17.2: - version "6.17.4" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" + lodash "^4.17.4" + to-fast-properties "^1.0.3" babylon@^6.18.0: version "6.18.0" @@ -748,7 +720,7 @@ balanced-match@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a" -balanced-match@^0.4.1, balanced-match@^0.4.2: +balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -761,25 +733,23 @@ base64-arraybuffer@0.1.5: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" base64-js@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" base@^0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.1.tgz#b36a7f11113853a342a15691d98e2dcc8a6cc270" + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" dependencies: - arr-union "^3.1.0" - cache-base "^0.8.4" - class-utils "^0.3.4" + cache-base "^1.0.1" + class-utils "^0.3.5" component-emitter "^1.2.1" - define-property "^0.2.5" - isobject "^2.1.0" - lazy-cache "^2.0.1" - mixin-deep "^1.1.3" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" pascalcase "^0.1.1" basic-auth@~2.0.0: @@ -809,12 +779,12 @@ better-assert@~1.0.0: callsite "1.0.0" big.js@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + version "1.10.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" bl@^1.0.0: version "1.2.1" @@ -847,10 +817,10 @@ bluebird@^3.3.0, bluebird@^3.4.7: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" -body-parser@1.18.2: +body-parser@1.18.2, body-parser@^1.16.1: version "1.18.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" dependencies: @@ -865,21 +835,6 @@ body-parser@1.18.2: raw-body "2.3.2" type-is "~1.6.15" -body-parser@^1.16.1: - version "1.17.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.2.tgz#f8892abc8f9e627d42aedafbca66bf5ab99104ee" - dependencies: - bytes "2.4.0" - content-type "~1.0.2" - debug "2.6.7" - depd "~1.1.0" - http-errors "~1.6.1" - iconv-lite "0.4.15" - on-finished "~2.3.0" - qs "6.4.0" - raw-body "~2.2.0" - type-is "~1.6.15" - bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" @@ -901,12 +856,21 @@ boom@2.x.x: dependencies: hoek "2.x.x" -bootstrap@4.0.0-alpha.6: - version "4.0.0-alpha.6" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.0.0-alpha.6.tgz#4f54dd33ac0deac3b28407bc2df7ec608869c9c8" +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" dependencies: - jquery ">=1.9.1" - tether "^1.4.0" + hoek "4.x.x" + +bootstrap@v4.0.0-beta: + version "4.0.0-beta" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.0.0-beta.tgz#dc5928175d2e71310bc668cf9e05a907211b72a6" boxen@^1.0.0: version "1.2.1" @@ -921,10 +885,10 @@ boxen@^1.0.0: widest-line "^1.0.0" brace-expansion@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" dependencies: - balanced-match "^0.4.1" + balanced-match "^1.0.0" concat-map "0.0.1" braces@^0.1.2: @@ -968,14 +932,15 @@ browser-resolve@^1.11.0: resolve "1.1.7" browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" + version "1.0.8" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.8.tgz#c8fa3b1b7585bb7ba77c5560b60996ddec6d5309" dependencies: - buffer-xor "^1.0.2" + buffer-xor "^1.0.3" cipher-base "^1.0.0" create-hash "^1.1.0" - evp_bytestokey "^1.0.0" + evp_bytestokey "^1.0.3" inherits "^2.0.1" + safe-buffer "^5.0.1" browserify-cipher@^1.0.0: version "1.0.0" @@ -1025,14 +990,7 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^2.0.0, browserslist@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.5.tgz#e882550df3d1cd6d481c1a3e0038f2baf13a4711" - dependencies: - caniuse-lite "^1.0.30000684" - electron-to-chromium "^1.3.14" - -browserslist@^2.4.0: +browserslist@^2.0.0, browserslist@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" dependencies: @@ -1048,14 +1006,10 @@ buffer-es6@^4.9.1: resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404" buffer-indexof@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.0.tgz#f54f647c4f4e25228baa656a2e57e43d5f270982" - -buffer-shims@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" -buffer-xor@^1.0.2: +buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -1075,32 +1029,23 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" -bytes@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" - -bytes@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" -cache-base@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-0.8.5.tgz#60ceb3504021eceec7011fd3384b7f4e95729bfa" +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" dependencies: - collection-visit "^0.2.1" + collection-visit "^1.0.0" component-emitter "^1.2.1" - get-value "^2.0.5" - has-value "^0.3.1" - isobject "^3.0.0" - lazy-cache "^2.0.1" - set-value "^0.4.2" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" to-object-path "^0.3.0" - union-value "^0.2.3" - unset-value "^0.1.1" + union-value "^1.0.0" + unset-value "^1.0.0" callsite@1.0.0: version "1.0.0" @@ -1155,20 +1100,16 @@ caniuse-api@^2.0.0: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000699" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000699.tgz#5af491ab1c777561a32b43fe253d6a7071ccf979" + version "1.0.30000740" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000740.tgz#03fcaaa176e3ed075895f72d46c1a12149bbeac9" caniuse-lite@1.0.30000697: version "1.0.30000697" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000697.tgz#125fb00604b63fbb188db96a667ce2922dcd6cdd" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000684, caniuse-lite@^1.0.30000697: - version "1.0.30000699" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000699.tgz#2a187b737edaa9ebedbbb56edcb53e994eceda0c" - -caniuse-lite@^1.0.30000718, caniuse-lite@^1.0.30000726: - version "1.0.30000738" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000738.tgz#1820c3c9adb9a117e311a5bdca1d25bc34288eba" +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000718, caniuse-lite@^1.0.30000726: + version "1.0.30000740" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000740.tgz#f2c4c04d6564eb812e61006841700ad557f6f973" capture-stack-trace@^1.0.0: version "1.0.0" @@ -1195,7 +1136,7 @@ cerialize@0.1.16: dependencies: typescript "^2.1.6" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1205,15 +1146,7 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chalk@^2.1.0: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: @@ -1241,18 +1174,19 @@ chokidar@^1.4.1, chokidar@^1.6.0, chokidar@^1.6.1, chokidar@^1.7.0: fsevents "^1.0.0" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" dependencies: inherits "^2.0.1" + safe-buffer "^5.0.1" clap@^1.0.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.0.tgz#59c90fe3e137104746ff19469a27a634ff68c857" + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" dependencies: chalk "^1.1.3" -class-utils@^0.3.4: +class-utils@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.5.tgz#17e793103750f9627b2176ea34cfd1b565903c80" dependencies: @@ -1263,8 +1197,8 @@ class-utils@^0.3.4: static-extend "^0.1.1" clean-css@4.1.x: - version "4.1.6" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.6.tgz#5a47beb526994cb4f7bf36188a55ed3b45528f0b" + version "4.1.9" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" dependencies: source-map "0.5.x" @@ -1279,8 +1213,8 @@ cli-cursor@^2.1.0: restore-cursor "^2.0.0" cli-spinners@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a" + version "1.0.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.1.tgz#2675321c100f195b02877ac499e9911fa34b9783" cliui@^2.1.0: version "2.1.0" @@ -1340,23 +1274,22 @@ codelyzer@3.2.0: source-map "^0.5.6" sprintf-js "^1.0.3" -collection-visit@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-0.2.3.tgz#2f62483caecc95f083b9a454a3ee9e6139ad7957" +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" dependencies: - lazy-cache "^2.0.1" - map-visit "^0.1.5" - object-visit "^0.3.4" + map-visit "^1.0.0" + object-visit "^1.0.0" -color-convert@^1.0.0, color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0: +color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" dependencies: color-name "^1.1.1" color-name@^1.0.0, color-name@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" color-string@^0.3.0: version "0.3.0" @@ -1414,11 +1347,9 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@2.9.x, commander@^2.9.0, commander@~2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" +commander@2.11.x, commander@^2.9.0, commander@~2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" complex.js@2.0.4: version "2.0.4" @@ -1449,12 +1380,6 @@ compress-commons@^1.2.0: normalize-path "^2.0.0" readable-stream "^2.0.0" -compressible@~2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" - dependencies: - mime-db ">= 1.27.0 < 2" - compressible@~2.0.11: version "2.0.11" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" @@ -1468,7 +1393,7 @@ compression-webpack-plugin@1.0.0: async "2.4.1" webpack-sources "^1.0.1" -compression@1.7.1: +compression@1.7.1, compression@^1.5.2: version "1.7.1" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db" dependencies: @@ -1480,29 +1405,17 @@ compression@1.7.1: safe-buffer "5.1.1" vary "~1.1.2" -compression@^1.5.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.0.tgz#030c9f198f1643a057d776a738e922da4373012d" - dependencies: - accepts "~1.3.3" - bytes "2.5.0" - compressible "~2.0.10" - debug "2.6.8" - on-headers "~1.0.1" - safe-buffer "5.1.1" - vary "~1.1.1" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" +concat-stream@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" configstore@^3.0.0: version "3.1.1" @@ -1520,13 +1433,13 @@ connect-history-api-fallback@^1.3.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" connect@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.2.tgz#694e8d20681bfe490282c8ab886be98f09f42fe7" + version "3.6.5" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.5.tgz#fb8dde7ba0763877d0ec9df9dac0b4b40e72c7da" dependencies: - debug "2.6.7" - finalhandler "1.0.3" - parseurl "~1.3.1" - utils-merge "1.0.0" + debug "2.6.9" + finalhandler "1.0.6" + parseurl "~1.3.2" + utils-merge "1.0.1" console-browserify@^1.1.0: version "1.1.0" @@ -1546,11 +1459,7 @@ content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" -content-type@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" - -content-type@~1.0.4: +content-type@~1.0.2, content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" @@ -1594,15 +1503,11 @@ copy-webpack-plugin@4.0.1: minimatch "^3.0.0" node-dir "^0.1.10" -core-js@2.5.1: +core-js@2.5.1, core-js@^2.2.0, core-js@^2.4.0: version "2.5.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" -core-js@^2.2.0, core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1611,8 +1516,8 @@ corser@~2.0.0: resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.1.3.tgz#952771eb0dddc1cb3fa2f6fbe51a522e93b3ee0a" + version "2.2.2" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" dependencies: is-directory "^0.3.1" js-yaml "^3.4.3" @@ -1629,10 +1534,14 @@ crc32-stream@^2.0.0: crc "^3.4.4" readable-stream "^2.0.0" -crc@3.4.4, crc@^3.4.4: +crc@3.4.4: version "3.4.4" resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" +crc@^3.4.4: + version "3.5.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.5.0.tgz#98b8ba7d489665ba3979f59b21381374101a1964" + create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -1646,7 +1555,7 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" -create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" dependencies: @@ -1673,13 +1582,6 @@ cross-spawn@^3.0.0: lru-cache "^4.0.1" which "^1.2.9" -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -1698,9 +1600,15 @@ cryptiles@2.x.x: dependencies: boom "2.x.x" +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + crypto-browserify@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" + version "3.11.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" @@ -1870,13 +1778,9 @@ dateformat@^1.0.11, dateformat@^1.0.6: get-stdin "^4.0.1" meow "^3.3.0" -debug@0.7.4, debug@~0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - -debug@2, debug@2.6.8, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" @@ -1892,17 +1796,9 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" - dependencies: - ms "2.0.0" - -debug@2.6.9, debug@^2.6.6: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" +debug@~0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" @@ -1933,10 +1829,10 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" default-gateway@^2.2.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.5.0.tgz#78e24dbd2e1df7490c2b8050515b8e816bfa7da5" + version "2.6.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.6.0.tgz#acf02d181caef4c464b6c37fe25daacd6189b903" dependencies: - execa "^0.7.0" + execa "^0.8.0" ip-regex "^2.1.0" define-properties@^1.1.2: @@ -1993,10 +1889,6 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@1.1.0, depd@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" - depd@1.1.1, depd@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" @@ -2031,8 +1923,8 @@ di@^0.0.1: resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" diff@^3.1.0, diff@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.0.tgz#056695150d7aa93237ca7e378ac3b1682b7963b9" + version "3.3.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" diffie-hellman@^5.0.0: version "5.0.2" @@ -2047,8 +1939,8 @@ dns-equal@^1.0.0: resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" dns-packet@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.1.1.tgz#2369d45038af045f3898e6fa56862aed3f40296c" + version "1.2.2" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a" dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -2152,16 +2044,12 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" ejs@^2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88" + version "2.5.7" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a" -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.14: - version "1.3.15" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz#08397934891cbcfaebbd18b82a95b5a481138369" - -electron-to-chromium@^1.3.18: - version "1.3.22" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.22.tgz#4322d52c151406e3eaef74ad02676883e8416418" +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.18: + version "1.3.24" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz#9b7b88bb05ceb9fa016a177833cc2dde388f21b6" elliptic@^6.0.0: version "6.4.0" @@ -2184,10 +2072,10 @@ encodeurl@~1.0.1: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" end-of-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" dependencies: - once "~1.3.0" + once "^1.4.0" engine.io-client@1.8.3: version "1.8.3" @@ -2228,7 +2116,7 @@ engine.io@1.8.3: engine.io-parser "1.3.2" ws "1.1.2" -enhanced-resolve@3.3.0, enhanced-resolve@^3.1.0: +enhanced-resolve@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3" dependencies: @@ -2237,7 +2125,7 @@ enhanced-resolve@3.3.0, enhanced-resolve@^3.1.0: object-assign "^4.0.1" tapable "^0.2.5" -enhanced-resolve@^3.4.0: +enhanced-resolve@^3.1.0, enhanced-resolve@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" dependencies: @@ -2266,16 +2154,7 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.4.3: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.0" - is-callable "^1.1.3" - is-regex "^1.0.3" - -es-abstract@^1.7.0: +es-abstract@^1.4.3, es-abstract@^1.7.0: version "1.8.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" dependencies: @@ -2294,8 +2173,8 @@ es-to-primitive@^1.1.1: is-symbol "^1.0.1" es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.24" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.24.tgz#a55877c9924bc0c8d9bd3c2cbe17495ac1709b14" + version "0.10.30" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939" dependencies: es6-iterator "2" es6-symbol "~3.1" @@ -2385,6 +2264,10 @@ esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + esrecurse@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" @@ -2416,11 +2299,7 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -etag@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" - -etag@~1.8.1: +etag@~1.8.0, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -2457,27 +2336,28 @@ eventsource@0.1.6: dependencies: original ">=0.0.5" -evp_bytestokey@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" dependencies: - create-hash "^1.1.1" + md5.js "^1.3.4" + safe-buffer "^5.1.1" -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" + cross-spawn "^5.0.1" + get-stream "^3.0.0" is-stream "^1.1.0" npm-run-path "^2.0.0" p-finally "^1.0.0" signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -2505,7 +2385,7 @@ expand-brackets@^0.1.4: dependencies: is-posix-bracket "^0.1.0" -expand-brackets@^2.0.1: +expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" dependencies: @@ -2585,37 +2465,39 @@ express@4.15.5: vary "~1.1.1" express@^4.13.3, express@^4.15.2: - version "4.15.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662" + version "4.16.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.0.tgz#b519638e4eb58e7178c81b498ef22f798cb2e255" dependencies: - accepts "~1.3.3" + accepts "~1.3.4" array-flatten "1.1.1" + body-parser "1.18.2" content-disposition "0.5.2" - content-type "~1.0.2" + content-type "~1.0.4" cookie "0.3.1" cookie-signature "1.0.6" - debug "2.6.7" - depd "~1.1.0" + debug "2.6.9" + depd "~1.1.1" encodeurl "~1.0.1" escape-html "~1.0.3" - etag "~1.8.0" - finalhandler "~1.0.3" - fresh "0.5.0" + etag "~1.8.1" + finalhandler "1.1.0" + fresh "0.5.2" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" - parseurl "~1.3.1" + parseurl "~1.3.2" path-to-regexp "0.1.7" - proxy-addr "~1.1.4" - qs "6.4.0" + proxy-addr "~2.0.2" + qs "6.5.1" range-parser "~1.2.0" - send "0.15.3" - serve-static "1.12.3" - setprototypeof "1.0.3" + safe-buffer "5.1.1" + send "0.16.0" + serve-static "1.13.0" + setprototypeof "1.1.0" statuses "~1.3.1" type-is "~1.6.15" - utils-merge "1.0.0" - vary "~1.1.1" + utils-merge "1.0.1" + vary "~1.1.2" extend-shallow@^2.0.1: version "2.0.1" @@ -2623,7 +2505,7 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend@3, extend@^3.0.0, extend@~3.0.0: +extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -2633,31 +2515,31 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -extglob@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-1.1.0.tgz#0678b4e2ce45c0e4e50f5e5eafb1b0dab5b4e424" +extglob@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.2.tgz#3290f46208db1b2e8eb8be0c94ed9e6ad80edbe2" dependencies: array-unique "^0.3.2" - define-property "^0.2.5" - expand-brackets "^2.0.1" + define-property "^1.0.0" + expand-brackets "^2.1.4" extend-shallow "^2.0.1" - fragment-cache "^0.2.0" + fragment-cache "^0.2.1" regex-not "^1.0.0" snapdragon "^0.8.1" - to-regex "^2.1.0" + to-regex "^3.0.1" -extract-zip@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" +extract-zip@~1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.5.tgz#99a06735b6ea20ea9b705d779acffcc87cff0440" dependencies: - concat-stream "1.5.0" - debug "0.7.4" + concat-stream "1.6.0" + debug "2.2.0" mkdirp "0.5.0" yauzl "2.4.1" -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" fancy-log@^1.1.0: version "1.3.0" @@ -2723,21 +2605,21 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -finalhandler@1.0.3, finalhandler@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89" +finalhandler@1.0.6, finalhandler@~1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f" dependencies: - debug "2.6.7" + debug "2.6.9" encodeurl "~1.0.1" escape-html "~1.0.3" on-finished "~2.3.0" - parseurl "~1.3.1" + parseurl "~1.3.2" statuses "~1.3.1" unpipe "~1.0.0" -finalhandler@~1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f" +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" dependencies: debug "2.6.9" encodeurl "~1.0.1" @@ -2804,24 +2686,28 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" -forwarded@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" +form-data@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +forwarded@~0.1.0, forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" fraction.js@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.2.tgz#0eae896626f334b1bde763371347a83b5575d7f0" -fragment-cache@^0.2.0, fragment-cache@^0.2.1: +fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" dependencies: map-cache "^0.2.2" -fresh@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" - fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -2875,11 +2761,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" dependencies: nan "^2.3.0" - node-pre-gyp "^0.6.29" + node-pre-gyp "^0.6.36" fstream-ignore@^1.0.5: version "1.0.5" @@ -2898,11 +2784,7 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" - -function-bind@^1.1.1: +function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2947,18 +2829,11 @@ get-stdin@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" -get-value@^2.0.3, get-value@^2.0.5, get-value@^2.0.6: +get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -3012,7 +2887,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.0.0: +globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3038,11 +2913,11 @@ globby@^6.1.0: pinkie-promise "^2.0.0" globule@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f" + version "1.2.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" dependencies: glob "~7.1.1" - lodash "~4.16.4" + lodash "~4.17.4" minimatch "~3.0.2" glogg@^1.0.0: @@ -3052,8 +2927,8 @@ glogg@^1.0.0: sparkles "^1.0.0" gonzales-pe@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.0.3.tgz#36148e18e267184fbfdc929af28f29ad9fbf9746" + version "4.2.2" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.2.tgz#f50a8c17842f13a9007909b7cb32188266e4d74c" dependencies: minimist "1.1.x" @@ -3077,10 +2952,6 @@ graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - gulp-util@3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" @@ -3134,6 +3005,10 @@ har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + har-validator@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" @@ -3150,6 +3025,13 @@ har-validator@~4.2.1: ajv "^4.9.1" har-schema "^1.0.5" +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -3192,10 +3074,25 @@ has-value@^0.3.1: has-values "^0.1.4" isobject "^2.0.0" +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" @@ -3208,11 +3105,19 @@ hash-base@^2.0.0: dependencies: inherits "^2.0.1" -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" dependencies: inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" hasha@~2.2.0: version "2.2.0" @@ -3221,7 +3126,7 @@ hasha@~2.2.0: is-stream "^1.0.1" pinkie-promise "^2.0.0" -hawk@~3.1.3: +hawk@3.1.3, hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" dependencies: @@ -3230,13 +3135,22 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + he@1.1.x, he@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" highlight.js@^9.0.0: - version "9.11.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.11.0.tgz#47f98c7399918700db2caf230ded12cec41a84ae" + version "9.12.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" hmac-drbg@^1.0.0: version "1.0.1" @@ -3250,6 +3164,10 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +hoek@4.x.x: + version "4.2.0" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" @@ -3257,8 +3175,8 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" hpack.js@^2.1.6: version "2.1.6" @@ -3278,17 +3196,17 @@ html-entities@^1.2.0: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" html-minifier@^3.2.3: - version "3.5.2" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.2.tgz#d73bc3ff448942408818ce609bf3fb0ea7ef4eb7" + version "3.5.5" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.5.tgz#3bdc9427e638bbe3dbde96c0eb988b044f02739e" dependencies: camel-case "3.0.x" clean-css "4.1.x" - commander "2.9.x" + commander "2.11.x" he "1.1.x" ncname "1.0.x" param-case "2.1.x" relateurl "0.2.x" - uglify-js "3.0.x" + uglify-js "3.1.x" html-webpack-plugin@2.30.1: version "2.30.1" @@ -3323,14 +3241,9 @@ http-errors@1.6.2, http-errors@~1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" -http-errors@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" - dependencies: - depd "1.1.0" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" +http-parser-js@>=0.4.0: + version "0.4.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.8.tgz#763f75c4b771a0bb44653b07070bff6ca7bc5561" http-proxy-middleware@~0.17.4: version "0.17.4" @@ -3369,6 +3282,14 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" @@ -3385,10 +3306,6 @@ https@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https/-/https-1.0.0.tgz#3c37c7ae1a8eeb966904a2ad1e975a194b7ed3a4" -iconv-lite@0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -3451,7 +3368,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -3471,10 +3388,10 @@ internal-ip@^2.0.2: ipaddr.js "^1.5.2" interpret@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + version "1.0.4" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" -invariant@^2.2.0: +invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: @@ -3492,15 +3409,11 @@ ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" -ipaddr.js@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" - ipaddr.js@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" -ipaddr.js@^1.5.2: +ipaddr.js@1.5.2, ipaddr.js@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" @@ -3553,30 +3466,28 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" is-descriptor@^0.1.0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.5.tgz#e3fb8b4ab65f3a37373388e18b401d78c58cbea7" + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" - kind-of "^3.0.2" - lazy-cache "^2.0.2" + kind-of "^5.0.0" is-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.0.tgz#d6ec686f238f6b02f23757abe12cf6b2ea2790f9" + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.1.tgz#2c6023599bde2de9d5d2c8b9a9d94082036b6ef2" dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" - kind-of "^3.0.2" - lazy-cache "^2.0.2" + kind-of "^5.0.0" is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" is-equal-shallow@^0.1.3: version "0.1.3" @@ -3592,7 +3503,7 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -3629,8 +3540,8 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" is-my-json-valid@^2.12.4: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" @@ -3645,7 +3556,7 @@ is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" -is-number@^2.0.2, is-number@^2.1.0: +is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" dependencies: @@ -3687,11 +3598,11 @@ is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" -is-plain-object@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.3.tgz#c15bf3e4b66b62d72efaf2925848663ecbc619b6" +is-plain-object@^2.0.1, is-plain-object@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" dependencies: - isobject "^3.0.0" + isobject "^3.0.1" is-posix-bracket@^0.1.0: version "0.1.1" @@ -3709,7 +3620,7 @@ is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" -is-regex@^1.0.3, is-regex@^1.0.4: +is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" dependencies: @@ -3765,13 +3676,13 @@ isnumeric@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/isnumeric/-/isnumeric-0.2.0.tgz#a2347ba360de19e33d0ffd590fddf7755cbf2e64" -isobject@^2.0.0, isobject@^2.1.0: +isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" dependencies: isarray "1.0.0" -isobject@^3.0.0: +isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" @@ -3823,14 +3734,10 @@ istanbul@0.4.5, istanbul@^0.4.0, istanbul@^0.4.3: which "^1.1.1" wordwrap "^1.0.0" -jasmine-core@2.8.0: +jasmine-core@2.8.0, jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" -jasmine-core@~2.6.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.6.4.tgz#dec926cd0a9fa287fb6db5c755fa487e74cecac5" - jasmine-marbles@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/jasmine-marbles/-/jasmine-marbles-0.1.0.tgz#c9ecdc64e20b6cf55b49a10201a5be33907dadcc" @@ -3844,12 +3751,12 @@ jasmine-spec-reporter@4.2.1: colors "1.1.2" jasmine@^2.5.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.6.0.tgz#6b22e70883e8e589d456346153b4d206ddbe217f" + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" dependencies: exit "^0.1.2" glob "^7.0.6" - jasmine-core "~2.6.0" + jasmine-core "~2.8.0" jasminewd2@^2.1.0: version "2.1.0" @@ -3859,25 +3766,22 @@ javascript-natural-sort@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - -jquery@>=1.9.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" - js-base64@^2.1.8, js-base64@^2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + version "2.3.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@3.x, js-yaml@^3.4.3: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" -js-yaml@3.x, js-yaml@^3.4.3, js-yaml@~3.7.0: +js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: @@ -3900,14 +3804,10 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" -json-loader@0.5.7: +json-loader@0.5.7, json-loader@^0.5.4: version "0.5.7" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" -json-loader@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" - json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -3959,13 +3859,13 @@ jsonschema@1.2.0: resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.0.tgz#d6ebaf70798db7b3a20c544f6c9ef9319b077de2" jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" dependencies: assert-plus "1.0.0" - extsprintf "1.0.2" + extsprintf "1.3.0" json-schema "0.2.3" - verror "1.3.6" + verror "1.10.0" karma-chrome-launcher@2.2.0: version "2.2.0" @@ -4104,6 +4004,10 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" +kind-of@^5.0.0, kind-of@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.0.2.tgz#f57bec933d9a2209ffa96c5c08343607b7035fda" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -4124,7 +4028,7 @@ lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" -lazy-cache@^2.0.1, lazy-cache@^2.0.2: +lazy-cache@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" dependencies: @@ -4370,14 +4274,10 @@ lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.8.0: +lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.8.0, lodash@~4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@~4.16.4: - version "4.16.6" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" - log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -4431,11 +4331,11 @@ lru-cache@2.2.x: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" + pseudomap "^1.0.2" + yallist "^2.1.2" macaddress@^0.2.8: version "0.2.8" @@ -4475,12 +4375,11 @@ map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" -map-visit@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-0.1.5.tgz#dbe43927ce5525b80dfc1573a44d68c51f26816b" +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" dependencies: - lazy-cache "^2.0.1" - object-visit "^0.3.4" + object-visit "^1.0.0" marked@^0.3.5: version "0.3.6" @@ -4491,8 +4390,8 @@ math-expression-evaluator@^1.2.14: resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" mathjs@^3.11.5: - version "3.14.2" - resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-3.14.2.tgz#bb79b7dc878b7f586ce408ab067a9a42db2e7a2d" + version "3.16.3" + resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-3.16.3.tgz#74f21d553d4cb1a82b480541ae1fcb0bd0f6f0aa" dependencies: complex.js "2.0.4" decimal.js "7.2.3" @@ -4502,6 +4401,13 @@ mathjs@^3.11.5: tiny-emitter "2.0.0" typed-function "0.10.5" +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" @@ -4579,45 +4485,35 @@ micromatch@^2.1.5, micromatch@^2.3.11: regex-cache "^0.4.2" micromatch@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.0.4.tgz#1543f1d04813447ac852001c5f5a933401786d1d" + version "3.1.0" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2" dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" braces "^2.2.2" define-property "^1.0.0" extend-shallow "^2.0.1" - extglob "^1.1.0" + extglob "^2.0.2" fragment-cache "^0.2.1" - kind-of "^4.0.0" - nanomatch "^1.2.0" - object.pick "^1.2.0" + kind-of "^5.0.2" + nanomatch "^1.2.1" + object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" miller-rabin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" dependencies: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" - "mime-db@>= 1.29.0 < 2", mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" - dependencies: - mime-db "~1.27.0" - -mime-types@~2.1.16: +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" dependencies: @@ -4627,9 +4523,9 @@ mime@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" -mime@^1.2.11, mime@^1.3.4: - version "1.3.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" +mime@1.4.1, mime@^1.2.11, mime@^1.3.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" mimic-fn@^1.0.0: version "1.1.0" @@ -4649,7 +4545,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8, minimist@~0.0.1: +minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -4661,7 +4557,11 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mixin-deep@^1.1.3: +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +mixin-deep@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.2.0.tgz#d02b8c6f8b6d4b8f5982d3fd009c4919851c3fe2" dependencies: @@ -4727,22 +4627,21 @@ multipipe@^0.1.2: duplexer2 "0.0.2" nan@^2.3.0, nan@^2.3.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" -nanomatch@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.0.tgz#76fdb3d4ae7617e37719e7a4047b840857c0cb1c" +nanomatch@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.3.tgz#15e1c02dcf990c27a283b08c0ba1801ce249a6a6" dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" define-property "^1.0.0" extend-shallow "^2.0.1" fragment-cache "^0.2.1" - is-extglob "^2.1.1" is-odd "^1.0.0" - kind-of "^4.0.0" - object.pick "^1.2.0" + kind-of "^5.0.2" + object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" @@ -4768,14 +4667,14 @@ ngx-pagination@3.0.1: resolved "https://registry.yarnpkg.com/ngx-pagination/-/ngx-pagination-3.0.1.tgz#5a8000e40c0424d9c41c9d6d592562e1547abf24" no-case@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" dependencies: lower-case "^1.1.1" node-dir@^0.1.10: - version "0.1.16" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4" + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" dependencies: minimatch "^3.0.2" @@ -4784,8 +4683,8 @@ node-forge@0.6.33: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" node-gyp@^3.3.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.1.tgz#19561067ff185464aded478212681f47fd578cbc" + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" dependencies: fstream "^1.0.0" glob "^7.0.3" @@ -4829,15 +4728,16 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" -node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" +node-pre-gyp@^0.6.36: + version "0.6.38" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d" dependencies: + hawk "3.1.3" mkdirp "^0.5.1" nopt "^4.0.1" npmlog "^4.0.2" rc "^1.1.7" - request "^2.81.0" + request "2.81.0" rimraf "^2.6.1" semver "^5.3.0" tar "^2.2.1" @@ -4901,8 +4801,8 @@ nopt@~1.0.10: abbrev "1" normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -4949,8 +4849,8 @@ npm-run-path@^2.0.0: path-key "^2.0.0" "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -4975,7 +4875,7 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.1: +oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -5011,11 +4911,11 @@ object-path@^0.9.2: version "0.9.2" resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" -object-visit@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-0.3.4.tgz#ae15cf86f0b2fdd551771636448452c54c3da829" +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" dependencies: - isobject "^2.0.0" + isobject "^3.0.0" object.omit@^2.0.0: version "2.0.1" @@ -5024,11 +4924,11 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -object.pick@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.2.0.tgz#b5392bee9782da6d9fb7d6afaf539779f1234c2b" +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" dependencies: - isobject "^2.1.0" + isobject "^3.0.1" obuf@^1.0.0, obuf@^1.1.1: version "1.1.1" @@ -5044,18 +4944,12 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@1.x, once@^1.3.0, once@^1.3.3: +once@1.x, once@^1.3.0, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - onecolor@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.4.tgz#75a46f80da6c7aaa5b4daae17a47198bd9652494" @@ -5128,14 +5022,14 @@ os-locale@^1.4.0: lcid "^1.0.0" os-locale@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" dependencies: - execa "^0.5.0" + execa "^0.7.0" lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -5161,8 +5055,8 @@ p-locate@^2.0.0: p-limit "^1.1.0" p-map@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a" + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" package-json@^4.0.0: version "4.0.1" @@ -5236,11 +5130,7 @@ parseuri@0.0.5: dependencies: better-assert "~1.0.0" -parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - -parseurl@~1.3.2: +parseurl@~1.3.1, parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -5303,8 +5193,8 @@ pause-stream@0.0.11: through "~2.3" pbkdf2@^3.0.3: - version "3.0.12" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.12.tgz#be36785c5067ea48d806ff923288c5f750b6b8a2" + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -5329,17 +5219,21 @@ performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + phantomjs-prebuilt@^2.1.7: - version "2.1.14" - resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0" + version "2.1.15" + resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.15.tgz#20f86e82d3349c505917527745b7a411e08b3903" dependencies: es6-promise "~4.0.3" - extract-zip "~1.5.0" + extract-zip "~1.6.5" fs-extra "~1.0.0" hasha "~2.2.0" kew "~0.7.0" progress "~1.1.8" - request "~2.79.0" + request "~2.81.0" request-progress "~2.0.1" which "~1.2.10" @@ -5771,10 +5665,10 @@ postcss-modules-values@^1.1.0: postcss "^6.0.1" postcss-nesting@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-4.0.1.tgz#8fc2ce40cbfcfab7ee24e7b68fb6ebe84b641469" + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-4.2.1.tgz#0483bce338b3f0828ced90ff530b29b98b00300d" dependencies: - postcss "^6.0.1" + postcss "^6.0.11" postcss-normalize-charset@^1.1.0: version "1.1.1" @@ -5934,7 +5828,7 @@ postcss-zindex@^2.0.1: postcss "^5.0.4" uniqs "^2.0.0" -postcss@6.0.12, postcss@^6.0.11, postcss@^6.0.8: +postcss@6.0.12, postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.2, postcss@^6.0.3, postcss@^6.0.5, postcss@^6.0.6, postcss@^6.0.8: version "6.0.12" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.12.tgz#6b0155089d2d212f7bd6a0cecd4c58c007403535" dependencies: @@ -5951,14 +5845,6 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.2, postcss@^6.0.3, postcss@^6.0.5, postcss@^6.0.6: - version "6.0.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.8.tgz#89067a9ce8b11f8a84cbc5117efc30419a0857b3" - dependencies: - chalk "^2.0.1" - source-map "^0.5.6" - supports-color "^4.2.0" - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -6037,13 +5923,6 @@ protractor@5.1.2: webdriver-js-extender "^1.0.0" webdriver-manager "^12.0.6" -proxy-addr@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" - dependencies: - forwarded "~0.1.0" - ipaddr.js "1.3.0" - proxy-addr@~1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" @@ -6051,6 +5930,13 @@ proxy-addr@~1.1.5: forwarded "~0.1.0" ipaddr.js "1.4.0" +proxy-addr@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.5.2" + prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" @@ -6061,7 +5947,7 @@ ps-tree@^1.1.0: dependencies: event-stream "~3.3.0" -pseudomap@^1.0.1: +pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -6083,23 +5969,23 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -q@1.4.1, q@^1.1.2, q@^1.4.1: +q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" +q@^1.1.2, q@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" -qs@6.4.0, qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - qs@6.5.0: version "6.5.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" -qs@6.5.1: +qs@6.5.1, qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -6111,6 +5997,10 @@ qs@~6.3.0: version "6.3.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + query-string@^4.1.0: version "4.3.4" resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" @@ -6139,15 +6029,17 @@ random-bytes@~1.0.0: resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" + is-number "^3.0.0" + kind-of "^4.0.0" randombytes@^2.0.0, randombytes@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + dependencies: + safe-buffer "^5.1.0" range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: version "1.2.0" @@ -6162,14 +6054,6 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" -raw-body@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" - dependencies: - bytes "2.4.0" - iconv-lite "0.4.15" - unpipe "1.0.0" - raw-loader@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" @@ -6228,16 +6112,16 @@ readable-stream@1.0, readable-stream@~1.0.2: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.6, readable-stream@^2.2.9: - version "2.2.9" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: - buffer-shims "~1.0.0" core-util-is "~1.0.0" - inherits "~2.0.1" + inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~1.0.6" - string_decoder "~1.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" util-deprecate "~1.0.1" readable-stream@~1.1.9: @@ -6308,23 +6192,18 @@ reflect-metadata@0.1.10, reflect-metadata@^0.1.2: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a" regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" -regenerator-runtime@^0.10.0: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" dependencies: is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -regex-not@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-0.1.2.tgz#bc7f1c4944b1188353d07deeb912b94e0ade25db" regex-not@^1.0.0: version "1.0.0" @@ -6333,8 +6212,8 @@ regex-not@^1.0.0: extend-shallow "^2.0.1" regex-parser@^2.2.1: - version "2.2.7" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.7.tgz#bd090e09181849acc45457e765f7be2a63f50ef1" + version "2.2.8" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.8.tgz#da4c0cda5a828559094168930f455f532b6ffbac" regexpu-core@^1.0.0: version "1.0.0" @@ -6393,8 +6272,8 @@ remap-istanbul@^0.9.0: through2 "2.0.1" remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" renderkid@^2.0.1: version "2.0.1" @@ -6434,18 +6313,45 @@ request-progress@~2.0.1: dependencies: throttleit "^1.0.0" -request@2, request@^2.78.0, request@^2.79.0, request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" +request@2, request@^2.78.0, request@^2.79.0: + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + +request@2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" dependencies: aws-sign2 "~0.6.0" aws4 "^1.2.1" - caseless "~0.12.0" + caseless "~0.11.0" combined-stream "~1.0.5" extend "~3.0.0" forever-agent "~0.6.1" form-data "~2.1.1" - har-validator "~4.2.1" + har-validator "~2.0.6" hawk "~3.1.3" http-signature "~1.1.0" is-typedarray "~1.0.0" @@ -6453,26 +6359,24 @@ request@2, request@^2.78.0, request@^2.79.0, request@^2.81.0: json-stringify-safe "~5.0.1" mime-types "~2.1.7" oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" + qs "~6.3.0" stringstream "~0.0.4" tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" + tunnel-agent "~0.4.1" uuid "^3.0.0" -request@2.79.0, request@~2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" +request@2.81.0, request@~2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: aws-sign2 "~0.6.0" aws4 "^1.2.1" - caseless "~0.11.0" + caseless "~0.12.0" combined-stream "~1.0.5" extend "~3.0.0" forever-agent "~0.6.1" form-data "~2.1.1" - har-validator "~2.0.6" + har-validator "~4.2.1" hawk "~3.1.3" http-signature "~1.1.0" is-typedarray "~1.0.0" @@ -6480,10 +6384,12 @@ request@2.79.0, request@~2.79.0: json-stringify-safe "~5.0.1" mime-types "~2.1.7" oauth-sign "~0.8.1" - qs "~6.3.0" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" stringstream "~0.0.4" tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" + tunnel-agent "^0.6.0" uuid "^3.0.0" require-directory@^2.1.1: @@ -6524,13 +6430,7 @@ resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.3.2, resolve@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" - dependencies: - path-parse "^1.0.5" - -resolve@^1.4.0: +resolve@^1.1.6, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" dependencies: @@ -6568,13 +6468,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -rimraf@2.6.2: +rimraf@2, rimraf@2.6.2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -6647,7 +6541,7 @@ rxjs@5.4.3: dependencies: symbol-observable "^1.0.1" -safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1: +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -6680,11 +6574,11 @@ saucelabs@~1.3.0: dependencies: https-proxy-agent "^1.0.0" -sax@0.6.x, sax@>=0.6.0: +sax@0.6.x: version "0.6.1" resolved "https://registry.yarnpkg.com/sax/-/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9" -sax@~1.2.1: +sax@>=0.6.0, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -6735,8 +6629,8 @@ selenium-webdriver@^2.53.2: xml2js "0.4.4" selfsigned@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.9.1.tgz#cdda4492d70d486570f87c65546023558e1dfa5a" + version "1.10.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" dependencies: node-forge "0.6.33" @@ -6752,11 +6646,7 @@ semver-dsl@^1.0.1: dependencies: semver "^5.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -semver@^5.1.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -6768,27 +6658,31 @@ semver@~5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" -send@0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309" +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +send@0.15.6: + version "0.15.6" + resolved "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz#20f23a9c925b762ab82705fe2f9db252ace47e34" dependencies: - debug "2.6.7" - depd "~1.1.0" + debug "2.6.9" + depd "~1.1.1" destroy "~1.0.4" encodeurl "~1.0.1" escape-html "~1.0.3" - etag "~1.8.0" - fresh "0.5.0" - http-errors "~1.6.1" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" mime "1.3.4" ms "2.0.0" on-finished "~2.3.0" range-parser "~1.2.0" statuses "~1.3.1" -send@0.15.6: - version "0.15.6" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz#20f23a9c925b762ab82705fe2f9db252ace47e34" +send@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.0.tgz#16338dbb9a2ede4ad57b48420ec3b82d8e80a57b" dependencies: debug "2.6.9" depd "~1.1.1" @@ -6798,32 +6692,23 @@ send@0.15.6: etag "~1.8.1" fresh "0.5.2" http-errors "~1.6.2" - mime "1.3.4" + mime "1.4.1" ms "2.0.0" on-finished "~2.3.0" range-parser "~1.2.0" statuses "~1.3.1" serve-index@^1.7.2: - version "1.9.0" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.0.tgz#d2b280fc560d616ee81b48bf0fa82abed2485ce7" + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" dependencies: - accepts "~1.3.3" + accepts "~1.3.4" batch "0.6.1" - debug "2.6.8" - escape-html "~1.0.3" - http-errors "~1.6.1" - mime-types "~2.1.15" - parseurl "~1.3.1" - -serve-static@1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.3.tgz#9f4ba19e2f3030c547f8af99107838ec38d5b1e2" - dependencies: - encodeurl "~1.0.1" + debug "2.6.9" escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.15.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" serve-static@1.12.6: version "1.12.6" @@ -6834,6 +6719,15 @@ serve-static@1.12.6: parseurl "~1.3.2" send "0.15.6" +serve-static@1.13.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.0.tgz#810c91db800e94ba287eae6b4e06caab9fdc16f1" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.0" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -6848,7 +6742,7 @@ set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" -set-value@^0.4.2, set-value@^0.4.3: +set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" dependencies: @@ -6857,6 +6751,15 @@ set-value@^0.4.2, set-value@^0.4.3: is-plain-object "^2.0.1" to-object-path "^0.3.0" +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -6865,11 +6768,16 @@ setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.8" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" + version "2.4.9" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" dependencies: inherits "^2.0.1" + safe-buffer "^5.0.1" shallow-clone@^0.1.2: version "0.1.2" @@ -6900,8 +6808,8 @@ shell-quote@^1.6.1: jsonify "~0.0.0" shelljs@^0.7.0: - version "0.7.7" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -6950,6 +6858,12 @@ sntp@1.x.x: dependencies: hoek "2.x.x" +sntp@2.x.x: + version "2.0.2" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b" + dependencies: + hoek "4.x.x" + socket.io-adapter@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" @@ -7049,8 +6963,8 @@ source-map-resolve@^0.5.0: urix "^0.1.0" source-map-support@^0.4.0, source-map-support@^0.4.15, source-map-support@^0.4.2, source-map-support@~0.4.0: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" dependencies: source-map "^0.5.6" @@ -7062,9 +6976,13 @@ source-map-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" -source-map@0.5.x, source-map@>=0.5.6, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" +source-map@0.5.x, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1, source-map@~0.5.3: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@>=0.5.6: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" source-map@^0.1.38, source-map@^0.1.41, source-map@~0.1.33: version "0.1.43" @@ -7078,10 +6996,6 @@ source-map@^0.4.2, source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - source-map@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" @@ -7135,19 +7049,29 @@ split-string@^2.1.0: dependencies: extend-shallow "^2.0.1" +split-string@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.0.2.tgz#6129bc92731716e5aa1fb73c333078f0b7c114c8" + dependencies: + extend-shallow "^2.0.1" + split@0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" dependencies: through "2" -sprintf-js@^1.0.3, sprintf-js@~1.0.2: +sprintf-js@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + +sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -7156,7 +7080,6 @@ sshpk@^1.7.0: optionalDependencies: bcrypt-pbkdf "^1.0.0" ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" jsbn "~0.1.0" tweetnacl "~0.14.0" @@ -7191,8 +7114,8 @@ stream-combiner@~0.0.4: duplexer "~0.1.1" stream-http@^2.3.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.1.tgz#546a51741ad5a6b07e9e31b0b10441a917df528a" + version "2.7.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -7220,8 +7143,8 @@ string-width@^1.0.1, string-width@^1.0.2: strip-ansi "^3.0.0" string-width@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.0.tgz#030664561fc146c9423ec7d978fe2457437fe6d0" + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -7238,13 +7161,13 @@ string_decoder@^0.10.25, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -string_decoder@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.1.tgz#62e200f039955a6810d8df0a33ffc0f013662d98" +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: - safe-buffer "^5.0.1" + safe-buffer "~5.1.0" -stringstream@~0.0.4: +stringstream@~0.0.4, stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -7300,13 +7223,7 @@ supports-color@^3.1.0, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^4.0.0, supports-color@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.0.tgz#ad986dc7eb2315d009b4d77c8169c2231a684037" - dependencies: - has-flag "^2.0.0" - -supports-color@^4.2.1, supports-color@^4.4.0: +supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" dependencies: @@ -7328,11 +7245,7 @@ symbol-observable@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" -tapable@^0.2.5: - version "0.2.6" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" - -tapable@^0.2.7: +tapable@^0.2.5, tapable@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" @@ -7372,21 +7285,24 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -tether@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/tether/-/tether-1.4.0.tgz#0f9fa171f75bf58485d8149e94799d7ae74d1c1a" - throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" -through2@2.0.1, through2@^2.0.0: +through2@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" dependencies: readable-stream "~2.0.0" xtend "~4.0.0" +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + through@2, through@X.X.X, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -7408,8 +7324,8 @@ timed-out@^4.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" timers-browserify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" + version "2.0.4" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" dependencies: setimmediate "^1.0.4" @@ -7427,12 +7343,18 @@ tmp@0.0.30: dependencies: os-tmpdir "~1.0.1" -tmp@0.0.31, tmp@0.0.x: +tmp@0.0.31: version "0.0.31" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" dependencies: os-tmpdir "~1.0.1" +tmp@0.0.x: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -7441,7 +7363,7 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -to-fast-properties@^1.0.1: +to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -7458,14 +7380,6 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" -to-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-2.1.0.tgz#e3ad3a40cfe119559a05aea43e4caefacc5e901d" - dependencies: - define-property "^0.2.5" - extend-shallow "^2.0.1" - regex-not "^0.1.1" - to-regex@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae" @@ -7481,8 +7395,8 @@ to-string-loader@1.1.5: loader-utils "^0.2.16" toposort@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" + version "1.0.4" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.4.tgz#a86107690cbee8cae43b349d2f60162500924dfc" touch@^3.1.0: version "3.1.0" @@ -7490,9 +7404,9 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" +tough-cookie@~2.3.0, tough-cookie@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" @@ -7563,8 +7477,8 @@ tslint@5.7.0: tsutils "^2.8.1" tsutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.8.2.tgz#2c1486ba431260845b0ac6f902afd9d708a8ea6a" + version "2.10.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.10.0.tgz#ae94511df2656eb06e4424056fba5c388887040c" dependencies: tslib "^1.7.1" @@ -7603,7 +7517,7 @@ typed-function@0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/typed-function/-/typed-function-0.10.5.tgz#2e0f18abd065219fab694a446a65c6d1981832c0" -typedarray@~0.0.5: +typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -7633,31 +7547,22 @@ typedoc@0.8.0: typedoc-default-themes "^0.5.0" typescript "2.4.1" -typescript@2.4.1, typescript@^2.1.6: +typescript@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.1.tgz#c3ccb16ddaa0b2314de031e7e6fee89e5ba346bc" -typescript@2.5.3: +typescript@2.5.3, typescript@^2.1.6: version "2.5.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" -uglify-js@3.0.x, uglify-js@^3.0.9: - version "3.0.24" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.24.tgz#ee93400ad9857fb7a1671778db83f6a23f033121" - dependencies: - commander "~2.9.0" - source-map "~0.5.1" - -uglify-js@^2.6: - version "2.8.27" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.27.tgz#47787f912b0f242e5b984343be8e35e95f694c9c" +uglify-js@3.1.x, uglify-js@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.2.tgz#b50bcf15a5fd9e9ed40afbcdef3b59d6891b291f" dependencies: + commander "~2.11.0" source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" -uglify-js@^2.8.29: +uglify-js@^2.6, uglify-js@^2.8.29: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: @@ -7707,9 +7612,9 @@ underscore.string@3.3.4: sprintf-js "^1.0.3" util-deprecate "^1.0.2" -union-value@^0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-0.2.4.tgz#7375152786679057e7b37aa676e83468fc0274f0" +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" dependencies: arr-union "^3.1.0" get-value "^2.0.6" @@ -7750,16 +7655,16 @@ units-css@^0.4.0: viewport-dimensions "^0.2.0" universalify@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" -unset-value@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-0.1.2.tgz#506810b867f27c2a5a6e9b04833631f6de58d310" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -7829,8 +7734,8 @@ use@^2.0.0: lazy-cache "^2.0.2" useragent@^2.1.12: - version "2.2.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.0.tgz#ef85f41903cfd05e2ba8c11ae61249c7a6bbf663" + version "2.2.1" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" dependencies: lru-cache "2.2.x" tmp "0.0.x" @@ -7865,9 +7770,9 @@ uuid@^2.0.1, uuid@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" +uuid@^3.0.0, uuid@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" v8flags@^3.0.0: version "3.0.1" @@ -7886,11 +7791,7 @@ vargs@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" -vary@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - -vary@~1.1.2: +vary@~1.1.1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -7898,11 +7799,13 @@ vendors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" dependencies: - extsprintf "1.0.2" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" viewport-dimensions@^0.2.0: version "0.2.0" @@ -7949,8 +7852,8 @@ wbuf@^1.1.0, wbuf@^1.7.2: minimalistic-assert "^1.0.0" wd@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/wd/-/wd-1.3.0.tgz#fdbdfbe192805b1cbd7943375642f06d990bccef" + version "1.4.1" + resolved "https://registry.yarnpkg.com/wd/-/wd-1.4.1.tgz#6b1ab39aab1728ee276c1a2b6d7321da68b16e8c" dependencies: archiver "1.3.0" async "2.0.1" @@ -8004,7 +7907,7 @@ webpack-bundle-analyzer@2.9.0: opener "^1.4.3" ws "^2.3.1" -webpack-dev-middleware@1.12.0: +webpack-dev-middleware@1.12.0, webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.11.0: version "1.12.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" dependencies: @@ -8014,15 +7917,6 @@ webpack-dev-middleware@1.12.0: range-parser "^1.0.3" time-stamp "^2.0.0" -webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz#09691d0973a30ad1f82ac73a12e2087f0a4754f9" - dependencies: - memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - webpack-dev-server@2.8.2: version "2.8.2" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.8.2.tgz#abd61f410778cc4c843d7cebbf41465b1ab7734c" @@ -8097,14 +7991,15 @@ webpack@3.6.0: yargs "^8.0.2" websocket-driver@>=0.5.1: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" dependencies: + http-parser-js ">=0.4.0" websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" + version "0.1.2" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d" whet.extend@~0.9.9: version "0.9.9" @@ -8118,7 +8013,13 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1, which@^1.1.1, which@^1.2.1, which@^1.2.4, which@^1.2.9, which@~1.2.10: +which@1, which@^1.1.1, which@^1.2.1, which@^1.2.4, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +which@~1.2.10: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: @@ -8171,13 +8072,20 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" -ws@1.1.2, ws@^1.0.1: +ws@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" dependencies: options ">=0.0.5" ultron "1.0.x" +ws@^1.0.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + ws@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80" @@ -8209,23 +8117,21 @@ xml2js@0.4.4: xmlbuilder ">=1.0.0" xml2js@^0.4.17: - version "0.4.17" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868" + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" dependencies: sax ">=0.6.0" - xmlbuilder "^4.1.0" + xmlbuilder "~9.0.1" -xmlbuilder@>=1.0.0, xmlbuilder@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5" - dependencies: - lodash "^4.0.0" +xmlbuilder@>=1.0.0, xmlbuilder@~9.0.1: + version "9.0.4" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f" xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" -xtend@^4.0.0, xtend@~4.0.0: +xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -8233,7 +8139,7 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yallist@^2.0.0: +yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"