diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..0782987 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "./node_modules/typescript/lib" +} \ No newline at end of file diff --git a/README.md b/README.md index 4163254..08a2e66 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ RxJS powered state management for Angular applications, inspired by Redux on top of Angular. Core tenets: - State is a single immutable data structure - Actions describe state changes -- Pure functions called reducers take the previous state and the next action to compute the new state +- Pure functions called reducers take previous slices of state and the next action to compute the new state - State accessed with the `Store`, an observable of state and an observer of actions These core principles enable building components that can use the `OnPush` change detection strategy @@ -57,7 +57,7 @@ export const INCREMENT = 'INCREMENT'; export const DECREMENT = 'DECREMENT'; export const RESET = 'RESET'; -export const counterReducer: ActionReducer = (state: number = 0, action: Action) => { +export function counterReducer(state: number = 0, action: Action): number { switch (action.type) { case INCREMENT: return state + 1; @@ -74,7 +74,7 @@ export const counterReducer: ActionReducer = (state: number = 0, action: } ``` -In your app's main module, import those reducers and use the `StoreModule.provideStore(reducers)` +In your app's main module, import those reducers and use the `StoreModule.forRoot(reducers)` function to provide them to Angular's injector: ```ts @@ -85,7 +85,7 @@ import { counterReducer } from './counter'; @NgModule({ imports: [ BrowserModule, - StoreModule.provideStore({ counter: counterReducer }) + StoreModule.forRoot({ counter: counterReducer }) ] }) export class AppModule {} diff --git a/docs/action-reducers.md b/docs/action-reducers.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/actions.md b/docs/actions.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/store-module.md b/docs/store-module.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/store.md b/docs/store.md new file mode 100644 index 0000000..e69de29 diff --git a/index.ts b/index.ts index cb264dc..f22ba32 100644 --- a/index.ts +++ b/index.ts @@ -1,6 +1,8 @@ -export * from './src/dispatcher'; -export * from './src/ng2'; -export * from './src/reducer'; -export * from './src/state'; -export * from './src/store'; -export * from './src/utils'; +import * as __private_export__ from './src/private_export'; + +export { Action, ActionReducer, ActionReducerMap, ActionReducerFactory } from './src/models'; +export { StoreModule } from './src/store_module'; +export { Store } from './src/store'; +export { combineReducers, compose } from './src/utils'; +export { __private_export__ }; + diff --git a/package.json b/package.json index 5b8dae4..25af5e4 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "scripts": { "karma": "karma start --single-run", "test:unit": "node tests.js", + "test:unit:coverage": "nyc npm run test:unit", "test:ngc": "ngc -p ./spec/ngc/tsconfig.ngc.json", "test": "npm run test:unit && npm run test:ngc", "clean:pre": "rimraf release", @@ -35,38 +36,40 @@ }, "homepage": "https://github.com/ngrx/store#readme", "peerDependencies": { - "@angular/core": "^2.1.0", + "@angular/core": "4.0.0-rc.1", "@ngrx/core": "^1.1.0", - "rxjs": "^5.0.0-beta.12" + "rxjs": "^5.0.0" }, "devDependencies": { - "@angular/common": "^2.1.0", - "@angular/compiler": "^2.1.0", - "@angular/compiler-cli": "^2.1.0", - "@angular/core": "^2.1.0", - "@angular/platform-browser": "^2.1.0", - "@angular/platform-browser-dynamic": "^2.1.0", - "@angular/platform-server": "^2.1.0", + "@angular/common": "4.0.0-rc.1", + "@angular/compiler": "4.0.0-rc.1", + "@angular/compiler-cli": "4.0.0-rc.1", + "@angular/core": "4.0.0-rc.1", + "@angular/http": "4.0.0-rc.1", + "@angular/platform-browser": "4.0.0-rc.1", + "@angular/platform-browser-dynamic": "4.0.0-rc.1", + "@angular/platform-server": "4.0.0-rc.1", "@ngrx/core": "^1.2.0", - "@types/jasmine": "^2.2.33", - "@types/node": "^6.0.38", - "awesome-typescript-loader": "^2.2.1", + "@types/jasmine": "^2.5.42", + "@types/node": "^7.0.5", + "awesome-typescript-loader": "^3.0.4-rc.2", "core-js": "^2.4.1", "cpy-cli": "^1.0.1", - "istanbul-instrumenter-loader": "^0.2.0", - "jasmine": "^2.5.2", - "nyc": "^8.3.2", + "istanbul-instrumenter-loader": "^2.0.0", + "jasmine": "^2.5.3", + "jasmine-marbles": "^0.0.2", + "nyc": "^10.1.2", "rimraf": "^2.5.4", - "rollup": "^0.34.13", - "rxjs": "^5.0.0-beta.11", - "ts-loader": "^0.8.2", - "ts-node": "^1.6.1", - "tslint": "^3.15.1", - "tslint-loader": "^2.1.5", - "typescript": "^2.0.2", + "rollup": "^0.41.4", + "rxjs": "^5.1.0", + "ts-loader": "^2.0.0", + "ts-node": "^2.1.0", + "tslint": "^4.4.2", + "tslint-loader": "^3.3.0", + "typescript": "^2.1.6", "uglifyjs": "^2.4.10", - "webpack": "^2.1.0-beta.21", - "zone.js": "^0.6.17" + "webpack": "^2.2.1", + "zone.js": "^0.7.6" }, "nyc": { "extension": [ diff --git a/spec/edge.spec.ts b/spec/edge.spec.ts index de15906..d922c33 100644 --- a/spec/edge.spec.ts +++ b/spec/edge.spec.ts @@ -1,8 +1,7 @@ -import {ReflectiveInjector} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; -import {todos, todoCount} from './fixtures/edge_todos'; - -import {Store, StoreModule, Dispatcher, State, Action, combineReducers} from '../'; +import { Observable } from 'rxjs/Observable'; +import { todos, todoCount } from './fixtures/edge_todos'; +import { createInjector } from './helpers/injector'; +import { Store, StoreModule } from '../'; interface TestAppSchema { @@ -14,28 +13,20 @@ interface TestAppSchema { interface Todo { } interface TodoAppSchema { - visibilityFilter: string; + todoCount: number; todos: Todo[]; } describe('ngRx Store', () => { - - describe('basic store actions', function() { - - let injector: ReflectiveInjector; - let store: Store; - let dispatcher: Dispatcher; + describe('basic store actions', () => { + let store: Store; beforeEach(() => { - - injector = ReflectiveInjector.resolveAndCreate([ - StoreModule.provideStore({ todos, todoCount }).providers - ]); + const injector = createInjector(StoreModule.forRoot({ todos, todoCount })); store = injector.get(Store); - dispatcher = injector.get(Dispatcher); }); it('should provide an Observable Store', () => { @@ -43,12 +34,11 @@ describe('ngRx Store', () => { }); it('should handle re-entrancy', (done) => { - let todosNextCount = 0; let todosCountNextCount = 0; store.select('todos').subscribe((todos: any[]) => { - todosNextCount++ + todosNextCount++; store.dispatch({ type: 'SET_COUNT', payload: todos.length }) }); @@ -65,7 +55,6 @@ describe('ngRx Store', () => { expect(todosCountNextCount).toBe(2); done(); }, 10); - }); }); }); diff --git a/spec/fixtures/todos.ts b/spec/fixtures/todos.ts index f41b237..2fa0173 100644 --- a/spec/fixtures/todos.ts +++ b/spec/fixtures/todos.ts @@ -1,3 +1,9 @@ +export interface TodoItem { + id: number; + completed: boolean; + text: string; +} + export const ADD_TODO = 'ADD_TODO'; export const COMPLETE_TODO = 'COMPLETE_TODO'; export const SET_VISIBILITY_FILTER = 'SET_VISIBILITY_FILTER'; @@ -20,7 +26,7 @@ export function visibilityFilter(state = VisibilityFilters.SHOW_ALL, {type, payl } }; -export function todos(state = [], {type, payload}) { +export function todos(state: TodoItem[] = [], {type, payload}): TodoItem[] { switch (type) { case ADD_TODO: return [ @@ -32,11 +38,11 @@ export function todos(state = [], {type, payload}) { } ]; case COMPLETE_ALL_TODOS: - return state.map(todo => Object.assign({}, todo, {completed: true})); + return state.map(todo => ({ ...todo, completed: true })); case COMPLETE_TODO: - return state.map(todo => { - return todo.id === payload.id ? Object.assign({}, todo, {completed: true}) : todo; - }); + return state.map(todo => + todo.id === payload.id ? { ...todo, completed: true } : todo + ); default: return state; } diff --git a/spec/helpers/injector.ts b/spec/helpers/injector.ts new file mode 100644 index 0000000..1884cd6 --- /dev/null +++ b/spec/helpers/injector.ts @@ -0,0 +1,18 @@ +import { ReflectiveInjector, ModuleWithProviders } from '@angular/core'; + + +export function createInjector({ ngModule, providers }: ModuleWithProviders): ReflectiveInjector { + const injector = ReflectiveInjector.resolveAndCreate([ ...(providers || []), ngModule ]); + + injector.get(ngModule); + + return injector; +} + +export function createChildInjector(parent: ReflectiveInjector, { ngModule, providers }: ModuleWithProviders): ReflectiveInjector { + const injector = parent.resolveAndCreateChild([ ...(providers || []), ngModule ]); + + injector.get(ngModule); + + return injector; +} \ No newline at end of file diff --git a/spec/integration.spec.ts b/spec/integration.spec.ts index cc455d6..0e0a481 100644 --- a/spec/integration.spec.ts +++ b/spec/integration.spec.ts @@ -1,10 +1,11 @@ -import {Observable} from 'rxjs/Observable'; -import {ReflectiveInjector} from '@angular/core'; import 'rxjs/add/observable/combineLatest'; - -import {Store, StoreModule, Action, combineReducers, INITIAL_REDUCER, INITIAL_STATE} from '../'; -import {counterReducer, INCREMENT, DECREMENT, RESET} from './fixtures/counter'; -import {todos, visibilityFilter, VisibilityFilters, SET_VISIBILITY_FILTER, ADD_TODO, COMPLETE_TODO, COMPLETE_ALL_TODOS} from './fixtures/todos'; +import 'rxjs/add/operator/first'; +import { Observable } from 'rxjs/Observable'; +import { TestBed } from '@angular/core/testing'; +import { Store, StoreModule, Action, combineReducers } from '../'; +import { ReducerManager, INITIAL_STATE, State } from '../src/private_export'; +import { counterReducer, INCREMENT, DECREMENT, RESET } from './fixtures/counter'; +import { todos, visibilityFilter, VisibilityFilters, SET_VISIBILITY_FILTER, ADD_TODO, COMPLETE_TODO, COMPLETE_ALL_TODOS } from './fixtures/todos'; interface Todo { id: number; @@ -20,22 +21,23 @@ interface TodoAppSchema { describe('ngRx Integration spec', () => { describe('todo integration spec', function() { - - let injector: ReflectiveInjector; let store: Store; - let currentState: TodoAppSchema; + let state: State; - const rootReducer = combineReducers({ todos, visibilityFilter }); - const initialValue = { todos: [], visibilityFilter: VisibilityFilters.SHOW_ALL }; + const initialState = { todos: [], visibilityFilter: VisibilityFilters.SHOW_ALL }; + const reducers = { todos, visibilityFilter }; - injector = ReflectiveInjector.resolveAndCreate([ - StoreModule.provideStore(rootReducer, initialValue).providers - ]); + beforeEach(() => { + spyOn(reducers, 'todos').and.callThrough(); - store = injector.get(Store); + TestBed.configureTestingModule({ + imports: [ + StoreModule.forRoot(reducers, { initialState }), + ] + }); - store.subscribe(state => { - currentState = state; + store = TestBed.get(Store); + state = TestBed.get(State); }); it('should successfully instantiate', () => { @@ -43,66 +45,58 @@ describe('ngRx Integration spec', () => { }); it('should combine reducers automatically if a key/value map is provided', () => { - const reducers = { test: function(){} }; - spyOn(reducers, 'test'); const action = { type: 'Test Action' }; - const reducer = ReflectiveInjector.resolveAndCreate([ StoreModule.provideStore(reducers).providers ]).get(INITIAL_REDUCER); - - expect(reducer).toBeDefined(); - expect(typeof reducer === 'function').toBe(true); + const reducer$: ReducerManager = TestBed.get(ReducerManager); - reducer(undefined, action); - - expect(reducers.test).toHaveBeenCalledWith(undefined, action); - }); + reducer$.first().subscribe(reducer => { + expect(reducer).toBeDefined(); + expect(typeof reducer === 'function').toBe(true); - it('should probe the reducer to resolve the initial state if no initial state is provided', () => { - const reducer = () => 2; - const initialState = ReflectiveInjector.resolveAndCreate([ StoreModule.provideStore(reducer).providers ]).get(INITIAL_STATE); + reducer({ todos: [] }, action); - expect(initialState).toBe(2); + expect(reducers.todos).toHaveBeenCalledWith([], action); + }); }); it('should use a provided initial state', () => { - const reducer = () => 2; - const initialState = ReflectiveInjector.resolveAndCreate([ StoreModule.provideStore(reducer, 3).providers ]).get(INITIAL_STATE); + const resolvedInitialState = TestBed.get(INITIAL_STATE); - expect(initialState).toBe(3); + expect(resolvedInitialState).toEqual(initialState); }); it('should start with no todos and showing all filter', () => { - expect(currentState.todos.length).toEqual(0); - expect(currentState.visibilityFilter).toEqual(VisibilityFilters.SHOW_ALL); + expect(state.value.todos.length).toEqual(0); + expect(state.value.visibilityFilter).toEqual(VisibilityFilters.SHOW_ALL); }); it('should add a todo', () => { store.dispatch({ type: ADD_TODO, payload: { text: 'first todo' } }); - expect(currentState.todos.length).toEqual(1); - expect(currentState.todos[0].text).toEqual('first todo'); - expect(currentState.todos[0].completed).toEqual(false); - expect(currentState.todos[0].id).toEqual(1); + expect(state.value.todos.length).toEqual(1); + expect(state.value.todos[0].text).toEqual('first todo'); + expect(state.value.todos[0].completed).toEqual(false); }); it('should add another todo', () => { + store.dispatch({ type: ADD_TODO, payload: { text: 'first todo' } }); store.dispatch({ type: ADD_TODO, payload: { text: 'second todo' } }); - expect(currentState.todos.length).toEqual(2); - expect(currentState.todos[1].text).toEqual('second todo'); - expect(currentState.todos[1].completed).toEqual(false); - expect(currentState.todos[1].id).toEqual(2); + expect(state.value.todos.length).toEqual(2); + expect(state.value.todos[1].text).toEqual('second todo'); + expect(state.value.todos[1].completed).toEqual(false); }); it('should complete the first todo', () => { - store.dispatch({ type: COMPLETE_TODO, payload: { id: 1 } }); - expect(currentState.todos.length).toEqual(2); + store.dispatch({ type: ADD_TODO, payload: { text: 'first todo' } }); + store.dispatch({ type: COMPLETE_TODO, payload: { id: state.value.todos[0].id } }); - expect(currentState.todos[0].text).toEqual('first todo'); - expect(currentState.todos[0].completed).toEqual(true); - expect(currentState.todos[0].id).toEqual(1); + expect(state.value.todos[0].completed).toEqual(true); }); it('should use visibilityFilter to filter todos', () => { + store.dispatch({ type: ADD_TODO, payload: { text: 'first todo' } }); + store.dispatch({ type: ADD_TODO, payload: { text: 'second todo' } }); + store.dispatch({ type: COMPLETE_TODO, payload: { id: state.value.todos[0].id } }); const filterVisibleTodos = (visibilityFilter, todos) => { let predicate; diff --git a/spec/modules.spec.ts b/spec/modules.spec.ts new file mode 100644 index 0000000..f9397e5 --- /dev/null +++ b/spec/modules.spec.ts @@ -0,0 +1,32 @@ +import 'rxjs/add/operator/take'; +import { zip } from 'rxjs/observable/zip'; +import { ReflectiveInjector } from '@angular/core'; +import { createInjector, createChildInjector } from './helpers/injector'; +import { StoreModule, Store } from '../'; + + +describe('Nested Store Modules', () => { + let store: Store; + + beforeEach(() => { + const parentReducers = { stateKey: () => 'root' }; + const featureReducers = { stateKey: () => 'child' }; + + const rootInjector = createInjector(StoreModule.forRoot(parentReducers)); + const featureInjector = createChildInjector(rootInjector, StoreModule.forFeature('inner', featureReducers)); + + store = rootInjector.get(Store); + }); + + it('should nest the child module in the root store object', () => { + store.take(1).subscribe(state => { + expect(state).toEqual({ + stateKey: 'root', + inner: { + stateKey: 'child' + } + }); + }); + }); +}); + diff --git a/spec/ngc/main.ts b/spec/ngc/main.ts index 77baa54..14739d9 100644 --- a/spec/ngc/main.ts +++ b/spec/ngc/main.ts @@ -1,23 +1,44 @@ import { NgModule, Component } from '@angular/core'; import { platformDynamicServer } from '@angular/platform-server'; import { BrowserModule } from '@angular/platform-browser'; -import { Store, StoreModule } from '../../'; +import { Store, StoreModule, combineReducers } from '../../'; import { counterReducer, INCREMENT, DECREMENT } from '../fixtures/counter'; +import { todos } from '../fixtures/todos'; import { Observable } from 'rxjs/Observable'; +@Component({ + selector: 'ngc-spec-child-component', + template: ` + + ` +}) +export class NgcSpecChildComponent { } + +@NgModule({ + imports: [ + StoreModule.forFeature('feature', { todos: todos }) + ], + declarations: [ + NgcSpecChildComponent, + ], + exports: [ + NgcSpecChildComponent, + ] +}) +export class FeatureModule { } + export interface AppState { count: number; } -export const storeConfig = {count: counterReducer}; -export const initialState = { count : 0 }; - @Component({ selector: 'ngc-spec-component', template: ` Count : {{ count | async }} + + ` }) export class NgcSpecComponent { @@ -36,7 +57,11 @@ export class NgcSpecComponent { @NgModule({ imports: [ BrowserModule, - StoreModule.provideStore(storeConfig, initialState) + StoreModule.forRoot({ count: counterReducer }, { + initialState: { count : 0 }, + reducerFactory: combineReducers + }), + FeatureModule ], declarations: [NgcSpecComponent], bootstrap: [NgcSpecComponent] diff --git a/spec/state.spec.ts b/spec/state.spec.ts index af73f84..708a983 100644 --- a/spec/state.spec.ts +++ b/spec/state.spec.ts @@ -1,34 +1,23 @@ import {Observable} from 'rxjs/Observable'; import {Subject} from 'rxjs/Subject'; import {ReflectiveInjector} from '@angular/core'; - -import {Dispatcher, State, Reducer, Action, provideStore, StoreModule} from '../'; +import { createInjector } from './helpers/injector'; +import { StoreModule, Store } from '../'; describe('ngRx State', () => { - const Reducer = { reduce: t => t }; const initialState = 123; + const reducer = jasmine.createSpy('reducer').and.returnValue(initialState); let injector: ReflectiveInjector; - let state: State; - let dispatcher: Dispatcher; beforeEach(() => { - spyOn(Reducer, 'reduce').and.callThrough(); - - injector = ReflectiveInjector.resolveAndCreate([ - StoreModule.provideStore(Reducer.reduce, initialState).providers - ]); - - state = injector.get(State); - dispatcher = injector.get(Dispatcher); + injector = createInjector(StoreModule.forRoot({ key: reducer }, { initialState: { key: initialState } })); }); it('should call the reducer to scan over the dispatcher', function() { + injector.get(Store); - state.subscribe(); - - expect(Reducer.reduce).toHaveBeenCalledWith(initialState, { type: Dispatcher.INIT }); - + expect(reducer).toHaveBeenCalledWith(initialState, { type: '@ngrx/store/init' }); }); }); diff --git a/spec/store.spec.ts b/spec/store.spec.ts index 01c8c51..e72547c 100644 --- a/spec/store.spec.ts +++ b/spec/store.spec.ts @@ -1,11 +1,13 @@ import 'rxjs/add/operator/take'; -import {Observable} from 'rxjs/Observable'; -import {ReflectiveInjector} from '@angular/core'; -import { hot, expectObservable } from './helpers/marble-testing'; - -import {Store, Dispatcher, State, Action, combineReducers, StoreModule} from '../'; +import { Observable } from 'rxjs/Observable'; +import { ReflectiveInjector } from '@angular/core'; +import { hot } from 'jasmine-marbles'; +import { createInjector } from './helpers/injector'; +import {Store, Action, combineReducers, StoreModule} from '../'; +import { ActionsSubject } from '../src/private_export'; import {counterReducer, INCREMENT, DECREMENT, RESET} from './fixtures/counter'; + interface TestAppSchema { counter1: number; counter2: number; @@ -27,23 +29,22 @@ describe('ngRx Store', () => { let injector: ReflectiveInjector; let store: Store; - let dispatcher: Dispatcher; + let dispatcher: ActionsSubject; + let initialState: any; beforeEach(() => { - const rootReducer = combineReducers({ + const reducers = { counter1: counterReducer, counter2: counterReducer, counter3: counterReducer - }); + }; - const initialValue = { counter1: 0, counter2: 1 }; + initialState = { counter1: 0, counter2: 1 }; - injector = ReflectiveInjector.resolveAndCreate([ - StoreModule.provideStore(rootReducer, initialValue).providers - ]); + injector = createInjector(StoreModule.forRoot(reducers, { initialState })); store = injector.get(Store); - dispatcher = injector.get(Dispatcher); + dispatcher = injector.get(ActionsSubject); }); it('should provide an Observable Store', () => { @@ -59,26 +60,39 @@ describe('ngRx Store', () => { e: { type: INCREMENT } }; - it('should let you select state with a key name or selector function', function() { + it('should let you select state with a key name', function() { const counterSteps = hot(actionSequence, actionValues); counterSteps.subscribe((action) => store.dispatch(action)); const counterStateWithString = store.select('counter1'); + + const stateSequence = 'i-v--w--x--y--z'; + const counter1Values = { i: 0, v: 1, w: 2, x: 1, y: 0, z: 1 }; + + expect(counterStateWithString).toBeObservable(hot(stateSequence, counter1Values)); + + }); + + it('should let you select state with a selector function', function() { + + const counterSteps = hot(actionSequence, actionValues); + + counterSteps.subscribe((action) => store.dispatch(action)); + const counterStateWithFunc = store.select(s => s.counter1); const stateSequence = 'i-v--w--x--y--z'; const counter1Values = { i: 0, v: 1, w: 2, x: 1, y: 0, z: 1 }; - expectObservable(counterStateWithString).toBe(stateSequence, counter1Values); - expectObservable(counterStateWithFunc).toBe(stateSequence, counter1Values); + expect(counterStateWithFunc).toBeObservable(hot(stateSequence, counter1Values)); }); it('should correctly lift itself', function() { - const result = store.select('t'); + const result = store.select('counter1'); expect(result instanceof Store).toBe(true); @@ -107,7 +121,7 @@ describe('ngRx Store', () => { const stateSequence = 'i-v--w--x--y--z'; const counter1Values = { i: 0, v: 1, w: 2, x: 1, y: 0, z: 1 }; - expectObservable(counterState).toBe(stateSequence, counter1Values); + expect(counterState).toBeObservable(hot(stateSequence, counter1Values)); }); @@ -115,15 +129,14 @@ describe('ngRx Store', () => { const counterSteps = hot(actionSequence, actionValues); - counterSteps.subscribe((action) => dispatcher.dispatch(action)); + counterSteps.subscribe((action) => dispatcher.next(action)); const counterState = store.select('counter1'); const stateSequence = 'i-v--w--x--y--z'; const counter1Values = { i: 0, v: 1, w: 2, x: 1, y: 0, z: 1 }; - expectObservable(counterState).toBe(stateSequence, counter1Values); - + expect(counterState).toBeObservable(hot(stateSequence, counter1Values)); }); @@ -137,33 +150,9 @@ describe('ngRx Store', () => { const counter2State = store.select('counter2'); const stateSequence = 'i-v--w--x--y--z'; - const counter1Values = { i: 0, v: 1, w: 2, x: 1, y: 0, z: 1 }; const counter2Values = { i: 1, v: 2, w: 3, x: 2, y: 0, z: 1 }; - expectObservable(counter1State).toBe(stateSequence, counter1Values); - expectObservable(counter2State).toBe(stateSequence, counter2Values); - - }); - - it('should allow you to add a reducer later', function() { - - let currentState; - - store.subscribe(state => { - currentState = state; - }); - - expect(currentState).toEqual({counter1: 0, counter2: 1, counter3: 0}); - store.dispatch({type: INCREMENT}); - expect(currentState).toEqual({counter1: 1, counter2: 2, counter3: 1}); - - store.replaceReducer(combineReducers({ counter1: counterReducer, dynamicCounter: counterReducer})); - - expect(currentState).toEqual({ counter1: 1, dynamicCounter: 0 }); - - store.dispatch({type: INCREMENT}); - - expect(currentState).toEqual({ counter1: 2, dynamicCounter: 1 }); + expect(counter2State).toBeObservable(hot(stateSequence, counter2Values)); }); @@ -191,5 +180,15 @@ describe('ngRx Store', () => { expect(storeSubscription.closed).toBe(false); expect(dispatcherSubscription.closed).toBe(false); }); + + it('should complete if the dispatcher is destroyed', () => { + const storeSubscription = store.subscribe(); + const dispatcherSubscription = dispatcher.subscribe(); + + dispatcher.ngOnDestroy(); + + expect(storeSubscription.closed).toBe(true); + expect(dispatcherSubscription.closed).toBe(true); + }); }); }); diff --git a/src/actions_subject.ts b/src/actions_subject.ts new file mode 100644 index 0000000..db73baf --- /dev/null +++ b/src/actions_subject.ts @@ -0,0 +1,36 @@ +import { Injectable, OnDestroy, Provider } from '@angular/core'; +import { BehaviorSubject } from 'rxjs/BehaviorSubject'; +import { Observable } from 'rxjs/Observable'; +import { Observer } from 'rxjs/Observer'; +import { Action } from './models'; + + +@Injectable() +export class ActionsSubject extends BehaviorSubject implements OnDestroy { + static readonly INIT = '@ngrx/store/init'; + + constructor() { + super({ type: ActionsSubject.INIT }); + } + + next(action: Action): void { + if (typeof action === 'undefined') { + throw new Error(`Actions must be objects`); + } + else if (typeof action.type === 'undefined') { + throw new Error(`Actions must have a type property`); + } + + super.next(action); + } + + complete() { /* noop */ } + + ngOnDestroy() { + super.complete(); + } +} + +export const ACTIONS_SUBJECT_PROVIDERS: Provider[] = [ + ActionsSubject +]; diff --git a/src/dispatcher.ts b/src/dispatcher.ts deleted file mode 100644 index 98934b9..0000000 --- a/src/dispatcher.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { BehaviorSubject } from 'rxjs/BehaviorSubject'; - -export interface Action { - type: string; - payload?: any; -} - -export class Dispatcher extends BehaviorSubject { - static INIT = '@ngrx/store/init'; - - constructor() { - super({ type: Dispatcher.INIT }); - } - - dispatch(action: Action): void { - this.next(action); - } - - complete() { - // noop - } -} diff --git a/src/models.ts b/src/models.ts new file mode 100644 index 0000000..221016c --- /dev/null +++ b/src/models.ts @@ -0,0 +1,22 @@ +export interface Action { + readonly type: string; +} + +export interface ActionReducer { + (state: Readonly | undefined, action: Readonly): T; +} + +export type ActionReducerMap = { + [p in keyof T]: ActionReducer; +}; + +export interface ActionReducerFactory { + (reducerMap: ActionReducerMap, initialState?: Partial): ActionReducer; +} + +export interface StoreFeature { + key: string; + reducers: ActionReducerMap; + reducerFactory: ActionReducerFactory; + initialState: T | undefined; +} diff --git a/src/ng2.ts b/src/ng2.ts deleted file mode 100644 index 2932018..0000000 --- a/src/ng2.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { OpaqueToken, NgModule, ModuleWithProviders } from '@angular/core'; - -import { Reducer } from './reducer'; -import { Dispatcher } from './dispatcher'; -import { Store } from './store'; -import { State } from './state'; -import { combineReducers } from './utils'; - -export const INITIAL_REDUCER = new OpaqueToken('Token ngrx/store/reducer'); -export const INITIAL_STATE = new OpaqueToken('Token ngrx/store/initial-state'); - -export const _INITIAL_REDUCER = new OpaqueToken('Token _ngrx/store/reducer'); -export const _INITIAL_STATE = new OpaqueToken('Token _ngrx/store/initial-state'); - -export function _initialReducerFactory(reducer) { - if (typeof reducer === 'function') { - return reducer; - } - return combineReducers(reducer); -} - -export function _initialStateFactory(initialState, reducer) { - if (!initialState) { - return reducer(undefined, { type: Dispatcher.INIT }); - } - return initialState; -} - -export function _storeFactory(dispatcher, reducer, state$) { - return new Store(dispatcher, reducer, state$); -} - -export function _stateFactory(initialState: any, dispatcher: Dispatcher, reducer: Reducer) { - return new State(initialState, dispatcher, reducer); -} - -export function _reducerFactory(dispatcher, reducer) { - return new Reducer(dispatcher, reducer); -}; - -/** - * @deprecated, use StoreModule.provideStore instead! - */ -export function provideStore(_reducer: any, _initialState?: any): any[] { - return [ - Dispatcher, - { provide: Store, useFactory: _storeFactory, deps: [Dispatcher, Reducer, State] }, - { provide: Reducer, useFactory: _reducerFactory, deps: [Dispatcher, INITIAL_REDUCER] }, - { provide: State, useFactory: _stateFactory, deps: [INITIAL_STATE, Dispatcher, Reducer] }, - { provide: INITIAL_REDUCER, useFactory: _initialReducerFactory, deps: [_INITIAL_REDUCER] }, - { provide: INITIAL_STATE, useFactory: _initialStateFactory, deps: [_INITIAL_STATE, INITIAL_REDUCER] }, - { provide: _INITIAL_STATE, useValue: _initialState }, - { provide: _INITIAL_REDUCER, useValue: _reducer } - ]; -} - - -@NgModule({}) -export class StoreModule { - static provideStore(_reducer: any, _initialState?:any): ModuleWithProviders { - return { - ngModule: StoreModule, - providers: provideStore(_reducer, _initialState) - }; - } -} diff --git a/src/private_export.ts b/src/private_export.ts new file mode 100644 index 0000000..b06535b --- /dev/null +++ b/src/private_export.ts @@ -0,0 +1,6 @@ +export { ActionsSubject } from './actions_subject'; +export { ReducerManager, ReducerObservable } from './reducer_manager'; +export { ScannedActionsSubject } from './scanned_actions_subject'; +export { State, StateObservable, reduceState } from './state'; +export { INITIAL_STATE, REDUCER_FACTORY, INITIAL_REDUCERS, STORE_FEATURES } from './tokens'; +export { StoreRootModule, StoreFeatureModule } from './store_module'; diff --git a/src/reducer.ts b/src/reducer.ts deleted file mode 100644 index a7de109..0000000 --- a/src/reducer.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { BehaviorSubject } from 'rxjs/BehaviorSubject'; - -import { Dispatcher, Action } from './dispatcher'; - -export interface ActionReducer { - (state: T, action: Action): T; -} - -export class Reducer extends BehaviorSubject> { - static REPLACE = '@ngrx/store/replace-reducer'; - - constructor(private _dispatcher: Dispatcher, initialReducer: ActionReducer) { - super(initialReducer); - } - - replaceReducer(reducer: ActionReducer) { - this.next(reducer); - } - - next(reducer: ActionReducer) { - super.next(reducer); - this._dispatcher.dispatch({ type: Reducer.REPLACE }); - } -} diff --git a/src/reducer_manager.ts b/src/reducer_manager.ts new file mode 100644 index 0000000..f289ee4 --- /dev/null +++ b/src/reducer_manager.ts @@ -0,0 +1,60 @@ +import { Injectable, Inject, OnDestroy, Provider } from '@angular/core'; +import { BehaviorSubject } from 'rxjs/BehaviorSubject'; +import { Observable } from 'rxjs/Observable'; +import { Action, ActionReducer, ActionReducerMap, ActionReducerFactory, StoreFeature } from './models'; +import { INITIAL_STATE, INITIAL_REDUCERS, REDUCER_FACTORY } from './tokens'; +import { omit } from './utils'; +import { ActionsSubject } from './actions_subject'; + + +export abstract class ReducerObservable extends Observable> { } + +@Injectable() +export class ReducerManager extends BehaviorSubject> implements OnDestroy { + static readonly UPDATE = '@ngrx/store/update-reducers'; + + constructor( + private dispatcher: ActionsSubject, + @Inject(INITIAL_STATE) private initialState: any, + @Inject(INITIAL_REDUCERS) private reducers: ActionReducerMap, + @Inject(REDUCER_FACTORY) private reducerFactory: ActionReducerFactory + ) { + super(reducerFactory(reducers, initialState)); + } + + addFeature({ reducers, reducerFactory, initialState, key }: StoreFeature) { + const reducer = reducerFactory(reducers, initialState); + + this.addReducer(key, reducer); + } + + removeFeature({ key }: StoreFeature) { + this.removeReducer(key); + } + + addReducer(key: string, reducer: ActionReducer) { + this.reducers = { ...this.reducers, [key]: reducer }; + + this.updateReducers(); + } + + removeReducer(key: string) { + this.reducers = omit(this.reducers, key); + + this.updateReducers(); + } + + private updateReducers() { + this.next(this.reducerFactory(this.reducers, this.initialState)); + this.dispatcher.next({ type: ReducerManager.UPDATE }); + } + + ngOnDestroy() { + this.complete(); + } +} + +export const REDUCER_MANAGER_PROVIDERS: Provider[] = [ + ReducerManager, + { provide: ReducerObservable, useExisting: ReducerManager }, +]; diff --git a/src/scanned_actions_subject.ts b/src/scanned_actions_subject.ts new file mode 100644 index 0000000..a66c394 --- /dev/null +++ b/src/scanned_actions_subject.ts @@ -0,0 +1,15 @@ +import { Injectable, Provider, OnDestroy } from '@angular/core'; +import { Subject } from 'rxjs/Subject'; +import { Action } from './models'; + + +@Injectable() +export class ScannedActionsSubject extends Subject implements OnDestroy { + ngOnDestroy() { + this.complete(); + } +} + +export const SCANNED_ACTIONS_SUBJECT_PROVIDERS: Provider[] = [ + ScannedActionsSubject, +]; diff --git a/src/state.ts b/src/state.ts index b55aff1..521247e 100644 --- a/src/state.ts +++ b/src/state.ts @@ -1,22 +1,62 @@ +import { Injectable, Inject, OnDestroy, Provider } from '@angular/core'; +import { BehaviorSubject } from 'rxjs/BehaviorSubject'; +import { Observable } from 'rxjs/Observable'; +import { Subscription } from 'rxjs/Subscription'; +import { queue } from 'rxjs/scheduler/queue'; +import { observeOn } from 'rxjs/operator/observeOn'; +import { startWith } from 'rxjs/operator/startWith'; import { withLatestFrom } from 'rxjs/operator/withLatestFrom'; import { scan } from 'rxjs/operator/scan'; -import { observeOn } from 'rxjs/operator/observeOn'; -import { queue } from 'rxjs/scheduler/queue'; -import { BehaviorSubject } from 'rxjs/BehaviorSubject'; +import { ActionsSubject } from './actions_subject'; +import { Action, ActionReducer } from './models'; +import { INITIAL_STATE } from './tokens'; +import { ReducerObservable } from './reducer_manager'; +import { ScannedActionsSubject } from './scanned_actions_subject'; + -import { Dispatcher } from './dispatcher'; -import { Reducer } from './reducer'; +export abstract class StateObservable extends Observable { } -export class State extends BehaviorSubject { - constructor(_initialState: T, action$: Dispatcher, reducer$: Reducer) { - super(_initialState); +@Injectable() +export class State extends BehaviorSubject implements OnDestroy { + static readonly INIT = '@ngrx/store/init'; - const actionInQueue$ = observeOn.call(action$, queue); - const actionAndReducer$ = withLatestFrom.call(actionInQueue$, reducer$); - const state$ = scan.call(actionAndReducer$, (state, [ action, reducer ]) => { - return reducer(state, action); - }, _initialState); + private stateSubscription: Subscription; - state$.subscribe(value => this.next(value)); + constructor( + actions$: ActionsSubject, + reducer$: ReducerObservable, + scannedActions: ScannedActionsSubject, + @Inject(INITIAL_STATE) initialState: T + ) { + super(initialState); + + const actionsOnQueue$: Observable = observeOn.call(actions$, queue); + const withLatestReducer$: Observable<[ Action, ActionReducer ]> = withLatestFrom.call(actionsOnQueue$, reducer$); + const stateAndAction$: Observable<{ state: T, action: Action }> = scan.call(withLatestReducer$, reduceState, initialState); + + this.stateSubscription = stateAndAction$.subscribe({ + next: ({ state, action }) => { + this.next(state); + scannedActions.next(action); + } + }); + } + + ngOnDestroy() { + this.stateSubscription.unsubscribe(); + this.complete(); } } + +export type StateActionPair = { state: T | undefined, action?: V }; +export function reduceState( + { state }: StateActionPair = { state: undefined }, + [ action, reducer ]: [ V, ActionReducer ] +): StateActionPair { + return { state: reducer(state, action), action }; +} + +export const STATE_PROVIDERS: Provider[] = [ + State, + { provide: StateObservable, useExisting: State }, +]; diff --git a/src/store.ts b/src/store.ts index 1e747d8..19c4186 100644 --- a/src/store.ts +++ b/src/store.ts @@ -1,50 +1,84 @@ -import { select, SelectSignature } from '@ngrx/core'; +import { Injectable, Provider } from '@angular/core'; import { Observer } from 'rxjs/Observer'; import { Observable } from 'rxjs/Observable'; -import { Subscriber } from 'rxjs/Subscriber'; import { Operator } from 'rxjs/Operator'; +import { map } from 'rxjs/operator/map'; +import { pluck } from 'rxjs/operator/pluck'; +import { distinctUntilChanged } from 'rxjs/operator/distinctUntilChanged'; +import { Action, ActionReducer } from './models'; +import { ActionsSubject } from './actions_subject'; +import { StateObservable } from './state'; +import { ReducerManager } from './reducer_manager'; -import { Action } from './dispatcher'; -import { State } from './state'; -import { ActionReducer } from './reducer'; - -export class Store extends Observable implements Observer { +@Injectable() +export class Store extends Observable> implements Observer { constructor( - private _dispatcher: Observer, - private _reducer: Observer>, - state$: Observable + state$: StateObservable, + private actionsObserver: ActionsSubject, + private reducerManager: ReducerManager ) { super(); this.source = state$; } - select: SelectSignature = select.bind(this); + select(mapFn: (state: T) => K): Store; + select(key: a): Store; + select(key1: a, key2: b): Store + select(key1: a, key2: b, key3: c): Store + select(key1: a, key2: b, key3: c, key4: d): Store + select(key1: a, key2: b, key3: c, key4: d, key5: e): Store + select(key1: a, key2: b, key3: c, key4: d, key5: e, key6: f): Store + select(pathOrMapFn: ((state: T) => any) | string, ...paths: string[]): Store { + let mapped$: Store; + + if (typeof pathOrMapFn === 'string') { + mapped$ = pluck.call(this, pathOrMapFn, ...paths); + } + else if (typeof pathOrMapFn === 'function') { + mapped$ = map.call(this, pathOrMapFn); + } + else { + throw new TypeError(`Unexpected type '${ typeof pathOrMapFn }' in select operator,` + + ` expected 'string' or 'function'`); + } + + return distinctUntilChanged.call(mapped$); + } lift(operator: Operator): Store { - const store = new Store(this._dispatcher, this._reducer, this); + const store = new Store(this, this.actionsObserver, this.reducerManager); store.operator = operator; - return store; - } - replaceReducer(reducer: ActionReducer) { - this._reducer.next(reducer); + return store; } - dispatch(action: Action) { - this._dispatcher.next(action); + dispatch(action: V) { + this.actionsObserver.next(action); } next(action: Action) { - this._dispatcher.next(action); + this.actionsObserver.next(action); } error(err: any) { - this._dispatcher.error(err); + this.actionsObserver.error(err); } complete() { - // noop + this.actionsObserver.complete(); + } + + addReducer(key: string, reducer: ActionReducer) { + this.reducerManager.addReducer(key, reducer); + } + + removeReducer(key: Key) { + this.reducerManager.removeReducer(key); } } + +export const STORE_PROVIDERS: Provider[] = [ + Store +]; diff --git a/src/store_module.ts b/src/store_module.ts new file mode 100644 index 0000000..64b60e8 --- /dev/null +++ b/src/store_module.ts @@ -0,0 +1,73 @@ +import { NgModule, Inject, ModuleWithProviders, OnDestroy } from '@angular/core'; +import { Action, ActionReducerMap, ActionReducerFactory, StoreFeature } from './models'; +import { combineReducers } from './utils'; +import { INITIAL_STATE, INITIAL_REDUCERS, REDUCER_FACTORY, STORE_FEATURES } from './tokens'; +import { ACTIONS_SUBJECT_PROVIDERS } from './actions_subject'; +import { REDUCER_MANAGER_PROVIDERS, ReducerManager } from './reducer_manager'; +import { SCANNED_ACTIONS_SUBJECT_PROVIDERS } from './scanned_actions_subject'; +import { STATE_PROVIDERS } from './state'; +import { STORE_PROVIDERS } from './store'; + + + +@NgModule({ }) +export class StoreRootModule { + +} + +@NgModule({ }) +export class StoreFeatureModule implements OnDestroy { + constructor( + @Inject(STORE_FEATURES) private features: StoreFeature[], + private reducerManager: ReducerManager + ) { + features.forEach(feature => reducerManager.addFeature(feature)); + } + + ngOnDestroy() { + this.features.forEach(feature => this.reducerManager.removeFeature(feature)); + } +} + +export type StoreConfig = { initialState?: T, reducerFactory?: ActionReducerFactory }; + +@NgModule({ }) +export class StoreModule { + static forRoot(reducers: ActionReducerMap, config?: StoreConfig): ModuleWithProviders; + static forRoot(reducers: ActionReducerMap, config?: StoreConfig): ModuleWithProviders; + static forRoot(reducers: ActionReducerMap, config: StoreConfig = { }): ModuleWithProviders { + return { + ngModule: StoreRootModule, + providers: [ + { provide: INITIAL_STATE, useValue: config.initialState }, + { provide: INITIAL_REDUCERS, useValue: reducers }, + { provide: REDUCER_FACTORY, useValue: config.reducerFactory ? config.reducerFactory : combineReducers }, + ACTIONS_SUBJECT_PROVIDERS, + REDUCER_MANAGER_PROVIDERS, + SCANNED_ACTIONS_SUBJECT_PROVIDERS, + STATE_PROVIDERS, + STORE_PROVIDERS, + ] + }; + } + + static forFeature(featureName: string, reducers: ActionReducerMap, config?: StoreConfig): ModuleWithProviders; + static forFeature(featureName: string, reducers: ActionReducerMap, config?: StoreConfig): ModuleWithProviders; + static forFeature(featureName: string, reducers: ActionReducerMap, config: StoreConfig = {}): ModuleWithProviders { + return { + ngModule: StoreFeatureModule, + providers: [ + { + provide: STORE_FEATURES, + multi: true, + useValue: >{ + key: featureName, + reducers: reducers, + reducerFactory: config.reducerFactory ? config.reducerFactory : combineReducers, + initialState: config.initialState + } + } + ] + }; + } +} diff --git a/src/tokens.ts b/src/tokens.ts new file mode 100644 index 0000000..2f1099b --- /dev/null +++ b/src/tokens.ts @@ -0,0 +1,7 @@ +import { OpaqueToken } from '@angular/core'; + + +export const INITIAL_STATE = new OpaqueToken('@ngrx/store Initial State'); +export const REDUCER_FACTORY = new OpaqueToken('@ngrx/store Reducer Factory'); +export const INITIAL_REDUCERS = new OpaqueToken('@ngrx/store Initial Reducers'); +export const STORE_FEATURES = new OpaqueToken('@ngrx/store Store Features'); diff --git a/src/utils.ts b/src/utils.ts index 1710f55..e92d518 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,6 +1,9 @@ -import {ActionReducer} from './reducer'; +import { Action, ActionReducer, ActionReducerMap, ActionReducerFactory } from './models'; -export function combineReducers(reducers: any): ActionReducer { + +export function combineReducers(reducers: ActionReducerMap, initialState?: Partial): ActionReducer; +export function combineReducers(reducers: ActionReducerMap, initialState?: Partial): ActionReducer; +export function combineReducers(reducers: any, initialState: any = {}): ActionReducer { const reducerKeys = Object.keys(reducers); const finalReducers = {}; @@ -13,7 +16,7 @@ export function combineReducers(reducers: any): ActionReducer { const finalReducerKeys = Object.keys(finalReducers); - return function combination(state = {}, action) { + return function combination(state = initialState, action) { let hasChanged = false; const nextState = {}; for (let i = 0; i < finalReducerKeys.length; i++) { @@ -28,3 +31,28 @@ export function combineReducers(reducers: any): ActionReducer { return hasChanged ? nextState : state; }; } + +export function omit(object: { [key: string]: any }, keyToRemove: string) { + return Object.keys(object) + .filter(key => key !== keyToRemove) + .reduce((result, key) => result[key] = object[key], {}); +} + +export function compose(): (i: A) => A; +export function compose(b: (i: A) => B): (i: A) => B; +export function compose(c: (i: B) => C, b: (i: A) => B): (i: A) => C; +export function compose(d: (i: C) => D, c: (i: B) => C, b: (i: A) => B): (i: A) => D; +export function compose(e: (i: D) => E, d: (i: C) => D, c: (i: B) => C, b: (i: A) => B): (i: A) => E; +export function compose(f: (i: E) => F, e: (i: D) => E, d: (i: C) => D, c: (i: B) => C, b: (i: A) => B): (i: A) => F; +export function compose(...functions) { + return function(arg) { + if (functions.length === 0) { + return arg; + } + + const last = functions[functions.length - 1]; + const rest = functions.slice(0, -1); + + return rest.reduceRight((composed, fn) => fn(composed), last(arg)); + } +} diff --git a/tests.js b/tests.js index b23c1b3..b96b2cb 100644 --- a/tests.js +++ b/tests.js @@ -13,7 +13,6 @@ const runner = new Jasmine(); global.jasmine = runner.jasmine; require('zone.js/dist/jasmine-patch.js'); -require('./spec/helpers/test-helper.ts'); const { getTestBed } = require('@angular/core/testing'); const { ServerTestingModule, platformServerTesting } = require('@angular/platform-server/testing'); diff --git a/tsconfig.json b/tsconfig.json index a520211..2d2ad50 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,6 +13,7 @@ "lib": ["es2015", "dom"], "target": "es5", "skipLibCheck": true, + "strictNullChecks": true, "types": [ "node", "jasmine" diff --git a/yarn.lock b/yarn.lock index a39f50a..d772f8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,68 +1,91 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 -"@angular/common@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-2.1.2.tgz#5c5b37c21d6e573def1670f43962c262bc9be82e" -"@angular/compiler-cli@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-2.1.2.tgz#9c34433af2183f294b9c63a035c785e002edc792" + +"@angular/common@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-4.0.0-rc.1.tgz#b5bc1e14ca97689048277b2f5f8e5f6065018eb9" + +"@angular/compiler-cli@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-4.0.0-rc.1.tgz#48cdcfb691eac2152602f296fb9fa7ffc4bfa5bd" dependencies: - "@angular/tsc-wrapped" "^0.3.0" + "@angular/tsc-wrapped" "4.0.0-rc.1" minimist "^1.2.0" reflect-metadata "^0.1.2" -"@angular/compiler@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-2.1.2.tgz#bd2a6c558de5350bdd43aa8e8de757943ac01d2a" +"@angular/compiler@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-4.0.0-rc.1.tgz#e89f2d76f8800cb599e9dc6c7f8a381e79b92715" -"@angular/core@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-2.1.2.tgz#ce39521643f3d97bc5923d5a7aa76604e973dac8" +"@angular/core@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-4.0.0-rc.1.tgz#7f87b7696b407476e45d6d3c1880a50d5afbb6e3" -"@angular/platform-browser-dynamic@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-2.1.2.tgz#3d51b494cfe0a29354c8c1f28369883679982af4" +"@angular/http@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/http/-/http-4.0.0-rc.1.tgz#66c548eed938933ef22ab706cb6371b58b6bc397" -"@angular/platform-browser@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-2.1.2.tgz#1f07c3a5668ac2381a7324f9001521deede159bc" +"@angular/platform-browser-dynamic@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.0.0-rc.1.tgz#3332caeabe4f29746fff5699701b3bed3e35c480" -"@angular/platform-server@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-2.1.2.tgz#31345f76a055713d418cf4c525f6a1915638500b" +"@angular/platform-browser@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-4.0.0-rc.1.tgz#74e5834c9fd22185851eb15ab1444679f7fe87b0" + +"@angular/platform-server@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-4.0.0-rc.1.tgz#67b28aaca4af046b585f059f9939f9b5eb213900" dependencies: - parse5 "^2.2.1" + parse5 "^3.0.1" + xhr2 "^0.1.4" -"@angular/tsc-wrapped@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@angular/tsc-wrapped/-/tsc-wrapped-0.3.0.tgz#98cdeb5c38d145b187c0ad0397a8d98b217f33f2" +"@angular/tsc-wrapped@4.0.0-rc.1": + version "4.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@angular/tsc-wrapped/-/tsc-wrapped-4.0.0-rc.1.tgz#767ce64d70c66b9d4bd8ba1ef99a47bc02836336" dependencies: - tsickle "^0.1.7" + tsickle "^0.21.0" "@ngrx/core@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ngrx/core/-/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6" -"@types/jasmine@^2.2.33": - version "2.5.36" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.36.tgz#6d804b79a57e9380d766a2680e9362c17d9556d2" +"@types/jasmine@^2.5.42": + version "2.5.43" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.43.tgz#6328a8c26082f2fd84f043c802c9ed7fa110b2dd" + dependencies: + typescript ">=2.1.4" -"@types/node@^6.0.38": - version "6.0.46" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.46.tgz#8d9e48572831f05b11cc4c793754d43437219d62" +"@types/node@^6.0.46": + version "6.0.63" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.63.tgz#e08acbbd5946e0e95990b1c76f3ce5b7882a48eb" -abbrev@1, abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" +"@types/node@^7.0.5": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.5.tgz#96a0f0a618b7b606f1ec547403c00650210bfbb7" -acorn@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +acorn-dynamic-import@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.1.tgz#23f671eb6e650dab277fef477c321b1178a8cca2" + dependencies: + acorn "^4.0.3" + +acorn@^4.0.3, acorn@^4.0.4: + version "4.0.11" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" + +ajv-keywords@^1.1.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" ajv@^4.7.0: - version "4.8.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.8.2.tgz#65486936ca36fea39a1504332a78bebd5d447bdc" + 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" @@ -76,12 +99,18 @@ align-text@^0.1.1, align-text@^0.1.3: repeat-string "^1.5.2" amdefine@>=0.0.4: - version "1.0.0" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.0.tgz#fd17474700cb5cc9c2b709f0be9d23ce3c198c33" + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" + dependencies: + string-width "^1.0.1" ansi-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" ansi-styles@^2.2.1: version "2.2.1" @@ -98,13 +127,15 @@ anymatch@^1.3.0: arrify "^1.0.0" micromatch "^2.1.5" -append-transform@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.3.0.tgz#d6933ce4a85f09445d9ccc4cc119051b7381a813" +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" 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" archy@^1.0.0: version "1.0.0" @@ -117,12 +148,6 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.0 || ^1.1.13" -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - dependencies: - sprintf-js "~1.0.2" - arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -156,8 +181,8 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" asn1.js@^4.0.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.8.1.tgz#3949b7f5fd1e8bedc13be3abebf477f93490c810" + version "4.9.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -185,112 +210,114 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -async@^1.3.0, async@^1.4.0, async@^1.4.2, async@1.x: +async@^1.4.0, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +async@^2.1.2: + version "2.1.5" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc" + dependencies: + lodash "^4.14.0" + async@~0.2.6: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" -async@2.0.0-rc.4: - version "2.0.0-rc.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.0.0-rc.4.tgz#9b7f60724c17962a973f787419e0ebc5571dbad8" - dependencies: - lodash "^4.3.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -awesome-typescript-loader@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-2.2.4.tgz#4185d60c035c25515f9c2a747fa5f69b2a001e9e" +awesome-typescript-loader@^3.0.4-rc.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-3.0.8.tgz#1cd13f3cfd7c0a23c7226c629b1a3b818b9e4bb1" dependencies: colors "^1.1.2" - enhanced-resolve "^2.2.2" - loader-utils "^0.2.6" - lodash "^4.13.1" - object-assign "^4.1.0" - source-map-support "^0.4.0" + enhanced-resolve "^3.1.0" + loader-utils "^1.0.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + object-assign "^4.1.1" + source-map-support "^0.4.11" aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" aws4@^1.2.1: - 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.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de" +babel-code-frame@^6.20.0, babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" dependencies: chalk "^1.1.0" esutils "^2.0.2" - js-tokens "^2.0.0" + js-tokens "^3.0.0" babel-generator@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.18.0.tgz#e4f104cb3063996d9850556a45aae4a022060a07" + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5" dependencies: - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.18.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.23.0" detect-indent "^4.0.0" jsesc "^1.3.0" lodash "^4.2.0" source-map "^0.5.0" + trim-right "^1.0.1" -babel-messages@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" dependencies: - babel-runtime "^6.0.0" + babel-runtime "^6.22.0" -babel-runtime@^6.0.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" +babel-runtime@^6.22.0: + 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.9.5" + regenerator-runtime "^0.10.0" babel-template@^6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" dependencies: - babel-runtime "^6.9.0" - babel-traverse "^6.16.0" - babel-types "^6.16.0" + babel-runtime "^6.22.0" + babel-traverse "^6.23.0" + babel-types "^6.23.0" babylon "^6.11.0" lodash "^4.2.0" -babel-traverse@^6.16.0, babel-traverse@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.18.0.tgz#5aeaa980baed2a07c8c47329cd90c3b90c80f05e" +babel-traverse@^6.18.0, babel-traverse@^6.23.0: + version "6.23.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48" dependencies: - babel-code-frame "^6.16.0" - babel-messages "^6.8.0" - babel-runtime "^6.9.0" - babel-types "^6.18.0" - babylon "^6.11.0" + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.23.0" + babylon "^6.15.0" debug "^2.2.0" globals "^9.0.0" invariant "^2.2.0" lodash "^4.2.0" -babel-types@^6.16.0, babel-types@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.18.0.tgz#1f7d5a73474c59eb9151b2417bbff4e4fce7c3f8" +babel-types@^6.18.0, babel-types@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf" dependencies: - babel-runtime "^6.9.1" + babel-runtime "^6.22.0" esutils "^2.0.2" lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@^6.11.0, babylon@^6.13.0: - version "6.13.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.13.1.tgz#adca350e088f0467647157652bafead6ddb8dfdb" +babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0: + version "6.16.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" balanced-match@^0.4.1: version "0.4.2" @@ -300,13 +327,9 @@ base64-js@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" -Base64@~0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz#ba3a4230708e186705065e66babdd4c35cf60028" - 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" @@ -315,8 +338,8 @@ big.js@^3.1.3: resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" binary-extensions@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" + version "1.8.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" block-stream@*: version "0.0.9" @@ -334,6 +357,20 @@ boom@2.x.x: dependencies: hoek "2.x.x" +boxen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" + dependencies: + ansi-align "^1.1.0" + camelcase "^2.1.0" + chalk "^1.1.1" + cli-boxes "^1.0.0" + filled-array "^1.0.0" + object-assign "^4.0.1" + repeating "^2.0.0" + string-width "^1.0.1" + widest-line "^1.0.0" + brace-expansion@^1.0.0: version "1.1.6" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" @@ -350,8 +387,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" @@ -398,7 +435,7 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@~0.1.4: +browserify-zlib@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" dependencies: @@ -424,6 +461,10 @@ builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + caching-transform@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" @@ -443,7 +484,7 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^2.0.0: +camelcase@^2.0.0, camelcase@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -451,6 +492,10 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" @@ -462,7 +507,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.1.0, chalk@^1.1.1: +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -493,6 +538,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1: dependencies: inherits "^2.0.1" +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -509,19 +558,13 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" code-point-at@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.0.1.tgz#1104cd34f9b5b45d3eba88f1babc1924e1ce35fb" - dependencies: - number-is-nan "^1.0.0" + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" colors@^1.0.3, colors@^1.1.2: version "1.1.2" @@ -547,6 +590,20 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +configstore@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" + dependencies: + dot-prop "^3.0.0" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + object-assign "^4.0.1" + os-tmpdir "^1.0.0" + osenv "^0.1.0" + uuid "^2.0.1" + write-file-atomic "^1.1.2" + xdg-basedir "^2.0.0" + console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -562,8 +619,8 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" convert-source-map@^1.3.0: - 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" core-js@^2.4.0, core-js@^2.4.1: version "2.4.1" @@ -610,6 +667,12 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" +create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + create-hash@^1.1.0, create-hash@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" @@ -661,8 +724,8 @@ currently-unhandled@^0.4.1: array-find-index "^1.0.1" dashdash@^1.12.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.0.tgz#29e486c5418bf0f356034a993d51686a33e84141" + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" dependencies: assert-plus "^1.0.0" @@ -670,7 +733,17 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -debug@^2.2.0, debug@~2.2.0: +debug-log@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + +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" + +debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: @@ -684,10 +757,6 @@ deep-extend@~0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - default-require-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" @@ -715,9 +784,9 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -diff@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" +diff@^3.0.1, diff@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" diffie-hellman@^5.0.0: version "5.0.2" @@ -731,6 +800,18 @@ domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +duplexer2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -738,34 +819,29 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" 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" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" -enhanced-resolve@^0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" +enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.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.2.0" - tapable "^0.1.8" - -enhanced-resolve@^2.2.0, enhanced-resolve@^2.2.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-2.3.0.tgz#a115c32504b6302e85a76269d7a57ccdd962e359" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.3.0" + memory-fs "^0.4.0" object-assign "^4.0.1" - tapable "^0.2.3" + tapable "^0.2.5" errno@^0.1.3: version "0.1.4" @@ -783,25 +859,6 @@ escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -esprima@^2.6.0, esprima@^2.7.1, esprima@2.7.x: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -846,10 +903,6 @@ extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" -fast-levenshtein@~2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2" - filename-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" @@ -864,6 +917,10 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" +filled-array@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" + find-cache-dir@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" @@ -885,19 +942,19 @@ findup-sync@~0.3.0: dependencies: glob "~5.0.0" -for-in@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" +for-in@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.1.tgz#d6c3e3798ceaaa301047b109dedf1b1ae37a0efa" for-own@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" dependencies: - for-in "^0.1.5" + for-in "^1.0.1" foreground-child@^1.3.3, foreground-child@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.3.tgz#94dd6aba671389867de8e57e99f1c2ecfb15c01a" + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" dependencies: cross-spawn "^4" signal-exit "^3.0.0" @@ -907,8 +964,8 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" form-data@~2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.1.tgz#4adf0342e1a79afa1e84c8c320a9ffc82392a1f3" + version "2.1.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" dependencies: asynckit "^0.4.0" combined-stream "^1.0.5" @@ -919,8 +976,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.14" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.14.tgz#558e8cc38643d8ef40fe45158486d0d25758eee4" + 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" @@ -942,13 +999,12 @@ fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: mkdirp ">=0.5 0" rimraf "2" -gauge@~2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46" +gauge@~2.7.1: + 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" - has-color "^0.1.7" has-unicode "^2.0.0" object-assign "^4.1.0" signal-exit "^3.0.0" @@ -993,16 +1049,6 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@^5.0.15, glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^6.0.1: version "6.0.4" resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" @@ -1013,7 +1059,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.0.5, glob@^7.0.6: +glob@^7.0.5, glob@^7.0.6, glob@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -1024,9 +1070,19 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.0.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@~5.0.0: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^9.0.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.12.0.tgz#992ce90828c3a55fa8f16fada177adb64664cf9d" + version "9.16.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80" globby@^4.0.0: version "4.1.0" @@ -1039,17 +1095,37 @@ globby@^4.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.2: - version "4.1.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29" +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -handlebars@^4.0.1, handlebars@^4.0.3: - version "4.0.5" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.5.tgz#92c6ed6bb164110c50d4d8d0fbddc70806c6f8e7" +handlebars@^4.0.3: + 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" @@ -1072,10 +1148,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-color@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -1084,7 +1156,7 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" -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: @@ -1099,20 +1171,21 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +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" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 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" - -http-browserify@^1.3.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.7.0.tgz#33795ade72df88acfbfd36773cefeda764735b20" - dependencies: - Base64 "~0.2.0" - inherits "~2.0.1" + version "2.2.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5" http-signature@~1.1.0: version "1.1.1" @@ -1151,7 +1224,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2: +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1168,8 +1241,8 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" invariant@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.1.tgz#b097010547668c7e337028ebe816ebe36c8a8d54" + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: loose-envify "^1.0.0" @@ -1234,20 +1307,28 @@ is-glob@^2.0.0, is-glob@^2.0.1: is-extglob "^1.0.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" jsonpointer "^4.0.0" xtend "^4.0.0" +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + is-number@^2.0.2, is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" dependencies: kind-of "^3.0.2" +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -1260,6 +1341,18 @@ is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -1268,7 +1361,7 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" -isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -1286,27 +1379,28 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-instrumenter-loader@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-0.2.0.tgz#643e4e5e4e8f9466863a29a977d283ab372c019c" +istanbul-instrumenter-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700" dependencies: - istanbul "0.x.x" - loader-utils "0.x.x" - object-assign "4.x.x" + convert-source-map "^1.3.0" + istanbul-lib-instrument "^1.1.3" + loader-utils "^0.2.16" + object-assign "^4.1.0" -istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.0.tgz#c3f9b6d226da12424064cce87fce0fb57fdfa7a2" +istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0, istanbul-lib-coverage@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212" -istanbul-lib-hook@^1.0.0-alpha.4: - version "1.0.0-alpha.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0-alpha.4.tgz#8c5bb9f6fbd8526e0ae6cf639af28266906b938f" +istanbul-lib-hook@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5" dependencies: - append-transform "^0.3.0" + append-transform "^0.4.0" -istanbul-lib-instrument@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.2.0.tgz#73d5d108ab7568c373fdcb7d01c1d42d565bc8c4" +istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" @@ -1327,47 +1421,34 @@ istanbul-lib-report@^1.0.0-alpha.3: rimraf "^2.4.3" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.0.2.tgz#9e91b0e5ae6ed203f67c69a34e6e98b10bb69a49" +istanbul-lib-source-maps@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f" dependencies: istanbul-lib-coverage "^1.0.0-alpha.0" mkdirp "^0.5.1" rimraf "^2.4.4" source-map "^0.5.3" -istanbul-reports@^1.0.0-alpha.8: - version "1.0.0" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.0.tgz#24b4eb2b1d29d50f103b369bd422f6e640aa0777" +istanbul-reports@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc" dependencies: handlebars "^4.0.3" -istanbul@0.x.x: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - jasmine-core@~2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297" -jasmine@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.5.2.tgz#6283cef7085c095cc25d651e954df004f7e3e421" +jasmine-marbles@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/jasmine-marbles/-/jasmine-marbles-0.0.2.tgz#07d0a1c5b1bc96b1bed316b1c3bd659f8bcee3d6" + dependencies: + lodash.isequal "^4.5.0" + +jasmine@^2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22" dependencies: exit "^0.1.2" glob "^7.0.6" @@ -1379,25 +1460,22 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" -js-tokens@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" - -js-yaml@3.x: - version "3.6.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" +js-tokens@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" 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@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +json-loader@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -1413,16 +1491,16 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" json5@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.0.tgz#9b20715b026cbe3778fd769edccd822d8332a5b2" + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" jsonpointer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" jsprim@^1.2.2: version "1.3.1" @@ -1433,28 +1511,31 @@ jsprim@^1.2.2: verror "1.3.6" kind-of@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" + version "3.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" dependencies: is-buffer "^1.0.2" +latest-version@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" + dependencies: + package-json "^2.0.0" + lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +lazy-req@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" dependencies: invert-kv "^1.0.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -1465,36 +1546,44 @@ load-json-file@^1.0.0: pinkie-promise "^2.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" +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" -loader-utils@^0.2.11, loader-utils@^0.2.6, loader-utils@^0.2.7, loader-utils@0.x.x: - version "0.2.16" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d" +loader-utils@^0.2.16, loader-utils@^0.2.7: + 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" -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" +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.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" -lodash@^4.13.1, lodash@^4.2.0, lodash@^4.3.0: - version "4.16.5" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.5.tgz#77d88feac548009b1a5c4ca7b49ac431ce346ae8" +lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" loose-envify@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8" + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: - js-tokens "^2.0.0" + js-tokens "^3.0.0" loud-rejection@^1.0.0: version "1.6.0" @@ -1503,9 +1592,13 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + lru-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.1.tgz#1343955edaf2e37d9b9e7ee7241e27c4b9fb72be" + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" dependencies: pseudomap "^1.0.1" yallist "^2.0.0" @@ -1528,13 +1621,9 @@ md5-o-matic@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" -memory-fs@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" - -memory-fs@^0.3.0, memory-fs@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20" +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" dependencies: errno "^0.1.3" readable-stream "^2.0.1" @@ -1554,6 +1643,12 @@ meow@^3.6.0: redent "^1.0.0" trim-newlines "^1.0.0" +merge-source-map@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.3.tgz#da1415f2722a5119db07b14c4f973410863a2abf" + dependencies: + source-map "^0.5.3" + micromatch@^2.1.5, micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -1579,39 +1674,39 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@~1.24.0: - version "1.24.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.24.0.tgz#e2d13f939f0016c6e4e9ad25a8652f126c467f0c" +mime-db@~1.26.0: + version "1.26.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" mime-types@^2.1.12, mime-types@~2.1.7: - version "2.1.12" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.12.tgz#152ba256777020dd4663f54c2e7bc26381e71729" + version "2.1.14" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" dependencies: - mime-db "~1.24.0" + mime-db "~1.26.0" minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" -minimatch@^3.0.0, minimatch@^3.0.2, "minimatch@2 || 3": +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" dependencies: brace-expansion "^1.0.0" +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -1621,9 +1716,13 @@ ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + nan@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" + version "2.5.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" nested-error-stacks@^1.0.0, nested-error-stacks@^1.0.1: version "1.0.2" @@ -1631,53 +1730,53 @@ nested-error-stacks@^1.0.0, nested-error-stacks@^1.0.1: dependencies: inherits "~2.0.1" -node-libs-browser@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-1.0.0.tgz#ff8ad6c2cfa78043bdd0091ec07f0aaa581620fc" +node-libs-browser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" dependencies: assert "^1.1.1" - browserify-zlib "~0.1.4" + browserify-zlib "^0.1.4" buffer "^4.3.0" console-browserify "^1.1.0" constants-browserify "^1.0.0" crypto-browserify "^3.11.0" domain-browser "^1.1.1" events "^1.0.0" - http-browserify "^1.3.2" https-browserify "0.0.1" - os-browserify "~0.2.0" + os-browserify "^0.2.0" path-browserify "0.0.0" - process "~0.11.0" + process "^0.11.0" punycode "^1.2.4" - querystring-es3 "~0.2.0" + querystring-es3 "^0.2.0" readable-stream "^2.0.5" stream-browserify "^2.0.1" - string_decoder "~0.10.25" - timers-browserify "^1.0.1" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" tty-browserify "0.0.0" - url "~0.11.0" - util "~0.10.3" + url "^0.11.0" + util "^0.10.3" vm-browserify "0.0.4" node-pre-gyp@^0.6.29: - version "0.6.31" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.31.tgz#d8a00ddaa301a940615dbcc8caad4024d58f6017" + 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" - npmlog "^4.0.0" + npmlog "^4.0.1" rc "~1.1.6" - request "^2.75.0" + request "^2.79.0" rimraf "~2.5.4" semver "~5.3.0" tar "~2.2.1" tar-pack "~3.3.0" -node-uuid@~1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" +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" -nopt@~3.0.6, nopt@3.x: +nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -1696,60 +1795,58 @@ normalize-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" -npmlog@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.0.tgz#e094503961c70c1774eb76692080e8d578a9f88f" +npmlog@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" - gauge "~2.6.0" + gauge "~2.7.1" set-blocking "~2.0.0" number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -nyc@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-8.3.2.tgz#a3b7a590fe1c6c4b2d0e3f24afe28b62bfafd745" +nyc@^10.1.2: + version "10.1.2" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-10.1.2.tgz#ea7acaa20a235210101604f4e7d56d28453b0274" dependencies: archy "^1.0.0" arrify "^1.0.1" caching-transform "^1.0.0" convert-source-map "^1.3.0" + debug-log "^1.0.1" default-require-extensions "^1.0.0" find-cache-dir "^0.1.1" find-up "^1.1.2" foreground-child "^1.5.3" glob "^7.0.6" - istanbul-lib-coverage "^1.0.0" - istanbul-lib-hook "^1.0.0-alpha.4" - istanbul-lib-instrument "^1.1.3" + istanbul-lib-coverage "^1.0.1" + istanbul-lib-hook "^1.0.0" + istanbul-lib-instrument "^1.4.2" istanbul-lib-report "^1.0.0-alpha.3" - istanbul-lib-source-maps "^1.0.2" - istanbul-reports "^1.0.0-alpha.8" + istanbul-lib-source-maps "^1.1.0" + istanbul-reports "^1.0.0" md5-hex "^1.2.0" + merge-source-map "^1.0.2" micromatch "^2.3.11" mkdirp "^0.5.0" resolve-from "^2.0.0" rimraf "^2.5.4" signal-exit "^3.0.1" - spawn-wrap "^1.2.4" - test-exclude "^2.1.3" - yargs "^6.0.0" + spawn-wrap "1.2.4" + test-exclude "^3.3.0" + yargs "^6.6.0" yargs-parser "^4.0.2" oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@4.x.x: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" +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" object.omit@^2.0.0: version "2.0.1" @@ -1758,7 +1855,7 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0, once@1.x: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -1777,22 +1874,11 @@ optimist@^0.6.1, optimist@~0.6.0: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -os-browserify@~0.2.0: +os-browserify@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" -os-homedir@^1.0.1: +os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -1802,6 +1888,26 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +package-json@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" + dependencies: + got "^5.0.0" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + pako@~0.2.0: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -1825,15 +1931,17 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" -parse-json@^2.2.0: +parse-json@^2.1.0, parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" dependencies: error-ex "^1.2.0" -parse5@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-2.2.3.tgz#0c4fc41c1000c5e6b93d48b03f8083837834e9f6" +parse5@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.2.tgz#05eff57f0ef4577fb144a79f8b9a967a6cc44510" + dependencies: + "@types/node" "^6.0.46" path-browserify@0.0.0: version "0.0.0" @@ -1887,9 +1995,9 @@ pkg-dir@^1.0.0: dependencies: find-up "^1.0.0" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" preserve@^0.2.0: version "0.2.0" @@ -1899,7 +2007,7 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -process@~0.11.0: +process@^0.11.0: version "0.11.9" resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" @@ -1921,19 +2029,19 @@ public-encrypt@^4.0.0: parse-asn1 "^5.0.0" randombytes "^2.0.1" -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + 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" -querystring-es3@~0.2.0: +querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -1942,8 +2050,8 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" randomatic@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.5.tgz#5e9ef5f2d573c67bd2b8124ae90b5156e457840b" + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" dependencies: is-number "^2.0.2" kind-of "^3.0.2" @@ -1952,14 +2060,21 @@ randombytes@^2.0.0, randombytes@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" -rc@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" +rc@^1.0.1, rc@^1.1.6, rc@~1.1.6: + 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" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" read-pkg-up@^1.0.1: version "1.0.1" @@ -1976,7 +2091,19 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@~2.1.4: +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.5, readable-stream@^2.1.0, readable-stream@^2.1.4: + 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" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~2.1.4: version "2.1.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" dependencies: @@ -2005,12 +2132,12 @@ redent@^1.0.0: strip-indent "^1.0.1" reflect-metadata@^0.1.2: - version "0.1.8" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.8.tgz#72426d570b60776e3688968bd5ab9537a15cecf6" + version "0.1.10" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a" -regenerator-runtime@^0.9.5: - version "0.9.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz#403d6d40a4bdff9c330dd9392dcbb2d9a8bba1fc" +regenerator-runtime@^0.10.0: + 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" @@ -2019,6 +2146,18 @@ regex-cache@^0.4.2: is-equal-shallow "^0.1.3" is-primitive "^2.0.0" +registry-auth-token@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" + dependencies: + rc "^1.1.6" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" @@ -2033,9 +2172,9 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.75.0: - version "2.76.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.76.0.tgz#be44505afef70360a0436955106be3945d95560e" +request@^2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" dependencies: aws-sign2 "~0.6.0" aws4 "^1.2.1" @@ -2051,12 +2190,12 @@ request@^2.75.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.3.0" stringstream "~0.0.4" tough-cookie "~2.3.0" tunnel-agent "~0.4.1" + uuid "^3.0.0" require-directory@^2.1.1: version "2.1.1" @@ -2070,9 +2209,11 @@ resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" -resolve@^1.1.7, resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@^1.1.7: + version "1.3.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" + dependencies: + path-parse "^1.0.5" right-align@^0.1.1: version "0.1.3" @@ -2080,7 +2221,13 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2: +rimraf@2, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +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: @@ -2090,19 +2237,25 @@ ripemd160@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" -rollup@^0.34.13: - version "0.34.13" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.34.13.tgz#a211cdde31f96cb39e7cb4e35becb15ddc3efa19" +rollup@^0.41.4: + version "0.41.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.4.tgz#a970580176329f9ead86854d7fd4c46de752aef8" dependencies: source-map-support "^0.4.0" -rxjs@^5.0.0-beta.11: - version "5.0.0-rc.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.0.0-rc.1.tgz#9e02b7044da81a2d5e138908d22af77e22d96973" +rxjs@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b" dependencies: symbol-observable "^1.0.1" -semver@^5.0.1, semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5": +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +"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" @@ -2114,9 +2267,13 @@ set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + sha.js@^2.3.6: - version "2.4.5" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.5.tgz#27d171efcc82a118b99639ff581660242b506e7c" + version "2.4.8" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" dependencies: inherits "^2.0.1" @@ -2125,8 +2282,8 @@ signal-exit@^2.0.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-2.1.2.tgz#375879b1f92ebc3b334480d038dc546a6d558564" signal-exit@^3.0.0, signal-exit@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81" + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" slide@^1.1.5: version "1.1.6" @@ -2138,51 +2295,33 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -source-list-map@~0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.6.tgz#e1e6f94f0b40c4d28dcf8f5b8766e0e45636877f" +source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" -source-map-support@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.3.3.tgz#34900977d5ba3f07c7757ee72e73bb1a9b53754f" +source-map-support@^0.4.0, source-map-support@^0.4.11, source-map-support@^0.4.2: + version "0.4.11" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322" dependencies: - source-map "0.1.32" + source-map "^0.5.3" -source-map-support@^0.4.0: - version "0.4.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" +source-map@0.1.34: + version "0.1.34" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b" dependencies: - source-map "^0.5.3" + amdefine ">=0.0.4" -source-map@^0.4.2, source-map@^0.4.4: +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.5.0, source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - -source-map@0.1.32: - version "0.1.32" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266" - dependencies: - amdefine ">=0.0.4" - -source-map@0.1.34: - version "0.1.34" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b" - dependencies: - amdefine ">=0.0.4" - -spawn-wrap@^1.2.4: +spawn-wrap@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.2.4.tgz#920eb211a769c093eebfbd5b0e7a5d2e68ab2e40" dependencies: @@ -2207,13 +2346,9 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" -sprintf-js@^1.0.3, sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - sshpk@^1.7.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" + version "1.10.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.2.tgz#d5a804ce22695515638e798dbe23273de070a5fa" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -2233,9 +2368,15 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -string_decoder@~0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +stream-http@^2.3.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.1.0" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" @@ -2245,6 +2386,10 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -2267,11 +2412,7 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@^1.0.2, 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.0: +strip-json-comments@^2.0.0, 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" @@ -2280,8 +2421,8 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" supports-color@^3.1.0, supports-color@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: has-flag "^1.0.0" @@ -2289,13 +2430,9 @@ symbol-observable@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" -tapable@^0.1.8: - version "0.1.10" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" - -tapable@^0.2.3, tapable@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.4.tgz#a7814605089d4ba896c33c7e3566e13dcd194aa5" +tapable@^0.2.5, tapable@~0.2.5: + version "0.2.6" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" tar-pack@~3.3.0: version "3.3.0" @@ -2318,9 +2455,9 @@ tar@~2.2.1: fstream "^1.0.2" inherits "2" -test-exclude@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-2.1.3.tgz#a8d8968e1da83266f9864f2852c55e220f06434a" +test-exclude@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-3.3.0.tgz#7a17ca1239988c98367b0621456dbb7d4bc38977" dependencies: arrify "^1.0.1" micromatch "^2.3.11" @@ -2328,11 +2465,19 @@ test-exclude@^2.1.3: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -timers-browserify@^1.0.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" +timed-out@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + +timers-browserify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" dependencies: - process "~0.11.0" + setimmediate "^1.0.4" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" to-fast-properties@^1.0.1: version "1.0.2" @@ -2348,29 +2493,33 @@ trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" -ts-loader@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-0.8.2.tgz#7331296d13d5b3105cd905cebca39143eed2b255" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +ts-loader@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-2.0.1.tgz#2ec8fa5e20ef01062a4a2c28c9d6ac828c32e75d" dependencies: - arrify "^1.0.0" colors "^1.0.3" - enhanced-resolve "^0.9.0" - loader-utils "^0.2.6" - object-assign "^2.0.0" + enhanced-resolve "^3.0.0" + loader-utils "^1.0.2" semver "^5.0.1" -ts-node@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-1.6.1.tgz#254dc569bf96794c39a9313ac9249d2efc522e5c" +ts-node@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-2.1.0.tgz#aa2bf4b2e25c5fb6a7c54701edc3666d3a9db25d" dependencies: arrify "^1.0.0" chalk "^1.1.1" + diff "^3.1.0" make-error "^1.1.1" minimist "^1.2.0" mkdirp "^0.5.1" pinkie "^2.0.4" source-map-support "^0.4.0" tsconfig "^5.0.2" + v8flags "^2.0.11" xtend "^4.0.0" yn "^1.2.0" @@ -2383,36 +2532,37 @@ tsconfig@^5.0.2: strip-bom "^2.0.0" strip-json-comments "^2.0.0" -tsickle@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.1.7.tgz#bfe8f4cdcdaf9a40b84a729a38480c2f824f18ab" +tsickle@^0.21.0: + version "0.21.5" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f" dependencies: minimist "^1.2.0" mkdirp "^0.5.1" - source-map "^0.4.2" - source-map-support "^0.3.1" + source-map "^0.5.6" + source-map-support "^0.4.2" -tslint-loader@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/tslint-loader/-/tslint-loader-2.1.5.tgz#77abdfd9bf13d7133a6efa4447a1690783c4bb49" +tslint-loader@^3.3.0: + 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" - strip-json-comments "^1.0.2" + semver "^5.3.0" -tslint@^3.15.1: - version "3.15.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-3.15.1.tgz#da165ca93d8fdc2c086b51165ee1bacb48c98ea5" +tslint@^4.4.2: + 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" - diff "^2.2.1" + diff "^3.0.1" findup-sync "~0.3.0" - glob "^7.0.3" + 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: version "0.0.0" @@ -2423,22 +2573,16 @@ tunnel-agent@~0.4.1: resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -typescript@^2.0.2: - version "2.0.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.0.6.tgz#5385499ac9811508c2c43e0ea07a1ddca435e111" +typescript@>=2.1.4, typescript@^2.1.6: + version "2.2.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9" -uglify-js@^2.6, uglify-js@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.4.tgz#a295a0de12b6a650c031c40deb0dc40b14568bd2" +uglify-js@^2.6, uglify-js@^2.7.5: + version "2.7.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" dependencies: async "~0.2.6" source-map "~0.5.1" @@ -2462,30 +2606,64 @@ uid-number@~0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" -underscore.string@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +update-notifier@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" + dependencies: + boxen "^0.6.0" + chalk "^1.0.0" + configstore "^2.0.0" + is-npm "^1.0.0" + latest-version "^2.0.0" + lazy-req "^1.1.0" + semver-diff "^2.0.0" + xdg-basedir "^2.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" dependencies: - sprintf-js "^1.0.3" - util-deprecate "^1.0.2" + prepend-http "^1.0.1" -url@~0.11.0: +url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" dependencies: punycode "1.3.2" querystring "0.2.0" -util-deprecate@^1.0.2, util-deprecate@~1.0.1: +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -util@~0.10.3, util@0.10.3: +util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" dependencies: inherits "2.0.1" +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + +v8flags@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" + dependencies: + user-home "^1.1.1" + validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -2505,52 +2683,53 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" -watchpack@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.1.0.tgz#42d44627464a2fadffc9308c0f7562cfde795f24" +watchpack@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" dependencies: - async "2.0.0-rc.4" + async "^2.1.2" chokidar "^1.4.3" graceful-fs "^4.1.2" -webpack-sources@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.2.tgz#057a3f3255f8ba561b901d9150589aa103a57e65" +webpack-sources@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd" dependencies: - source-list-map "~0.1.0" + source-list-map "~0.1.7" source-map "~0.5.3" -webpack@^2.1.0-beta.21: - version "2.1.0-beta.25" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.1.0-beta.25.tgz#c35ff4da4ee70344a2f14c35258d95412709e9ed" +webpack@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" dependencies: - acorn "^3.2.0" + acorn "^4.0.4" + acorn-dynamic-import "^2.0.0" ajv "^4.7.0" - async "^1.3.0" - clone "^1.0.2" - enhanced-resolve "^2.2.0" + ajv-keywords "^1.1.1" + async "^2.1.2" + enhanced-resolve "^3.0.0" interpret "^1.0.0" - loader-runner "^2.2.0" - loader-utils "^0.2.11" - memory-fs "~0.3.0" + json-loader "^0.5.4" + loader-runner "^2.3.0" + loader-utils "^0.2.16" + memory-fs "~0.4.1" mkdirp "~0.5.0" - node-libs-browser "^1.0.0" - object-assign "^4.0.1" + node-libs-browser "^2.0.0" source-map "^0.5.3" supports-color "^3.1.0" - tapable "~0.2.3" - uglify-js "~2.7.3" - watchpack "^1.0.0" - webpack-sources "^0.1.0" - yargs "^4.7.1" + tapable "~0.2.5" + uglify-js "^2.7.5" + watchpack "^1.2.0" + webpack-sources "^0.1.4" + yargs "^6.0.0" which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" -which@^1.1.1, which@^1.2.4, which@^1.2.9: - version "1.2.11" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.11.tgz#c8b2eeea6b8c1659fa7c1dd4fdaabe9533dc5e8b" +which@^1.2.4, which@^1.2.9: + version "1.2.12" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" dependencies: isexe "^1.1.1" @@ -2560,44 +2739,53 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.1" -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - wrap-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.0.0.tgz#7d30f8f873f9a5bbc3a64dabc8d177e071ae426f" + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" dependencies: string-width "^1.0.1" + strip-ansi "^3.0.1" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.2.0.tgz#14c66d4e4cb3ca0565c28cf3b7a6f3e4d5938fab" +write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: + version "1.3.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a" dependencies: - graceful-fs "^4.1.2" + graceful-fs "^4.1.11" imurmurhash "^0.1.4" slide "^1.1.5" +xdg-basedir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" + dependencies: + os-homedir "^1.0.0" + +xhr2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" + xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -2610,41 +2798,15 @@ yallist@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" +yargs-parser@^4.0.2, yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" dependencies: camelcase "^3.0.0" - lodash.assign "^4.0.6" - -yargs-parser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.0.2.tgz#7f7173a8c7cca1d81dc7c18692fc07c2c2e2b1e0" - dependencies: - camelcase "^3.0.0" - -yargs@^4.7.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" -yargs@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.3.0.tgz#19c6dbb768744d571eb6ebae0c174cf2f71b188d" +yargs@^6.0.0, yargs@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" dependencies: camelcase "^3.0.0" cliui "^3.2.0" @@ -2657,9 +2819,8 @@ yargs@^6.0.0: set-blocking "^2.0.0" string-width "^1.0.2" which-module "^1.0.0" - window-size "^0.2.0" y18n "^3.2.1" - yargs-parser "^4.0.2" + yargs-parser "^4.2.0" yargs@~1.3.3: version "1.3.3" @@ -2678,7 +2839,6 @@ yn@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/yn/-/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63" -zone.js@^0.6.17: - version "0.6.26" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.6.26.tgz#067c13b8b80223a89b62e9dc82680f09762c4636" - +zone.js@^0.7.6: + version "0.7.7" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620"