diff --git a/package.json b/package.json index 59b5ce994..0a0e81887 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "ts-node": "^0.7.3", "tslint": "^4.2.0", "tslint-loader": "^3.3.0", - "typescript": "2.0.10", + "typescript": "^2.0.10", "url-loader": "^0.5.7", "webpack": "2.2.0-rc.3", "webpack-bundle-analyzer": "^2.2.0", diff --git a/src/demo-app/app/github-issues/DemosGithubIssues.ts b/src/demo-app/app/github-issues/DemosGithubIssues.ts index 5db11f220..1f1d7363b 100644 --- a/src/demo-app/app/github-issues/DemosGithubIssues.ts +++ b/src/demo-app/app/github-issues/DemosGithubIssues.ts @@ -5,8 +5,9 @@ import {Component} from '@angular/core'; template: ` - + + ` }) export class DemosGithubIssues { @@ -19,16 +20,18 @@ import {FlexLayoutModule} from "../../../lib"; // `gulp build:components` to import {DemoIssue5345} from "./issue.5345.demo"; import {DemoIssue9897} from "./issue.9897.demo"; -import {DemoIssue181} from './issue.181.demo'; import {DemoIssue135} from "./issue.135.demo"; +import {DemoIssue181} from './issue.181.demo'; +import {DemoIssue197} from './issue.197.demo'; @NgModule({ declarations: [ DemosGithubIssues, // used by the Router with the root app component DemoIssue5345, DemoIssue9897, + DemoIssue135, DemoIssue181, - DemoIssue135 + DemoIssue197 ], imports: [ CommonModule, diff --git a/src/demo-app/app/github-issues/issue.197.demo.ts b/src/demo-app/app/github-issues/issue.197.demo.ts new file mode 100644 index 000000000..3cf3fcdf3 --- /dev/null +++ b/src/demo-app/app/github-issues/issue.197.demo.ts @@ -0,0 +1,58 @@ +import {Component, OnDestroy} from '@angular/core'; +import {Subscription} from "rxjs/Subscription"; +import 'rxjs/add/operator/filter'; + +import {MediaChange} from "../../../lib/media-query/media-change"; +import {ObservableMedia} from "../../../lib/media-query/observable-media-service"; + +// [ngStyle="{'font-size.px': 10, color: 'rgb(0,0,0)', 'text-align':'left'}" +// style="font-size:10px; color:black; text-align:left;" +@Component({ + selector: 'demo-issue-197', + styleUrls: [ + '../demo-app/material2.css' + ], + template: ` + + + Issue #197 + Responsive Style directive should merge with default inline style: + +
+
+
+ <div fxFlexFill
+     style="font-size:10px; color:black; text-align:left;"
+     [style.md]="{'font-size': '16px', color: 'red'}"
+     ngStyle.lg="font-size: 24px; color : #00f;" >
+ </div> +
+
+
+
+ +
Active mediaQuery: {{ activeMediaQuery }}
+
+
+ ` +}) +export class DemoIssue197 implements OnDestroy { + public activeMediaQuery = ""; + + constructor(media$: ObservableMedia) { + this._watcher = media$.subscribe((change: MediaChange) => { + let value = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ""; + this.activeMediaQuery = value; + }); + } + + ngOnDestroy() { + this._watcher.unsubscribe(); + } + + private _watcher: Subscription; +} diff --git a/src/lib/flexbox/api/class.spec.ts b/src/lib/flexbox/api/class.spec.ts index 39ee519ae..647c4b49b 100644 --- a/src/lib/flexbox/api/class.spec.ts +++ b/src/lib/flexbox/api/class.spec.ts @@ -57,7 +57,7 @@ describe('class directive', () => { const selector = `class-${mq}`; it(`should apply '${selector}' with '${mq}' media query`, () => { fixture = createTestComponent(` -
+
`); activateMediaQuery(mq, true); @@ -67,7 +67,7 @@ describe('class directive', () => { it('should keep existing class selector', () => { fixture = createTestComponent(` -
+
`); expectNativeEl(fixture).toHaveCssClass('existing-class'); @@ -77,8 +77,8 @@ describe('class directive', () => { it('should allow more than one responsive breakpoint on one element', () => { fixture = createTestComponent(` -
+
`); activateMediaQuery('xs', true); @@ -91,9 +91,9 @@ describe('class directive', () => { it('should work with ngClass object notation', () => { fixture = createTestComponent(` -
-
- `); +
+
+ `); activateMediaQuery('xs', true); expectNativeEl(fixture, {hasXs1: true, hasXs2: false}).toHaveCssClass('xs-1'); expectNativeEl(fixture, {hasXs1: true, hasXs2: false}).not.toHaveCssClass('xs-2'); @@ -104,9 +104,9 @@ describe('class directive', () => { it('should work with ngClass array notation', () => { fixture = createTestComponent(` -
-
- `); +
+
+ `); activateMediaQuery('xs', true); expectNativeEl(fixture).toHaveCssClass('xs-1'); expectNativeEl(fixture).toHaveCssClass('xs-2'); diff --git a/src/lib/flexbox/api/class.ts b/src/lib/flexbox/api/class.ts index fcc5d69fc..0c72ee938 100644 --- a/src/lib/flexbox/api/class.ts +++ b/src/lib/flexbox/api/class.ts @@ -32,64 +32,41 @@ export type NgClassType = string | string[] | Set | {[klass: string]: an */ @Directive({ selector: ` - [class.xs], - [class.gt-xs], - [class.sm], - [class.gt-sm], - [class.md], - [class.gt-md], - [class.lg], - [class.gt-lg], - [class.xl] + [ngClass.xs], [class.xs], + [ngClass.gt-xs], [class.gt-xs], + [ngClass.sm], [class.sm], + [ngClass.gt-sm], [class.gt-sm], + [ngClass.md], [class.md], + [ngClass.gt-md], [class.gt-md], + [ngClass.lg], [class.lg], + [ngClass.gt-lg], [class.gt-lg] ` }) export class ClassDirective extends NgClass implements OnInit, OnChanges, OnDestroy { - @Input('class.xs') - set classXs(val: NgClassType) { - this._base.cacheInput('classXs', val); - } - - @Input('class.gt-xs') - set classGtXs(val: NgClassType) { - this._base.cacheInput('classGtXs', val); - }; - - @Input('class.sm') - set classSm(val: NgClassType) { - this._base.cacheInput('classSm', val); - }; - - @Input('class.gt-sm') - set classGtSm(val: NgClassType) { - this._base.cacheInput('classGtSm', val); - }; - - @Input('class.md') - set classMd(val: NgClassType) { - this._base.cacheInput('classMd', val); - }; - - @Input('class.gt-md') - set classGtMd(val: NgClassType) { - this._base.cacheInput('classGtMd', val); - }; - - @Input('class.lg') - set classLg(val: NgClassType) { - this._base.cacheInput('classLg', val); - }; - - @Input('class.gt-lg') - set classGtLg(val: NgClassType) { - this._base.cacheInput('classGtLg', val); - }; - - @Input('class.xl') - set classXl(val: NgClassType) { - this._base.cacheInput('classXl', val); - }; - + /* tslint:disable */ + @Input('ngClass.xs') set ngClassXs(val: NgClassType) { this._base.cacheInput('classXs', val, true); } + @Input('ngClass.gt-xs') set ngClassGtXs(val: NgClassType) { this._base.cacheInput('classGtXs', val, true); }; + @Input('ngClass.sm') set ngClassSm(val: NgClassType) { this._base.cacheInput('classSm', val, true); }; + @Input('ngClass.gt-sm') set ngClassGtSm(val: NgClassType) { this._base.cacheInput('classGtSm', val, true);} ; + @Input('ngClass.md') set ngClassMd(val: NgClassType) { this._base.cacheInput('classMd', val, true); }; + @Input('ngClass.gt-md') set ngClassGtMd(val: NgClassType) { this._base.cacheInput('classGtMd', val, true);}; + @Input('ngClass.lg') set ngClassLg(val: NgClassType) { this._base.cacheInput('classLg', val, true);}; + @Input('ngClass.gt-lg') set ngClassGtLg(val: NgClassType) { this._base.cacheInput('classGtLg', val, true); }; + @Input('ngClass.xl') set ngClassXl(val: NgClassType) { this._base.cacheInput('classXl', val, true); }; + + /** Deprecated selectors */ + @Input('class.xs') set classXs(val: NgClassType) { this._base.cacheInput('classXs', val, true); } + @Input('class.gt-xs') set classGtXs(val: NgClassType) { this._base.cacheInput('classGtXs', val, true); }; + @Input('class.sm') set classSm(val: NgClassType) { this._base.cacheInput('classSm', val, true); }; + @Input('class.gt-sm') set classGtSm(val: NgClassType) { this._base.cacheInput('classGtSm', val, true); }; + @Input('class.md') set classMd(val: NgClassType) { this._base.cacheInput('classMd', val, true);}; + @Input('class.gt-md') set classGtMd(val: NgClassType) { this._base.cacheInput('classGtMd', val, true);}; + @Input('class.lg') set classLg(val: NgClassType) { this._base.cacheInput('classLg', val, true); }; + @Input('class.gt-lg') set classGtLg(val: NgClassType) { this._base.cacheInput('classGtLg', val, true); }; + @Input('class.xl') set classXl(val: NgClassType) { this._base.cacheInput('classXl', val, true); }; + + /* tslint:enable */ constructor(private monitor: MediaMonitor, private _bpRegistry: BreakPointRegistry, _iterableDiffers: IterableDiffers, _keyValueDiffers: KeyValueDiffers, @@ -102,7 +79,9 @@ export class ClassDirective extends NgClass implements OnInit, OnChanges, OnDest * For @Input changes on the current mq activation property, see onMediaQueryChanges() */ ngOnChanges(changes: SimpleChanges) { - const changed = this._bpRegistry.items.some(it => `class${it.suffix}` in changes); + const changed = this._bpRegistry.items.some(it => { + return (`ngClass${it.suffix}` in changes) || (`class${it.suffix}` in changes); + }); if (changed || this._base.mqActivation) { this._updateStyle(); } diff --git a/src/lib/flexbox/api/style.spec.ts b/src/lib/flexbox/api/style.spec.ts index ea0818bb9..d3d5e09ad 100644 --- a/src/lib/flexbox/api/style.spec.ts +++ b/src/lib/flexbox/api/style.spec.ts @@ -5,24 +5,23 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { - Component, OnInit, Inject -} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { MockMatchMedia } from '../../media-query/mock/mock-match-media'; -import { MatchMedia } from '../../media-query/match-media'; -import { ObservableMedia } from '../../media-query/observable-media-service'; -import { BreakPointsProvider } from '../../media-query/breakpoints/break-points'; -import { BreakPointRegistry } from '../../media-query/breakpoints/break-point-registry'; - -import { customMatchers } from '../../utils/testing/custom-matchers'; +import {Component} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; + +import {MockMatchMedia} from '../../media-query/mock/mock-match-media'; +import {MatchMedia} from '../../media-query/match-media'; +import {BreakPointsProvider} from '../../media-query/breakpoints/break-points'; +import {BreakPointRegistry} from '../../media-query/breakpoints/break-point-registry'; + +import {LayoutDirective} from './layout'; +import {StyleDirective} from './style'; +import {MediaQueriesModule} from '../../media-query/_module'; + +import {customMatchers} from '../../utils/testing/custom-matchers'; import { makeCreateTestComponent, expectNativeEl } from '../../utils/testing/helpers'; -import { StyleDirective } from './style'; -import { MediaQueriesModule } from '../../media-query/_module'; describe('style directive', () => { let fixture: ComponentFixture; @@ -38,10 +37,10 @@ describe('style directive', () => { // Configure testbed to prepare services TestBed.configureTestingModule({ imports: [CommonModule, MediaQueriesModule], - declarations: [TestStyleComponent, StyleDirective], + declarations: [TestStyleComponent, LayoutDirective, StyleDirective], providers: [ BreakPointRegistry, BreakPointsProvider, - { provide: MatchMedia, useClass: MockMatchMedia } + {provide: MatchMedia, useClass: MockMatchMedia} ] }); }); @@ -53,62 +52,92 @@ describe('style directive', () => { }); [ - { mq: 'xs', styleStr: "{'font-size': '15px'}", styleObj: { 'font-size': '15px' } }, - { mq: 'sm', styleStr: "{'font-size': '16px'}", styleObj: { 'font-size': '16px' } }, - { mq: 'md', styleStr: "{'font-size': '17px'}", styleObj: { 'font-size': '17px' } }, - { mq: 'lg', styleStr: "{'font-size': '18px'}", styleObj: { 'font-size': '18px' } } + {mq: 'xs', styleStr: "{'font-size': '15px'}", styleObj: {'font-size': '15px'}}, + {mq: 'sm', styleStr: "{'font-size': '16px'}", styleObj: {'font-size': '16px'}}, + {mq: 'md', styleStr: "{'font-size': '17px'}", styleObj: {'font-size': '17px'}}, + {mq: 'lg', styleStr: "{'font-size': '18px'}", styleObj: {'font-size': '18px'}} ] - .forEach(testData => { - it(`should apply '${testData.styleStr}' with '${testData.mq}' media query`, () => { - fixture = createTestComponent(` -
-
- `); - activateMediaQuery(testData.mq, true); - expectNativeEl(fixture).toHaveCssStyle(testData.styleObj); - }); + .forEach(testData => { + it(`should apply '${testData.styleStr}' with '${testData.mq}' media query`, () => { + fixture = createTestComponent(` +
+
+ `); + activateMediaQuery(testData.mq); + expectNativeEl(fixture).toHaveCssStyle(testData.styleObj); }); + }); + + it('should merge with default inline styles', () => { + fixture = createTestComponent(` +
+
+ `); + expectNativeEl(fixture).toHaveCssStyle({color: 'blue'}); + activateMediaQuery('xs'); + expectNativeEl(fixture).toHaveCssStyle({color: 'blue', 'font-size': '15px'}); + }); - it('should override existing styles', () => { + it('should support raw-string notations', () => { fixture = createTestComponent(` -
-
- `); - expectNativeEl(fixture).toHaveCssStyle({ color: 'blue' }); - activateMediaQuery('xs', true); - expectNativeEl(fixture).toHaveCssStyle({ 'font-size': '15px' }); +
+
+ `); + expectNativeEl(fixture).toHaveCssStyle({color: 'blue'}); + activateMediaQuery('xs'); + expectNativeEl(fixture).toHaveCssStyle({ + 'color': 'blue', + 'font-size': '15px', + 'background-color': 'rgb(252, 41, 41)' + }); }); it('should allow more than one responsive breakpoint on one element', () => { fixture = createTestComponent(` -
-
- `); - activateMediaQuery('xs', true); - expectNativeEl(fixture).toHaveCssStyle({ 'font-size': '16px' }); - expectNativeEl(fixture).not.toHaveCssStyle({ 'font-size': '12px' }); - activateMediaQuery('md', true); - expectNativeEl(fixture).not.toHaveCssStyle({ 'font-size': '16px' }); - expectNativeEl(fixture).toHaveCssStyle({ 'font-size': '12px' }); +
+
+ `); + + fixture.detectChanges(); + + activateMediaQuery('xs'); + expectNativeEl(fixture).toHaveCssStyle({'display': 'flex'}); + expectNativeEl(fixture).toHaveCssStyle({'font-size': '16px'}); + expectNativeEl(fixture).not.toHaveCssStyle({'font-size': '12px'}); + + activateMediaQuery('md'); + expectNativeEl(fixture).not.toHaveCssStyle({'font-size': '16px'}); + expectNativeEl(fixture).toHaveCssStyle({'font-size': '12px'}); + + activateMediaQuery('lg'); + expectNativeEl(fixture).not.toHaveCssStyle({'font-size': '12px'}); + expectNativeEl(fixture).not.toHaveCssStyle({'font-size': '16px'}); + expectNativeEl(fixture).toHaveCssStyle({'font-size': '10px'}); // original is gone + expectNativeEl(fixture).toHaveCssStyle({'margin-left': '13px'}); // portion remains + }); it('should work with special ngStyle px notation', () => { fixture = createTestComponent(` -
-
- `); - activateMediaQuery('xs', true); - expectNativeEl(fixture).toHaveCssStyle({ 'font-size': '15px' }); +
+
+ `); + activateMediaQuery('xs'); + expectNativeEl(fixture).toHaveCssStyle({'font-size': '15px'}); }); it('should work with bound values', () => { fixture = createTestComponent(` -
-
- `); - activateMediaQuery('xs', true); - expectNativeEl(fixture, { fontSize: 19 }).toHaveCssStyle({ 'font-size': '19px' }); +
+
+ `); + activateMediaQuery('xs'); + expectNativeEl(fixture, {fontSize: 19}).toHaveCssStyle({'font-size': '19px'}); }); }); @@ -120,14 +149,8 @@ describe('style directive', () => { selector: 'test-style-api', template: `PlaceHolder Template HTML` }) -export class TestStyleComponent implements OnInit { +export class TestStyleComponent { fontSize: number; - - constructor( @Inject(ObservableMedia) private media) { - } - - ngOnInit() { - } } diff --git a/src/lib/flexbox/api/style.ts b/src/lib/flexbox/api/style.ts index b63d23dcf..4d771a938 100644 --- a/src/lib/flexbox/api/style.ts +++ b/src/lib/flexbox/api/style.ts @@ -11,10 +11,10 @@ import { Input, OnDestroy, OnInit, - Renderer, OnChanges, - SimpleChanges, - KeyValueDiffers + Renderer, + KeyValueDiffers, + SimpleChanges, SecurityContext } from '@angular/core'; import {NgStyle} from '@angular/common'; @@ -22,9 +22,15 @@ import {BaseFxDirectiveAdapter} from './base-adapter'; import {BreakPointRegistry} from './../../media-query/breakpoints/break-point-registry'; import {MediaChange} from '../../media-query/media-change'; import {MediaMonitor} from '../../media-query/media-monitor'; +import {extendObject} from '../../utils/object-extend'; +import {DomSanitizer} from '@angular/platform-browser'; -/** NgStyle allowed inputs **/ -export type NgStyleType = string | string[] | Set | {[klass: string]: any}; +import { + NgStyleRawList, + NgStyleType, + NgStyleSanitizer, + ngStyleUtils as _ +} from '../../utils/style-transforms'; /** * Directive to add responsive support for ngStyle. @@ -32,79 +38,72 @@ export type NgStyleType = string | string[] | Set | {[klass: string]: an */ @Directive({ selector: ` - [style.xs], - [style.gt-xs], - [style.sm], - [style.gt-sm], - [style.md], - [style.gt-md], - [style.lg], - [style.gt-lg], - [style.xl] + [ngStyle], + [ngStyle.xs], [style.xs], + [ngStyle.gt-xs], [style.gt-xs], + [ngStyle.sm], [style.sm], + [ngStyle.gt-sm], [style.gt-sm], + [ngStyle.md], [style.md], + [ngStyle.gt-md], [style.gt-md], + [ngStyle.lg], [style.lg], + [ngStyle.gt-lg], [style.gt-lg], + [ngStyle.xl], [style.xl] ` }) export class StyleDirective extends NgStyle implements OnInit, OnChanges, OnDestroy { - @Input('style.xs') - set styleXs(val: NgStyleType) { - this._base.cacheInput('styleXs', val, true); + @Input('ngStyle') + set styleBase(val: NgStyleType) { + this._base.cacheInput('style', val, true); + this.ngStyle = this._base.inputMap['style']; } - @Input('style.gt-xs') - set styleGtXs(val: NgStyleType) { - this._base.cacheInput('styleGtXs', val, true); - }; - - @Input('style.sm') - set styleSm(val: NgStyleType) { - this._base.cacheInput('styleSm', val, true); - }; - - @Input('style.gt-sm') - set styleGtSm(val: NgStyleType) { - this._base.cacheInput('styleGtSm', val, true); - }; - - @Input('style.md') - set styleMd(val: NgStyleType) { - this._base.cacheInput('styleMd', val, true); - }; - - @Input('style.gt-md') - set styleGtMd(val: NgStyleType) { - this._base.cacheInput('styleGtMd', val, true); - }; - - @Input('style.lg') - set styleLg(val: NgStyleType) { - this._base.cacheInput('styleLg', val, true); - }; - - @Input('style.gt-lg') - set styleGtLg(val: NgStyleType) { - this._base.cacheInput('styleGtLg', val, true); - }; - - @Input('style.xl') - set styleXl(val: NgStyleType) { - this._base.cacheInput('styleXl', val, true); - }; - + /* tslint:disable */ + @Input('ngStyle.xs') set ngStyleXs(val: NgStyleType) { this._base.cacheInput('styleXs', val, true); } + @Input('ngStyle.gt-xs') set ngStyleGtXs(val: NgStyleType) { this._base.cacheInput('styleGtXs', val, true); }; + @Input('ngStyle.sm') set ngStyleSm(val: NgStyleType) { this._base.cacheInput('styleSm', val, true); }; + @Input('ngStyle.gt-sm') set ngStyleGtSm(val: NgStyleType) { this._base.cacheInput('styleGtSm', val, true);} ; + @Input('ngStyle.md') set ngStyleMd(val: NgStyleType) { this._base.cacheInput('styleMd', val, true); }; + @Input('ngStyle.gt-md') set ngStyleGtMd(val: NgStyleType) { this._base.cacheInput('styleGtMd', val, true);}; + @Input('ngStyle.lg') set ngStyleLg(val: NgStyleType) { this._base.cacheInput('styleLg', val, true);}; + @Input('ngStyle.gt-lg') set ngStyleGtLg(val: NgStyleType) { this._base.cacheInput('styleGtLg', val, true); }; + @Input('ngStyle.xl') set ngStyleXl(val: NgStyleType) { this._base.cacheInput('styleXl', val, true); }; + + /** Deprecated selectors */ + @Input('style.xs') set styleXs(val: NgStyleType) { this._base.cacheInput('styleXs', val, true); } + @Input('style.gt-xs') set styleGtXs(val: NgStyleType) { this._base.cacheInput('styleGtXs', val, true); }; + @Input('style.sm') set styleSm(val: NgStyleType) { this._base.cacheInput('styleSm', val, true); }; + @Input('style.gt-sm') set styleGtSm(val: NgStyleType) { this._base.cacheInput('styleGtSm', val, true); }; + @Input('style.md') set styleMd(val: NgStyleType) { this._base.cacheInput('styleMd', val, true);}; + @Input('style.gt-md') set styleGtMd(val: NgStyleType) { this._base.cacheInput('styleGtMd', val, true);}; + @Input('style.lg') set styleLg(val: NgStyleType) { this._base.cacheInput('styleLg', val, true); }; + @Input('style.gt-lg') set styleGtLg(val: NgStyleType) { this._base.cacheInput('styleGtLg', val, true); }; + @Input('style.xl') set styleXl(val: NgStyleType) { this._base.cacheInput('styleXl', val, true); }; + + /* tslint:enable */ /** - * + * Constructor for the ngStyle subclass; which adds selectors and + * a MediaQuery Activation Adapter */ constructor(private monitor: MediaMonitor, private _bpRegistry: BreakPointRegistry, - _differs: KeyValueDiffers, _ngEl: ElementRef, _renderer: Renderer) { + private _sanitizer: DomSanitizer, + _differs: KeyValueDiffers, + _ngEl: ElementRef, _renderer: Renderer) { super(_differs, _ngEl, _renderer); - this._base = new BaseFxDirectiveAdapter(monitor, _ngEl, _renderer); + this._buildAdapter(monitor, _ngEl, _renderer); + + // Get current inline style if any + this._base.cacheInput('style', _ngEl.nativeElement.getAttribute("style"), true); } /** * For @Input changes on the current mq activation property, see onMediaQueryChanges() */ ngOnChanges(changes: SimpleChanges) { - const changed = this._bpRegistry.items.some(it => `style${it.suffix}` in changes); + const changed = this._bpRegistry.items.some(it => { + return (`ngStyle${it.suffix}` in changes) || (`style${it.suffix}` in changes); + }); if (changed || this._base.mqActivation) { this._updateStyle(); } @@ -118,22 +117,72 @@ export class StyleDirective extends NgStyle implements OnInit, OnChanges, OnDest this._base.listenForMediaQueryChanges('style', '', (changes: MediaChange) => { this._updateStyle(changes.value); }); - this._updateStyle(); } ngOnDestroy() { this._base.ngOnDestroy(); } + // ************************************************************************ + // Private Internal Methods + // ************************************************************************ + + /** + * Use the currently activated input property and assign to + * `ngStyle` which does the style injections... + */ private _updateStyle(value?: NgStyleType) { let style = value || this._base.queryInput("style") || ''; if (this._base.mqActivation) { style = this._base.mqActivation.activatedInput; } + // Delegate subsequent activity to the NgStyle logic this.ngStyle = style; } + + /** + * Build MediaQuery Activation Adapter + * This adapter manages listening to mediaQuery change events and identifying + * which property value should be used for the style update + */ + private _buildAdapter(monitor: MediaMonitor, _ngEl: ElementRef, _renderer: Renderer) { + this._base = new BaseFxDirectiveAdapter(monitor, _ngEl, _renderer); + + // Build intercept to convert raw strings to ngStyleMap + let cacheInput = this._base.cacheInput.bind(this._base); + this._base.cacheInput = (key?: string, source?: any, cacheRaw = false, merge = true) => { + let styles = this._buildStyleMap(source); + if (merge) { + styles = extendObject({}, this._base.inputMap['style'], styles); + } + cacheInput(key, styles, cacheRaw); + }; + } + + /** + * Convert raw strings to ngStyleMap; which is required by ngStyle + * NOTE: Raw string key-value pairs MUST be delimited by `;` + * Comma-delimiters are not supported due to complexities of + * possible style values such as `rgba(x,x,x,x)` and others + */ + private _buildStyleMap(styles: NgStyleType) { + let sanitizer: NgStyleSanitizer = (val: any) => { + // Always safe-guard (aka sanitize) style property values + return this._sanitizer.sanitize(SecurityContext.STYLE, val); + }; + if (styles) { + switch ( _.getType(styles) ) { + case 'array' : return _.buildMapFromList(styles as NgStyleRawList, sanitizer); + case 'string': return _.buildMapFromList(_.buildRawList(styles), sanitizer); + case 'set' : return _.buildMapFromSet(styles, sanitizer); + default : return _.buildMapFromSet(styles, sanitizer); + } + } + return styles; + } + /** * Special adapter to cross-cut responsive behaviors * into the StyleDirective diff --git a/src/lib/utils/style-transforms.spec.ts b/src/lib/utils/style-transforms.spec.ts new file mode 100644 index 000000000..74acb9524 --- /dev/null +++ b/src/lib/utils/style-transforms.spec.ts @@ -0,0 +1,71 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import {customMatchers, expect} from './testing/custom-matchers'; +import {NgStyleRawList, NgStyleMap, ngStyleUtils as _} from './style-transforms'; + +describe('ngStyleUtils', () => { + beforeEach(() => { + jasmine.addMatchers(customMatchers); + }); + + it('should parse a raw string of key:value pairs', () => { + let list: NgStyleRawList = _.buildRawList(` + color:'red'; + font-size :16px; + background-color:rgba(116, 37, 49, 0.72); + `); + + expect(list[0]).toEqual("color:'red'"); + expect(list[1]).toEqual("font-size :16px"); + expect(list[2]).toEqual("background-color:rgba(116, 37, 49, 0.72)"); + }); + + it('should build an iterable map from a raw string of key:value pairs', () => { + let map: NgStyleMap = _.buildMapFromList(_.buildRawList(` + color:'red'; + font-size :16px; + background-color:rgba(116, 37, 49, 0.72); + `)); + + expect(map).toHaveMap({ + 'color': 'red', + 'font-size': '16px', + 'background-color': 'rgba(116, 37, 49, 0.72)' + }); + }); + + it('should build an iterable map from an Array of key:value strings', () => { + let map: NgStyleMap = _.buildMapFromList(_.buildRawList(` + color:'red'; + font-size :16px; + background-color:rgba(116, 37, 49, 0.72); + `)); + + expect(map).toHaveMap({ + 'color': 'red', + 'font-size': '16px', + 'background-color': 'rgba(116, 37, 49, 0.72)' + }); + }); + + it('should build an iterable map from an Set of key:value pairs', () => { + let customSet = new Set(); + customSet.add("color:'red'"); + customSet.add("font-size :16px;"); + customSet.add("background-color:rgba(116, 37, 49, 0.72)"); + + let map: NgStyleMap = _.buildMapFromSet(customSet); + + expect(map).toHaveMap({ + 'color': 'red', + 'font-size': '16px', + 'background-color': 'rgba(116, 37, 49, 0.72)' + }); + }); + +}); diff --git a/src/lib/utils/style-transforms.ts b/src/lib/utils/style-transforms.ts new file mode 100644 index 000000000..91eddde34 --- /dev/null +++ b/src/lib/utils/style-transforms.ts @@ -0,0 +1,112 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +export type NgStyleRawList = string[]; +export type NgStyleMap = {[klass: string]: string}; +// NgStyle selectors accept NgStyleType values +export type NgStyleType = string | Set | NgStyleRawList | NgStyleMap; + +/** + * Callback function for SecurityContext.STYLE sanitization + */ +export type NgStyleSanitizer = (val: any) => string; + +/** + * NgStyle allowed inputs + */ +export class NgStyleMapEntry { + constructor(public key: string, public value: string, noQuotes = true) { + this.key = noQuotes ? key.replace(/['"]/g, "").trim() : key.trim(); + + this.value = noQuotes ? value.replace(/['"]/g, "").trim() : value.trim(); + this.value = this.value.replace(/;/, ""); + } +} + +/** + * Transform Operators for @angular/flex-layout NgStyle Directive + */ +export const ngStyleUtils = { + getType, + buildRawList, + buildMapFromList, + buildMapFromSet +}; + +function getType(target: any): string { + let what = typeof target; + if (what === 'object') { + return (target.constructor === Array) ? 'array' : + (target.constructor === Set ) ? 'set' : 'object'; + } + return what; +} + +/** + * Split string of key:value pairs into Array of k-v pairs + * e.g. 'key:value; key:value; key:value;' -> ['key:value',...] + */ +function buildRawList(source: any, delimiter = ";"): NgStyleRawList { + return String(source) + .trim() + .split(delimiter) + .map((val: string) => val.trim()) + .filter(val => val !== ""); +} + +/** + * Convert array of key:value strings to a iterable map object + */ +function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap { + let sanitizeValue = (it: NgStyleMapEntry) => { + if (sanitize) { + it.value = sanitize(it.value); + } + return it; + }; + + return styles + .map(keyValuetoMapEntry) + .filter(entry => !!entry) + .map(sanitizeValue) + .reduce(entriesToMapReducer, {}); +}; + +/** + * Convert Set or raw Object to an iterable NgStyleMap + */ +function buildMapFromSet(source: any, sanitize?: NgStyleSanitizer): NgStyleMap { + let list = new Array(); + if (getType(source) == 'set') { + source.forEach(entry => list.push(entry)); + } else { // simple hashmap + Object.keys(source).forEach(key => { + list.push(`${key}:${source[key]}`); + }); + } + return buildMapFromList(list, sanitize); +} + + +/** + * Convert "key:value" -> [key, value] + */ +function keyValuetoMapEntry(it: string): NgStyleMapEntry { + let [key, val] = it.split(":"); + return val ? new NgStyleMapEntry(key, val) : null; +}; + +/** + * Convert [ [key,value] ] -> { key : value } + */ +function entriesToMapReducer(map: NgStyleMap, entry: NgStyleMapEntry): NgStyleMap { + if (!!entry.key) { + map[entry.key] = entry.value; + } + return map; +} diff --git a/src/lib/utils/testing/custom-matchers.ts b/src/lib/utils/testing/custom-matchers.ts index 4100d9b3f..d077729f2 100644 --- a/src/lib/utils/testing/custom-matchers.ts +++ b/src/lib/utils/testing/custom-matchers.ts @@ -27,6 +27,11 @@ export interface NgMatchers extends jasmine.Matchers { */ toHaveText(expected: string): boolean; + /** + * Compare key:value pairs as matching EXACTLY + */ + toHaveMap(expected: {[k: string]: string}): boolean; + /** * Expect the element to have the given CSS class. * @@ -111,6 +116,28 @@ export const customMatchers: jasmine.CustomMatcherFactories = { } }, + toHaveMap : function() { + return { + compare: function (actual: {[k: string]: string}, map: {[k: string]: string}) { + let allPassed: boolean; + allPassed = Object.keys(map).length !== 0; + Object.keys(map).forEach(key => { + allPassed = allPassed && (actual[key] === map[key]); + }); + + return { + pass: allPassed, + get message() { + return ` + Expected ${JSON.stringify(actual)} ${!allPassed ? ' ' : 'not '} to contain the + "${JSON.stringify(map)}" + `; + } + }; + } + }; + }, + toHaveCssStyle: function () { return { compare: function (actual: any, styles: {[k: string]: string}|string) { diff --git a/yarn.lock b/yarn.lock index 8664c00e8..98bfab4d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,48 +3,48 @@ "@angular/common@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-2.4.7.tgz#9316daf90e353e67187d2e0afec5521c2001bd4b" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-2.4.8.tgz#e45a77a9d852c8e7135053ff38cf805435458c48" "@angular/compiler-cli@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-2.4.7.tgz#15768141816903636593f430ff9a808d98a2a762" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-2.4.8.tgz#6dad3b467243166bf2515d21993d2d1a4700a161" dependencies: "@angular/tsc-wrapped" "0.5.2" minimist "^1.2.0" reflect-metadata "^0.1.2" "@angular/compiler@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-2.4.7.tgz#008c1f0d1409c46fbba215fe8ab0d886252c7ff0" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-2.4.8.tgz#fa788fc8bed9f322b040af2b9a06a70991390e23" "@angular/core@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-2.4.7.tgz#8bed9a2d37e81342bd41d189df88aa3e02393cfb" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-2.4.8.tgz#bf1a4fc324827516e6c3222047a9b2cbdaee6976" "@angular/forms@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-2.4.7.tgz#d34a36110e10f641aa1e1420b5c2df65987fd8bb" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-2.4.8.tgz#51512a801aaf3a1eba7bce2b22694537b93f047f" "@angular/http@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/http/-/http-2.4.7.tgz#b024b2b49ae0234258d42309e46f65862a42070d" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/http/-/http-2.4.8.tgz#e81ac8e4db836ed813edc4ffa137596cd5836baf" "@angular/material@^2.0.0-beta.2": version "2.0.0-beta.2" resolved "https://registry.yarnpkg.com/@angular/material/-/material-2.0.0-beta.2.tgz#65ee8733990347b7518b7f42113e02e069dc109b" "@angular/platform-browser-dynamic@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-2.4.7.tgz#9632586f9ce596186be4c124c3ea0a4a74b27b46" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-2.4.8.tgz#86059fe930489d1ca0056a5aba0b4420414759f5" "@angular/platform-browser@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-2.4.7.tgz#19f7996a70f07b34ce8d6d0e255544e62cae75f1" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-2.4.8.tgz#686bc82d9188e354181699640777237ed79122ed" "@angular/platform-server@^2.3.1": - version "2.4.7" - resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-2.4.7.tgz#e2a9f283b4eb25b967ab085c83350c0a08927617" + version "2.4.8" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-2.4.8.tgz#6ccf9550f11137286007c7ff01d4b449c421acbe" dependencies: parse5 "^2.2.1" @@ -114,9 +114,9 @@ version "2.0.34" resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.34.tgz#9cbac4f41cb039436141785e1be50b3ab10a04a9" -"@types/jasmine@^2.2.34": - version "2.5.41" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.41.tgz#d5e86161a0af80d52062b310a33ed65b051a0713" +"@types/jasmine@2.5.38": + version "2.5.38" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717" "@types/merge2@0.0.28": version "0.0.28" @@ -133,8 +133,8 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" "@types/node@*", "@types/node@^6.0.45": - version "6.0.60" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.60.tgz#e7e134ebc674ae6ed93c36c767739b110d2c57fc" + version "6.0.63" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.63.tgz#e08acbbd5946e0e95990b1c76f3ce5b7882a48eb" "@types/node@4.0.*": version "4.0.30" @@ -197,8 +197,8 @@ JSONStream@^0.8.4: through ">=2.2.7 <3" JSONStream@^1.0.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.0.tgz#680ab9ac6572a8a1a207e0b38721db1c77b215e5" + version "1.3.1" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -227,9 +227,9 @@ acorn-dynamic-import@^2.0.0: dependencies: acorn "^4.0.3" -acorn@4.X, acorn@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" +acorn@4.X, acorn@^4.0.11, acorn@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" add-stream@^1.0.0: version "1.0.0" @@ -251,12 +251,12 @@ agent-base@2: semver "~5.0.1" ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.0.tgz#c11e6859eafff83e0dafc416929472eca946aa2c" + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" ajv@^4.7.0: - version "4.10.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.4.tgz#c0974dd00b3464984892d6010aa9c2c945933254" + version "4.11.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -282,8 +282,8 @@ angular-in-memory-web-api@~0.1.13: resolved "https://registry.yarnpkg.com/angular-in-memory-web-api/-/angular-in-memory-web-api-0.1.17.tgz#8cefab8d4e2fec70cc99a3e4acb81efd1bd17cbf" angular2-template-loader@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/angular2-template-loader/-/angular2-template-loader-0.6.0.tgz#8a7fae4cf5a2494968da512aa43152a82a0c99b6" + version "0.6.2" + resolved "https://registry.yarnpkg.com/angular2-template-loader/-/angular2-template-loader-0.6.2.tgz#c0d44e90fff0fac95e8b23f043acda7fd1c51d7c" dependencies: loader-utils "^0.2.15" @@ -293,14 +293,18 @@ ansi-align@^1.1.0: dependencies: string-width "^1.0.1" -ansi-regex@2, ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" ansi-regex@^0.2.0, ansi-regex@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" +ansi-regex@^2.0.0, ansi-regex@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + ansi-styles@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" @@ -320,13 +324,13 @@ anymatch@^1.3.0: arrify "^1.0.0" micromatch "^2.1.5" -app-module-path@~1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-1.0.6.tgz#35d95f3251c16be8b5bc30a3ee6c14769090b781" +app-module-path@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-1.1.0.tgz#a6ac5368450f209b9f5b86e9a3e4a6ab6fe7531c" aproba@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" + version "1.1.1" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" archiver-utils@^1.3.0: version "1.3.0" @@ -339,9 +343,9 @@ archiver-utils@^1.3.0: normalize-path "^2.0.0" readable-stream "^2.0.0" -archiver@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.1.0.tgz#e1e8c4d356cf155308f351d60cc18cb6fb2344ee" +archiver@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.3.0.tgz#4f2194d6d8f99df3f531e6881f14f15d55faaf22" dependencies: archiver-utils "^1.3.0" async "^2.0.0" @@ -350,6 +354,7 @@ archiver@1.1.0: lodash "^4.8.0" readable-stream "^2.0.0" tar-stream "^1.5.0" + walkdir "^0.0.11" zip-stream "^1.1.0" archy@^1.0.0: @@ -461,9 +466,9 @@ ast-module-types@^2.3.1, ast-module-types@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-2.3.2.tgz#4bb1de2d729678824429e22a628d03e87df4ad11" -ast-types@0.9.4: - version "0.9.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.4.tgz#410d1f81890aeb8e0a38621558ba5869ae53c91b" +ast-types@0.9.5: + version "0.9.5" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.5.tgz#1a660a09945dbceb1f9c9cbb715002617424e04a" async-each@^1.0.0: version "1.0.1" @@ -488,8 +493,8 @@ async@^0.9.0, async@~0.9.0: resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" async@^2.0.0, async@^2.1.2: - version "2.1.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" + version "2.1.5" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" dependencies: lodash "^4.14.0" @@ -506,14 +511,14 @@ atob@~1.1.0: resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" autoprefixer@^6.0.0, autoprefixer@^6.3.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.6.1.tgz#11a4077abb4b313253ec2f6e1adb91ad84253519" + version "6.7.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.5.tgz#50848f39dc08730091d9495023487e7cc21f518d" dependencies: - browserslist "~1.5.1" - caniuse-db "^1.0.30000604" + browserslist "^1.7.5" + caniuse-db "^1.0.30000624" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^5.2.8" + postcss "^5.2.15" postcss-value-parser "^3.2.3" awesome-typescript-loader@3.0.0-beta.9: @@ -532,8 +537,8 @@ aws-sign2@~0.6.0: resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" aws4@^1.2.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" + 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.20.0: version "6.22.0" @@ -544,8 +549,8 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.20.0: js-tokens "^3.0.0" babel-runtime@^6.0.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611" + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" dependencies: core-js "^2.4.0" regenerator-runtime "^0.10.0" @@ -585,8 +590,8 @@ batch@0.5.3: resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" bcrypt-pbkdf@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" dependencies: tweetnacl "^0.14.3" @@ -615,11 +620,11 @@ binary-extensions@^1.0.0: buffers "~0.1.1" chainsaw "~0.1.0" -bl@^1.0.0, bl@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" +bl@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98" dependencies: - readable-stream "~2.0.5" + readable-stream "^2.0.5" blob@0.0.4: version "0.0.4" @@ -647,13 +652,13 @@ 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" -body-parser@^1.12.4: - version "1.16.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.16.0.tgz#924a5e472c6229fb9d69b85a20d5f2532dec788b" +body-parser@^1.16.1: + version "1.16.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.16.1.tgz#51540d045adfa7a0c6995a014bb6b1ed9b802329" dependencies: bytes "2.4.0" content-type "~1.0.2" - debug "2.6.0" + debug "2.6.1" depd "~1.1.0" http-errors "~1.5.1" iconv-lite "0.4.15" @@ -723,8 +728,8 @@ braces@^1.8.2: repeat-element "^1.1.2" brorand@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.6.tgz#4028706b915f91f7b349a2e0bf3c376039d216e5" + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.0.6" @@ -777,11 +782,12 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" -browserslist@^1.0.1, browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.5.2, browserslist@~1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.5.2.tgz#1c82fde0ee8693e6d15c49b7bff209dc06298c56" +browserslist@^1.0.1, browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.5.2, browserslist@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b" dependencies: - caniuse-db "^1.0.30000604" + caniuse-db "^1.0.30000624" + electron-to-chromium "^1.2.3" browserstack@1.5.0: version "1.5.0" @@ -876,18 +882,17 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" caniuse-api@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.5.2.tgz#8f393c682f661c0a997b77bba6e826483fb3600e" + version "1.5.3" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2" dependencies: browserslist "^1.0.1" caniuse-db "^1.0.30000346" lodash.memoize "^4.1.0" lodash.uniq "^4.3.0" - shelljs "^0.7.0" -caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000604: - version "1.0.30000613" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000613.tgz#639133b7a5380c1416f9701d23d54d093dd68299" +caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624: + version "1.0.30000628" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000628.tgz#3d010e2a8e2537a8d135792e90e4f2ce0eb838cc" capture-stack-trace@^1.0.0: version "1.0.0" @@ -952,8 +957,8 @@ cipher-base@^1.0.0, cipher-base@^1.0.1: inherits "^2.0.1" clang-format@^1.0.32, clang-format@^1.0.45: - version "1.0.46" - resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.0.46.tgz#f69de49cd50909b3149c9053c9240defd5135114" + version "1.0.48" + resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.0.48.tgz#44885525b8493b8ced7e1c59b5738808d6ff1f7a" dependencies: async "^1.5.2" glob "^7.0.0" @@ -965,28 +970,37 @@ clap@^1.0.9: dependencies: chalk "^1.1.3" -clean-css@3.4.x: - version "3.4.24" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.24.tgz#89f5a5e9da37ae02394fe049a41388abbe72c3b5" +clean-css@4.0.x: + version "4.0.8" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6" dependencies: - commander "2.8.x" - source-map "0.4.x" + source-map "0.5.x" cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" cli-color@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.1.0.tgz#de188cdc4929d83b67aea04110fbed40fdbf6775" + version "1.2.0" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.2.0.tgz#3a5ae74fd76b6267af666e69e2afbbd01def34d1" dependencies: - ansi-regex "2" - d "^0.1.1" - es5-ext "^0.10.8" + ansi-regex "^2.1.1" + d "1" + es5-ext "^0.10.12" es6-iterator "2" - memoizee "^0.3.9" + memoizee "^0.4.3" timers-ext "0.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + 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" + cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -1107,18 +1121,18 @@ commander@2.6.0, commander@~2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" -commander@2.8.x, commander@~2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - dependencies: - graceful-readlink ">= 1.0.0" - commander@2.9.x, commander@^2.8.1, 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.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -1218,12 +1232,12 @@ connect-inject@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/connect-inject/-/connect-inject-0.3.2.tgz#d96b516a5b6bb24c2191e622b5e82cdd62844ba3" -connect@^3.3.5: - version "3.5.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" +connect@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e" dependencies: - debug "~2.2.0" - finalhandler "0.5.0" + debug "2.6.1" + finalhandler "1.0.0" parseurl "~1.3.1" utils-merge "1.0.0" @@ -1250,9 +1264,9 @@ constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -content-disposition@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b" +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.1, content-type@~1.0.2: version "1.0.2" @@ -1383,8 +1397,8 @@ conventional-commits-parser@^1.0.0: trim-off-newlines "^1.0.0" convert-source-map@1.X, convert-source-map@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" + version "1.4.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3" cookie-signature@1.0.6: version "1.0.6" @@ -1605,9 +1619,9 @@ cssesc@^0.1.0: postcss-value-parser "^3.2.3" postcss-zindex "^2.0.1" -csso@~2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.2.1.tgz#51fbb5347e50e81e6ed51668a48490ae6fe2afe2" +csso@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9" dependencies: clap "^1.0.9" source-map "^0.5.3" @@ -1622,6 +1636,12 @@ custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + d@^0.1.1, d@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" @@ -1669,9 +1689,9 @@ debug@1.0.4: dependencies: ms "0.6.2" -debug@2, debug@2.6.0, debug@2.X, debug@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" +debug@2, debug@2.6.1, debug@2.X, debug@^2.2.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" dependencies: ms "0.7.2" @@ -1725,9 +1745,9 @@ depd@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" -dependency-tree@^5.7.6: - version "5.7.6" - resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-5.7.6.tgz#e4f6f26fe580362e6cf2d3c5f9fabddc81580ed8" +dependency-tree@5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-5.8.0.tgz#0abd5aee789b49be5121a92cf6697bb7a1332d70" dependencies: commander "~2.6.0" debug "~2.2.0" @@ -1785,6 +1805,14 @@ detective-es6@^1.1.6: dependencies: node-source-walk "^3.0.0" +detective-less@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detective-less/-/detective-less-1.0.0.tgz#426c78c9ab6e3275bf66cc91abac0053bb452d7d" + dependencies: + debug "~2.2.0" + gonzales-pe "^3.4.4" + node-source-walk "^3.2.0" + detective-sass@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-2.0.0.tgz#0af18ac639c8c36e9d37db1a74e2bf849f0a548e" @@ -1941,17 +1969,24 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" ejs@^2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.5.tgz#6ef4e954ea7dcf54f66aad2fe7aa421932d9ed77" + version "2.5.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88" + +electron-to-chromium@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.2.4.tgz#9751cbea89fa120bf88c226ba41eb8d0b6f1b597" elliptic@^6.0.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48" + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" dependencies: bn.js "^4.4.0" brorand "^1.0.1" hash.js "^1.0.0" + hmac-drbg "^1.0.0" inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" emojis-list@^2.0.0: version "2.1.0" @@ -1973,9 +2008,9 @@ end-of-stream@~0.1.5: dependencies: once "~1.3.0" -engine.io-client@1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766" +engine.io-client@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -1986,7 +2021,7 @@ engine.io-client@1.8.2: parsejson "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - ws "1.1.1" + ws "1.1.2" xmlhttprequest-ssl "1.5.3" yeast "0.1.2" @@ -2001,16 +2036,16 @@ engine.io-parser@1.3.2: has-binary "0.1.7" wtf-8 "1.0.0" -engine.io@1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e" +engine.io@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" dependencies: accepts "1.3.3" base64id "1.0.0" cookie "0.3.1" debug "2.3.3" engine.io-parser "1.3.2" - ws "1.1.1" + ws "1.1.2" enhanced-resolve@^2.3.0: version "2.3.0" @@ -2021,7 +2056,16 @@ enhanced-resolve@^2.3.0: object-assign "^4.0.1" tapable "^0.2.3" -enhanced-resolve@^3.0.0, enhanced-resolve@^3.0.2: +enhanced-resolve@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.5" + +enhanced-resolve@~3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.0.3.tgz#df14c06b5fc5eecade1094c9c5a12b4b3edc0b62" dependencies: @@ -2050,7 +2094,7 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.5, es5-ext@~0.10.6, es5-ext@~0.10.7: +es5-ext@^0.10.12, es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@^0.10.9, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7: version "0.10.12" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047" dependencies: @@ -2065,14 +2109,6 @@ es6-iterator@2: es5-ext "^0.10.7" es6-symbol "3" -es6-iterator@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-0.1.3.tgz#d6f58b8c4fc413c249b4baa19768f8e4d7c8944e" - dependencies: - d "~0.1.1" - es5-ext "~0.10.5" - es6-symbol "~2.0.1" - es6-symbol@3, es6-symbol@~3.1: version "3.1.0" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" @@ -2080,13 +2116,6 @@ es6-symbol@3, es6-symbol@~3.1: d "~0.1.1" es5-ext "~0.10.11" -es6-symbol@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-2.0.1.tgz#761b5c67cfd4f1d18afb234f691d678682cb3bf3" - dependencies: - d "~0.1.1" - es5-ext "~0.10.5" - es6-templates@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" @@ -2094,14 +2123,14 @@ es6-templates@^0.2.2: recast "~0.11.12" through "~2.3.6" -es6-weak-map@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-0.1.4.tgz#706cef9e99aa236ba7766c239c8b9e286ea7d228" +es6-weak-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.1.tgz#0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81" dependencies: - d "~0.1.1" - es5-ext "~0.10.6" - es6-iterator "~0.1.3" - es6-symbol "~2.0.1" + d "^0.1.1" + es5-ext "^0.10.8" + es6-iterator "2" + es6-symbol "3" escape-html@1.0.1: version "1.0.1" @@ -2130,14 +2159,14 @@ 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@^3.1.1, esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + esprima@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" -esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" @@ -2150,7 +2179,7 @@ etag@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" -event-emitter@~0.3.4: +event-emitter@^0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.4.tgz#8d63ddfb4cfe1fae3b32ca265c4c720222080bb5" dependencies: @@ -2177,7 +2206,7 @@ events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" -eventsource@~0.1.6: +eventsource@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" dependencies: @@ -2228,13 +2257,13 @@ expand-tilde@^1.2.1, expand-tilde@^1.2.2: dependencies: os-homedir "^1.0.1" -express@^4.13.3, express@^4.14.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66" +express@^4.13.3, express@^4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.14.1.tgz#646c237f766f148c2120aff073817b9e4d7e0d33" dependencies: accepts "~1.3.3" array-flatten "1.1.1" - content-disposition "0.5.1" + content-disposition "0.5.2" content-type "~1.0.2" cookie "0.3.1" cookie-signature "1.0.6" @@ -2243,19 +2272,19 @@ express@^4.13.3, express@^4.14.0: encodeurl "~1.0.1" escape-html "~1.0.3" etag "~1.7.0" - finalhandler "0.5.0" + finalhandler "0.5.1" fresh "0.3.0" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" parseurl "~1.3.1" path-to-regexp "0.1.7" - proxy-addr "~1.1.2" + proxy-addr "~1.1.3" qs "6.2.0" range-parser "~1.2.0" - send "0.14.1" - serve-static "~1.11.1" - type-is "~1.6.13" + send "0.14.2" + serve-static "~1.11.2" + type-is "~1.6.14" utils-merge "1.0.0" vary "~1.1.0" @@ -2309,8 +2338,8 @@ faye-websocket@^0.10.0, faye-websocket@~0.10.0: websocket-driver ">=0.5.1" faye-websocket@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.0.tgz#d9ccf0e789e7db725d74bc4877d23aa42972ac50" + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" dependencies: websocket-driver ">=0.5.1" @@ -2332,20 +2361,20 @@ filename-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" -filesize@^3.3.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.4.1.tgz#8ea8935cb0eafde10dcb792eaf1caede6e94f127" +filesize@^3.5.4: + version "3.5.5" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.5.tgz#3c2a5c14463919a218434721472b63cc30748992" filing-cabinet@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-1.6.1.tgz#21489f0646faecb9c65c88eceff421bbed0f1d68" + version "1.7.0" + resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-1.7.0.tgz#0f9936bdcd45f92e89441eb5bd63da5e7cb3a731" dependencies: - app-module-path "~1.0.4" + app-module-path "~1.1.0" commander "~2.8.1" debug "~2.2.0" - enhanced-resolve "^3.0.2" + enhanced-resolve "~3.0.3" is-relative-path "^1.0.1" - module-definition "^2.2.3" + module-definition "^2.2.4" module-lookup-amd "^4.0.2" object-assign "~4.0.1" resolve "~1.1.7" @@ -2374,14 +2403,26 @@ finalhandler@0.1.0: debug "1.0.4" escape-html "1.0.1" -finalhandler@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" +finalhandler@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.1.tgz#2c400d8d4530935bc232549c5fa385ec07de6fcd" dependencies: debug "~2.2.0" escape-html "~1.0.3" on-finished "~2.3.0" - statuses "~1.3.0" + statuses "~1.3.1" + unpipe "~1.0.0" + +finalhandler@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755" + dependencies: + debug "2.6.1" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.1" + statuses "~1.3.1" unpipe "~1.0.0" find-index@^0.1.1: @@ -2458,14 +2499,6 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.11" - form-data@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" @@ -2524,8 +2557,8 @@ 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.0.17" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558" + version "1.1.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" dependencies: nan "^2.3.0" node-pre-gyp "^0.6.29" @@ -2565,8 +2598,8 @@ gather-stream@^1.0.0: resolved "https://registry.yarnpkg.com/gather-stream/-/gather-stream-1.0.0.tgz#b33994af457a8115700d410f317733cbe7a0904b" gauge@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" + version "2.7.3" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -2575,7 +2608,6 @@ gauge@~2.7.1: signal-exit "^3.0.0" string-width "^1.0.1" strip-ansi "^3.0.1" - supports-color "^0.2.0" wide-align "^1.1.0" gaze@^0.5.1: @@ -2992,8 +3024,8 @@ gulp-sourcemaps@1.6.0: vinyl "^1.0.0" gulp-sourcemaps@^1.6.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.11.0.tgz#1b249bfe994361c370c168fe2508effc1f1523c9" + version "1.11.1" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.11.1.tgz#b534376deab49387d406c3aebeb8beaf02ef3548" dependencies: acorn "4.X" convert-source-map "1.X" @@ -3114,8 +3146,8 @@ handle-thing@^1.2.4: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" handlebars@^4.0.1, handlebars@^4.0.2: - version "4.0.5" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.5.tgz#92c6ed6bb164110c50d4d8d0fbddc70806c6f8e7" + version "4.0.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7" dependencies: async "^1.4.0" optimist "^0.6.1" @@ -3174,7 +3206,7 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" -hash.js@^1.0.0: +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" dependencies: @@ -3190,8 +3222,16 @@ hawk@~3.1.3: sntp "1.x.x" he@1.1.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.0.tgz#29319d49beec13a9b1f3c4f9b2a6dde4859bb2a7" + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hmac-drbg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" hoek@2.x.x: version "2.16.3" @@ -3204,8 +3244,8 @@ homedir-polyfill@^1.0.0: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" + version "2.2.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5" hpack.js@^2.1.6: version "2.1.6" @@ -3220,22 +3260,26 @@ html-comment-regex@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" +html-entities@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2" + html-loader@^0.4.3: - version "0.4.4" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.4.4.tgz#f2b5b9acd5e035ff3ab5fd369c13c97a7bb014da" + version "0.4.5" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.4.5.tgz#5fbcd87cd63a5c49a7fce2fe56f425e05729c68c" dependencies: es6-templates "^0.2.2" fastparse "^1.1.1" html-minifier "^3.0.1" - loader-utils "^0.2.15" + loader-utils "^1.0.2" object-assign "^4.1.0" html-minifier@^3.0.1, html-minifier@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.2.3.tgz#d2ff536e24d95726c332493d8f77d84dbed85372" + version "3.3.3" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.3.3.tgz#5e85516b2aff3c3fb9bda351879375868386d6f6" dependencies: camel-case "3.0.x" - clean-css "3.4.x" + clean-css "4.0.x" commander "2.9.x" he "1.1.x" ncname "1.0.x" @@ -3248,8 +3292,8 @@ html-tags@^1.1.1: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-1.1.1.tgz#869f43859f12d9bdc3892419e494a628aa1b204e" html-webpack-plugin@^2.22.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.26.0.tgz#ba97c8a66f912b85df80d2aeea65966c8bd9249e" + version "2.28.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" dependencies: bluebird "^3.4.7" html-minifier "^3.2.3" @@ -3339,8 +3383,8 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" ignore@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435" + version "3.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.4.tgz#4055e03596729a8fabe45a43c100ad5ed815c4e8" imurmurhash@^0.1.4: version "0.1.4" @@ -3452,7 +3496,7 @@ is-extglob@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" -is-finite@^1.0.0: +is-finite@^1.0.0, is-finite@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" dependencies: @@ -3481,8 +3525,8 @@ is-glob@^3.1.0: is-extglob "^2.1.0" is-my-json-valid@^2.12.4: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" @@ -3519,6 +3563,10 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-promise@^2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" @@ -3655,26 +3703,26 @@ js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" js-tokens@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.0.tgz#a2f2a969caae142fb3cd56228358c89366957bd1" + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" js-yaml@3.x, js-yaml@^3.4.3: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + version "3.8.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628" dependencies: argparse "^1.0.7" - esprima "^2.6.0" + esprima "^3.1.1" -js-yaml@~3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" dependencies: argparse "^1.0.7" esprima "^2.6.0" jsbn@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsesc@~0.5.0: version "0.5.0" @@ -3816,15 +3864,15 @@ karma-webpack@1.8.1: webpack-dev-middleware "^1.0.11" karma@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.4.0.tgz#bf5edbccabb8579cb68ae699871f3e79608ec94b" + version "1.5.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.5.0.tgz#9c4c14f0400bef2c04c8e8e6bff59371025cc009" dependencies: bluebird "^3.3.0" - body-parser "^1.12.4" + body-parser "^1.16.1" chokidar "^1.4.1" colors "^1.1.0" combine-lists "^1.0.0" - connect "^3.3.5" + connect "^3.6.0" core-js "^2.2.0" di "^0.0.1" dom-serialize "^2.2.0" @@ -3840,12 +3888,12 @@ karma@^1.3.0: optimist "^0.6.1" qjobs "^1.1.4" range-parser "^1.2.0" - rimraf "^2.3.3" + rimraf "^2.6.0" safe-buffer "^5.0.1" - socket.io "1.7.2" + socket.io "1.7.3" source-map "^0.5.3" - tmp "0.0.28" - useragent "^2.1.10" + tmp "0.0.31" + useragent "^2.1.12" kind-of@^3.0.2: version "3.1.0" @@ -3936,18 +3984,26 @@ load-json-file@^1.0.0: strip-bom "^2.0.0" loader-runner@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.2.0.tgz#824c1b699c4e7a2b6501b85902d5b862bf45b3fa" + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" -loader-utils@0.2.x, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.3, loader-utils@^0.2.5, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5: - version "0.2.16" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d" +loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.3, loader-utils@^0.2.5, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" dependencies: big.js "^3.1.3" emojis-list "^2.0.0" json5 "^0.5.0" object-assign "^4.0.1" +loader-utils@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + lodash._arraycopy@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" @@ -4106,10 +4162,6 @@ lodash.escape@~2.4.1: lodash._reunescapedhtml "~2.4.1" lodash.keys "~2.4.1" -lodash.indexof@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/lodash.indexof/-/lodash.indexof-4.0.5.tgz#53714adc2cddd6ed87638f893aa9b6c24e31ef3c" - lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -4299,7 +4351,7 @@ lodash@4.16.2: version "4.16.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.2.tgz#3e626db827048a699281a8a125226326cfc0e652" -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.5.1, lodash@^4.8.0: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.5.1, lodash@^4.8.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -4332,8 +4384,8 @@ loud-rejection@^1.0.0: signal-exit "^3.0.0" lower-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.3.tgz#c92393d976793eee5ba4edb583cf8eae35bd9bfb" + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" lowercase-keys@^1.0.0: version "1.0.0" @@ -4358,16 +4410,19 @@ macaddress@^0.2.8: resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" madge@^1.4.4: - version "1.5.0" - resolved "https://registry.yarnpkg.com/madge/-/madge-1.5.0.tgz#6245ff76aa0e26ca668153b9b3f3d05d62db8a8b" + version "1.6.0" + resolved "https://registry.yarnpkg.com/madge/-/madge-1.6.0.tgz#f5d0a48027bee2eb9245b93423f9741f888aeb65" dependencies: chalk "^1.1.3" commander "^2.9.0" commondir "^1.0.1" debug "^2.2.0" - dependency-tree "^5.7.6" + dependency-tree "5.8.0" graphviz "^0.0.8" mz "^2.4.0" + ora "1.1.0" + pluralize "^3.1.0" + pretty-ms "2.1.0" rc "^1.1.6" walkdir "^0.0.11" @@ -4404,25 +4459,24 @@ matchdep@^1.0.0: stack-trace "0.0.9" math-expression-evaluator@^1.2.14: - version "1.2.15" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.15.tgz#38dc5f0194c5bf5ff1c690ad4c4b64df71ac0187" - dependencies: - lodash.indexof "^4.0.5" + version "1.2.16" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9" media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" -memoizee@^0.3.9: - version "0.3.10" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.3.10.tgz#4eca0d8aed39ec9d017f4c5c2f2f6432f42e5c8f" +memoizee@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.3.tgz#1e9dc26b3a309a0aefcce5f476747b8e845276b6" dependencies: - d "~0.1.1" - es5-ext "~0.10.11" - es6-weak-map "~0.1.4" - event-emitter "~0.3.4" + d "1" + es5-ext "^0.10.12" + es6-weak-map "^2.0.1" + event-emitter "^0.3.4" + is-promise "^2.1" lru-queue "0.1" - next-tick "~0.2.2" + next-tick "1" timers-ext "0.1" memory-fs@^0.3.0, memory-fs@~0.3.0: @@ -4507,7 +4561,7 @@ miller-rabin@^4.0.0: version "1.26.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" -mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: version "2.1.14" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" dependencies: @@ -4517,18 +4571,26 @@ mime-types@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" -mime@1.2.11, mime@1.2.x: +mime@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" -mime@1.3.4, mime@^1.3.4: +mime@1.3.4, mime@1.3.x, mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" @@ -4578,7 +4640,7 @@ modify-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" -module-definition@^2.2.3, module-definition@^2.2.4: +module-definition@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-2.2.4.tgz#c0a3771de58cf6bcf12aed2476706c596ad4b2cb" dependencies: @@ -4640,8 +4702,8 @@ mz@^2.4.0: thenify-all "^1.0.0" nan@^2.3.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8" + version "2.5.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" natives@^1.1.0: version "1.1.0" @@ -4665,6 +4727,10 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + next-tick@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d" @@ -4710,8 +4776,8 @@ node-libs-browser@^2.0.0: vm-browserify "0.0.4" node-pre-gyp@^0.6.29: - version "0.6.32" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5" + version "0.6.33" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9" dependencies: mkdirp "~0.5.1" nopt "~3.0.6" @@ -4733,10 +4799,6 @@ node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" -node-uuid@~1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" - node-watch@^0.3.4: version "0.3.5" resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.3.5.tgz#a07f253a4f538de9d4ca522dd7f1996eeec0d97e" @@ -4826,7 +4888,7 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" -object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -4885,13 +4947,19 @@ onecolor@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.4.tgz#75a46f80da6c7aaa5b4daae17a47198bd9652494" +onetime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6" + dependencies: + mimic-fn "^1.0.0" + open@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" opener@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.2.tgz#b32582080042af8680c389a499175b4c54fff523" + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" opn-cli@^3.1.0: version "3.1.0" @@ -4932,6 +5000,15 @@ options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" +ora@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-1.1.0.tgz#69aaa4a209630e43b142c5f7ff41820da87e2faf" + dependencies: + chalk "^1.1.1" + cli-cursor "^2.1.0" + cli-spinners "^1.0.0" + log-symbols "^1.0.2" + orchestrator@^0.3.0: version "0.3.8" resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" @@ -5024,8 +5101,8 @@ parse-filepath@^1.0.1: path-root "^0.1.1" parse-github-repo-url@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.3.0.tgz#d4de02d68e2e60f0d6a182e7a8cb21b6f38c730b" + version "1.4.0" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.0.tgz#286c53e2c9962e0641649ee3ac9508fca4dd959c" parse-glob@^3.0.4: version "3.0.4" @@ -5042,6 +5119,10 @@ parse-json@^2.1.0, parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-ms@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -5090,6 +5171,10 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" @@ -5149,15 +5234,23 @@ pkginfo@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" +plur@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" + plur@^2.0.0, plur@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" dependencies: irregular-plurals "^1.0.0" +pluralize@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-3.1.0.tgz#84213d0a12356069daa84060c559242633161368" + portfinder@^1.0.9: - version "1.0.12" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.12.tgz#94a65114bec64433f9ce2116da33158238ce7ab4" + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" dependencies: async "^1.5.2" debug "^2.2.0" @@ -5172,16 +5265,16 @@ postcss-calc@^5.2.0: reduce-css-calc "^1.2.6" postcss-colormin@^2.1.8: - version "2.2.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.1.tgz#dc5421b6ae6f779ef6bfd47352b94abe59d0316b" + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" dependencies: colormin "^1.0.5" postcss "^5.0.13" postcss-value-parser "^3.2.3" postcss-convert-values@^2.3.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.0.tgz#08c6d06130fe58a91a21ff50829e1aad6a3a1acc" + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" dependencies: postcss "^5.0.11" postcss-value-parser "^3.1.2" @@ -5193,8 +5286,8 @@ postcss-discard-comments@^2.0.4: postcss "^5.0.14" postcss-discard-duplicates@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.0.2.tgz#02be520e91571ffb10738766a981d5770989bb32" + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" dependencies: postcss "^5.0.4" @@ -5249,8 +5342,8 @@ postcss-merge-longhand@^2.0.1: postcss "^5.0.4" postcss-merge-rules@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.1.tgz#5e5640020ce43cddd343c73bba91c9a358d1fe0f" + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" dependencies: browserslist "^1.5.2" caniuse-api "^1.5.2" @@ -5388,14 +5481,14 @@ postcss-resolve-nested-selector@^0.1.1: resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" postcss-scss@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.4.0.tgz#087c052c529b9270d9580bd1248a0f93d3b40d57" + version "0.4.1" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.4.1.tgz#ad771b81f0f72f5f4845d08aa60f93557653d54c" dependencies: - postcss "^5.2.5" + postcss "^5.2.13" postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.1.1, postcss-selector-parser@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.2.tgz#3d70f5adda130da51c7c0c2fc023f56b1374fe08" + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" dependencies: flatten "^1.0.2" indexes-of "^1.0.1" @@ -5430,9 +5523,9 @@ postcss-zindex@^2.0.1: postcss "^5.0.4" uniqs "^2.0.0" -postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.18, postcss@^5.0.2, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.4, postcss@^5.2.5, postcss@^5.2.8: - version "5.2.11" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.11.tgz#ff29bcd6d2efb98bfe08a022055ec599bbe7b761" +postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.18, postcss@^5.0.2, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.13, postcss@^5.2.15, postcss@^5.2.4: + version "5.2.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30" dependencies: chalk "^1.1.3" js-base64 "^2.1.9" @@ -5440,14 +5533,15 @@ postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0. supports-color "^3.2.3" precinct@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/precinct/-/precinct-3.5.2.tgz#80baeaa7ddd4349bf59638cd2fff6db61590a698" + version "3.6.0" + resolved "https://registry.yarnpkg.com/precinct/-/precinct-3.6.0.tgz#7d8f857e6737533332f429e7760c0e28ab1063f6" dependencies: commander "^2.9.0" debug "^2.2.0" detective-amd "^2.4.0" detective-cjs "^2.0.0" detective-es6 "^1.1.6" + detective-less "1.0.0" detective-sass "^2.0.0" detective-scss "^1.0.0" detective-stylus "^1.0.0" @@ -5477,9 +5571,17 @@ pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" +pretty-ms@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc" + dependencies: + is-finite "^1.0.1" + parse-ms "^1.0.0" + plur "^1.0.0" + private@~0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" process-nextick-args@~1.0.6: version "1.0.7" @@ -5493,7 +5595,7 @@ prompt-sync@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/prompt-sync/-/prompt-sync-4.1.4.tgz#0bd3bcd3c899c0e860add6a2d6e6f4bdf0775658" -proxy-addr@~1.1.2: +proxy-addr@~1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074" dependencies: @@ -5551,7 +5653,7 @@ qs@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" -qs@6.2.1, qs@~6.2.0: +qs@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" @@ -5560,12 +5662,12 @@ qs@~5.1.0: resolved "https://registry.yarnpkg.com/qs/-/qs-5.1.0.tgz#4d932e5c7ea411cca76a312d39a606200fd50cd9" qs@~6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + version "6.3.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d" query-string@^4.1.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.1.tgz#54baada6713eafc92be75c47a731f2ebd09cd11d" + version "4.3.2" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd" dependencies: object-assign "^4.1.0" strict-uri-encode "^1.0.0" @@ -5622,13 +5724,13 @@ raw-loader@^0.5.1: resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" rc@^1.0.1, rc@^1.1.6, rc@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" + version "1.1.7" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea" dependencies: deep-extend "~0.4.0" ini "~1.3.0" minimist "^1.2.0" - strip-json-comments "~1.0.4" + strip-json-comments "~2.0.1" read-all-stream@^3.0.0: version "3.1.0" @@ -5677,8 +5779,8 @@ readable-stream@^1.0.33, readable-stream@~1.1.9: string_decoder "~0.10.x" readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" + version "2.2.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729" dependencies: buffer-shims "^1.0.0" core-util-is "~1.0.0" @@ -5688,7 +5790,7 @@ readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2. string_decoder "~0.10.x" util-deprecate "~1.0.1" -readable-stream@~2.0.0, readable-stream@~2.0.5: +readable-stream@~2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" dependencies: @@ -5721,10 +5823,10 @@ readdirp@^2.0.0: set-immediate-shim "^1.0.1" recast@~0.11.12: - version "0.11.20" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.20.tgz#2cb9bec269c03b36d0598118a936cd0a293ca3f3" + version "0.11.22" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.22.tgz#dedeb18fb001a2bbc6ac34475fda53dfe3d47dfa" dependencies: - ast-types "0.9.4" + ast-types "0.9.5" esprima "~3.1.0" private "~0.1.5" source-map "~0.5.0" @@ -5757,16 +5859,16 @@ reduce-function-call@^1.0.1: balanced-match "^0.4.2" reflect-metadata@^0.1.2, reflect-metadata@^0.1.8: - version "0.1.9" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.9.tgz#987238dc87a516895fe457f130435ffbd763a4d4" + version "0.1.10" + 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" regenerator-runtime@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb" + version "0.10.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" regex-cache@^0.4.2: version "0.4.3" @@ -5865,33 +5967,7 @@ request-promise@^4.1.1: request-promise-core "1.1.1" stealthy-require "^1.0.0" -request@2.75.0: - version "2.75.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - bl "~1.1.2" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.0.0" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.2.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - -request@^2.79.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" dependencies: @@ -5974,8 +6050,17 @@ resolve@1.1.x, resolve@~1.1.6, resolve@~1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" resolve@^1.1.6, resolve@^1.1.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" + version "1.3.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.1.tgz#5d0a1632609b6b00a22284293db1d5d973676314" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" right-align@^0.1.1: version "0.1.3" @@ -5983,9 +6068,9 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.4, rimraf@~2.5.1, rimraf@~2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" +rimraf@2, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: glob "^7.0.5" @@ -5999,6 +6084,12 @@ rimraf@~2.2.0: version "2.2.8" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" +rimraf@~2.5.1, rimraf@~2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + ripemd160@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" @@ -6037,8 +6128,8 @@ rx@2.3.24: resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" rxjs@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.0.3.tgz#fc8bdf464ebf938812748e4196788f392fef9754" + version "5.2.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b" dependencies: symbol-observable "^1.0.1" @@ -6068,14 +6159,14 @@ sauce-connect-launcher@^0.17.0: rimraf "2.4.3" saucelabs@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee" + version "1.4.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.4.0.tgz#b934a9af9da2874b3f40aae1fcde50a4466f5f38" dependencies: https-proxy-agent "^1.0.0" sax@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + version "1.2.2" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828" select-hose@^2.0.0: version "2.0.0" @@ -6098,7 +6189,7 @@ semver-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" -"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@~5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -6110,9 +6201,9 @@ semver@~5.0.1: version "5.0.3" resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" -send@0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a" +send@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.14.2.tgz#39b0438b3f510be5dc6f667a11f71689368cdeef" dependencies: debug "~2.2.0" depd "~1.1.0" @@ -6121,12 +6212,12 @@ send@0.14.1: escape-html "~1.0.3" etag "~1.7.0" fresh "0.3.0" - http-errors "~1.5.0" + http-errors "~1.5.1" mime "1.3.4" - ms "0.7.1" + ms "0.7.2" on-finished "~2.3.0" range-parser "~1.2.0" - statuses "~1.3.0" + statuses "~1.3.1" send@0.8.5: version "0.8.5" @@ -6166,14 +6257,14 @@ serve-index@~1.1.4: batch "0.5.1" parseurl "~1.3.0" -serve-static@~1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805" +serve-static@~1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7" dependencies: encodeurl "~1.0.1" escape-html "~1.0.3" parseurl "~1.3.1" - send "0.14.1" + send "0.14.2" serve-static@~1.5.2: version "1.5.4" @@ -6206,19 +6297,11 @@ sha.js@^2.3.6: dependencies: inherits "^2.0.1" -shelljs@^0.7.0: - version "0.7.6" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.6.tgz#379cccfb56b91c8601e4793356eb5382924de9ad" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" -signal-exit@^3.0.0: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -6249,15 +6332,15 @@ socket.io-adapter@0.5.0: debug "2.3.3" socket.io-parser "2.3.1" -socket.io-client@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644" +socket.io-client@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" dependencies: backo2 "1.0.2" component-bind "1.0.0" component-emitter "1.2.1" debug "2.3.3" - engine.io-client "1.8.2" + engine.io-client "1.8.3" has-binary "0.1.7" indexof "0.0.1" object-component "0.0.3" @@ -6274,24 +6357,24 @@ socket.io-parser@2.3.1: isarray "0.0.1" json3 "3.3.2" -socket.io@1.7.2, socket.io@^1.4.4: - version "1.7.2" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71" +socket.io@1.7.3, socket.io@^1.4.4: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" dependencies: debug "2.3.3" - engine.io "1.8.2" + engine.io "1.8.3" has-binary "0.1.7" object-assign "4.1.0" socket.io-adapter "0.5.0" - socket.io-client "1.7.2" + socket.io-client "1.7.3" socket.io-parser "2.3.1" -sockjs-client@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0" +sockjs-client@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5" dependencies: debug "^2.2.0" - eventsource "~0.1.6" + eventsource "0.1.6" faye-websocket "~0.11.0" inherits "^2.0.1" json3 "^3.3.2" @@ -6332,8 +6415,8 @@ source-map-resolve@^0.3.0: urix "~0.1.0" source-map-support@^0.4.0, source-map-support@^0.4.2: - version "0.4.10" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.10.tgz#d7b19038040a14c0837a18e630a196453952b378" + version "0.4.11" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322" dependencies: source-map "^0.5.3" @@ -6341,13 +6424,7 @@ 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.4.x, source-map@^0.4.2, source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@0.X, source-map@>=0.5.6, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3: +source-map@0.5.x, source-map@0.X, source-map@>=0.5.6, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, 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" @@ -6357,6 +6434,12 @@ source-map@^0.1.38, source-map@^0.1.41, source-map@~0.1.33: dependencies: amdefine ">=0.0.4" +source-map@^0.4.2, source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + source-map@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" @@ -6452,7 +6535,7 @@ stack-trace@0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" -statuses@1, "statuses@>= 1.3.1 < 2", statuses@~1.3.0: +statuses@1, "statuses@>= 1.3.1 < 2", statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -6578,23 +6661,23 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" style-loader@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.1.tgz#468280efbc0473023cd3a6cd56e33b5a1d7fc3a9" + version "0.13.2" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb" dependencies: - loader-utils "^0.2.7" + loader-utils "^1.0.2" style-search@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" stylehacks@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-2.3.1.tgz#de49e8baa2e12b29c35b416b337094839bc97b35" + version "2.3.2" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-2.3.2.tgz#64c83e0438a68c9edf449e8c552a7d9ab6009b0b" dependencies: browserslist "^1.1.3" chalk "^1.1.1" @@ -6609,8 +6692,8 @@ stylehacks@^2.3.0: write-file-stdout "0.0.2" stylelint@^7.5.0: - version "7.7.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-7.7.1.tgz#af30b6677e307d38b0ad64b70e719c1752973c67" + version "7.9.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-7.9.0.tgz#b8d9ea20f887ab351075c6aded9528de24509327" dependencies: autoprefixer "^6.0.0" balanced-match "^0.4.0" @@ -6625,7 +6708,7 @@ stylelint@^7.5.0: html-tags "^1.1.1" ignore "^3.2.0" known-css-properties "^0.0.6" - lodash "^4.0.0" + lodash "^4.17.4" log-symbols "^1.0.2" meow "^3.3.0" micromatch "^2.3.11" @@ -6680,13 +6763,13 @@ svg-tags@^1.0.0: resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" svgo@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.1.tgz#287320fed972cb097e72c2bb1685f96fe08f8034" + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" dependencies: coa "~1.0.1" colors "~1.1.2" - csso "~2.2.1" - js-yaml "~3.6.1" + csso "~2.3.1" + js-yaml "~3.7.0" mkdirp "~0.5.1" sax "~1.2.1" whet.extend "~0.9.9" @@ -6702,8 +6785,8 @@ synesthesia@^1.0.1: css-color-names "0.0.3" systemjs@^0.19.41: - version "0.19.43" - resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.19.43.tgz#9902ce5bdaaba03413575902c6bb18bad2ddab8e" + version "0.19.46" + resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.19.46.tgz#c04574b3335f052a0e3c7a00ee4188c6e4c1e38e" dependencies: when "^3.7.5" @@ -6871,9 +6954,9 @@ tiny-lr@^0.2.0: parseurl "~1.3.0" qs "~5.1.0" -tmp@0.0.28: - version "0.0.28" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120" +tmp@0.0.31, tmp@0.0.x: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" dependencies: os-tmpdir "~1.0.1" @@ -6892,8 +6975,8 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" toposort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.0.tgz#b66cf385a1a8a8e68e45b8259e7f55875e8b06ef" + version "1.0.3" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" tough-cookie@~2.3.0: version "2.3.2" @@ -6941,8 +7024,8 @@ ts-node@^0.7.3: xtend "^4.0.0" tsickle@^0.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.2.4.tgz#98f4837bf45eb142a90fec751f8e30c6a5bc7c06" + version "0.2.6" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b" dependencies: minimist "^1.2.0" mkdirp "^0.5.1" @@ -6950,17 +7033,18 @@ tsickle@^0.2: source-map-support "^0.4.2" tslint-loader@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/tslint-loader/-/tslint-loader-3.3.0.tgz#6e6a50fc82e85ff3d1cb53e23dd24ae9e47d91ea" + version "3.4.2" + resolved "https://registry.yarnpkg.com/tslint-loader/-/tslint-loader-3.4.2.tgz#f26424b4dbfe1718acb96469e807038b1d2a644a" dependencies: loader-utils "^0.2.7" mkdirp "^0.5.1" - object-assign "^4.0.1" + object-assign "^4.1.1" rimraf "^2.4.4" + semver "^5.3.0" tslint@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.3.1.tgz#28f679c53ca4b273688bcb6fcf0dde7ff1bb2169" + version "4.4.2" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6" dependencies: babel-code-frame "^6.20.0" colors "^1.1.2" @@ -6969,7 +7053,6 @@ tslint@^4.2.0: glob "^7.1.1" optimist "~0.6.0" resolve "^1.1.7" - underscore.string "^3.3.4" update-notifier "^1.0.2" tty-browserify@0.0.0: @@ -6990,7 +7073,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-is@~1.6.10, type-is@~1.6.13, type-is@~1.6.14: +type-is@~1.6.10, type-is@~1.6.14: version "1.6.14" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2" dependencies: @@ -7005,9 +7088,9 @@ typescript@1.8.10: version "1.8.10" resolved "https://registry.yarnpkg.com/typescript/-/typescript-1.8.10.tgz#b475d6e0dff0bf50f296e5ca6ef9fbb5c7320f1e" -typescript@2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.0.10.tgz#ccdd4ed86fd5550a407101a0814012e1b3fac3dd" +typescript@^2.0.10: + version "2.2.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9" uglify-js@2.7.x, uglify-js@^2.6, uglify-js@^2.6.1, uglify-js@^2.7.5: version "2.7.5" @@ -7034,7 +7117,7 @@ unc-path-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" -underscore.string@3.3.4, underscore.string@^3.3.4: +underscore.string@3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" dependencies: @@ -7107,11 +7190,11 @@ urix@^0.1.0, urix@~0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" url-loader@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.7.tgz#67e8779759f8000da74994906680c943a9b0925d" + version "0.5.8" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5" dependencies: - loader-utils "0.2.x" - mime "1.2.x" + loader-utils "^1.0.2" + mime "1.3.x" url-parse-lax@^1.0.0: version "1.0.0" @@ -7127,8 +7210,8 @@ url-parse@1.0.x: requires-port "1.0.x" url-parse@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.7.tgz#025cff999653a459ab34232147d89514cc87d74a" + version "1.1.8" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156" dependencies: querystringify "0.0.x" requires-port "1.0.x" @@ -7144,11 +7227,12 @@ user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" -useragent@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.11.tgz#6a026e6a6c619b46ca7a0b2fdef6c1ac3da8ca29" +useragent@^2.1.12: + version "2.1.12" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2" dependencies: lru-cache "2.2.x" + tmp "0.0.x" util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" @@ -7315,8 +7399,8 @@ walkdir@^0.0.11: resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" watchpack@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.2.0.tgz#15d4620f1e7471f13fcb551d5c030d2c3eb42dbb" + version "1.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" dependencies: async "^2.1.2" chokidar "^1.4.3" @@ -7329,35 +7413,36 @@ wbuf@^1.1.0, wbuf@^1.4.0: minimalistic-assert "^1.0.0" wd@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/wd/-/wd-1.1.1.tgz#f2c6c41700f69e3009dcfc3574f42e9ae70fb5c1" + version "1.1.3" + resolved "https://registry.yarnpkg.com/wd/-/wd-1.1.3.tgz#4a09c89047abcd1326ab15f384590f18a9de0e0e" dependencies: - archiver "1.1.0" + archiver "1.3.0" async "2.0.1" lodash "4.16.2" + mkdirp "^0.5.1" q "1.4.1" - request "2.75.0" + request "2.79.0" underscore.string "3.3.4" vargs "0.1.0" webpack-bundle-analyzer@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.2.1.tgz#a90edc00eb9cea917d2af009529decf71d7f4a84" + version "2.3.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.3.0.tgz#0d05e96a43033f7cc57f6855b725782ba61e93a4" dependencies: - acorn "^4.0.3" + acorn "^4.0.11" chalk "^1.1.3" commander "^2.9.0" ejs "^2.5.5" - express "^4.14.0" - filesize "^3.3.0" + express "^4.14.1" + filesize "^3.5.4" gzip-size "^3.0.0" - lodash "^4.17.2" + lodash "^4.17.4" mkdirp "^0.5.1" opener "^1.4.2" webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.9.0.tgz#a1c67a3dfd8a5c5d62740aa0babe61758b4c84aa" + version "1.10.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893" dependencies: memory-fs "~0.4.1" mime "^1.3.4" @@ -7365,19 +7450,21 @@ webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0: range-parser "^1.0.3" webpack-dev-server@^2.2.0-rc.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.2.0.tgz#364967eccaf8ff1d7e1681b7a8cc24fab4ced8a6" + version "2.4.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.4.1.tgz#48556f793186eac0758df94730c034ed9a4d0f12" dependencies: + ansi-html "0.0.7" chokidar "^1.6.0" compression "^1.5.2" connect-history-api-fallback "^1.3.0" express "^4.13.3" + html-entities "^1.2.0" http-proxy-middleware "~0.17.1" opn "4.0.2" portfinder "^1.0.9" serve-index "^1.7.2" sockjs "0.3.18" - sockjs-client "1.1.1" + sockjs-client "1.1.2" spdy "^3.4.1" strip-ansi "^3.0.0" supports-color "^3.1.1" @@ -7434,8 +7521,8 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" when@^3.7.5: - version "3.7.7" - resolved "https://registry.yarnpkg.com/when/-/when-3.7.7.tgz#aba03fc3bb736d6c88b091d013d8a8e590d84718" + version "3.7.8" + resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" whet.extend@~0.9.9: version "0.9.9" @@ -7513,9 +7600,9 @@ write-file-stdout@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/write-file-stdout/-/write-file-stdout-0.0.2.tgz#c252d7c7c5b1b402897630e3453c7bfe690d9ca1" -ws@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" +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" @@ -7619,5 +7706,5 @@ zip-stream@^1.1.0: readable-stream "^2.0.0" zone.js@^0.7.2: - version "0.7.6" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.6.tgz#fbbc39d3e0261d0986f1ba06306eb3aeb0d22009" + version "0.7.7" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620"