From ad0bbdd9eee11979ac096c85e4ff59a4e56310bc Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Wed, 29 Nov 2017 22:27:41 -0500 Subject: [PATCH 01/22] v7.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 32d46a8..cd37bcf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.0.0", + "version": "7.0.1", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From a9ab3f0ffa3609936dada8e3b0275247693b901d Mon Sep 17 00:00:00 2001 From: Leo Jpod Date: Thu, 30 Nov 2017 15:31:26 +0100 Subject: [PATCH 02/22] Correct super minor typo in select-pattern.md (#494) --- articles/select-pattern.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/select-pattern.md b/articles/select-pattern.md index 6f03345..f4e759c 100644 --- a/articles/select-pattern.md +++ b/articles/select-pattern.md @@ -109,7 +109,7 @@ export class Counter { Since it's an observable, you can also transform data using observable operators like `.map`, `.filter`, etc. -## The @sselect$ decorator +## The @select$ decorator The `@select$` decorator works similar to `@select`, however you are able to specify observable chains to execute on the selected result. From 36a2bc4176b4fa6f329cf534a117943efa6bb8a2 Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Tue, 5 Dec 2017 22:42:56 -0500 Subject: [PATCH 03/22] v7.0.2-0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd37bcf..63229f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.0.1", + "version": "7.0.2-0", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From 2c3e86ef092aa7aed75accff480a01d80b9b9447 Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Tue, 5 Dec 2017 22:45:12 -0500 Subject: [PATCH 04/22] 7.0.2-1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4548e7d..f60754f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "6.5.5", + "version": "7.0.2-1", "lockfileVersion": 1, "dependencies": { "@angular/animations": { diff --git a/package.json b/package.json index 63229f2..2f8c21d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.0.2-0", + "version": "7.0.2-1", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From 5f462482f325d91b574d57829db650bfec2beca0 Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Tue, 5 Dec 2017 22:47:46 -0500 Subject: [PATCH 05/22] version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f8c21d..63229f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.0.2-1", + "version": "7.0.2-0", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From 99782c41e84350ce1cd8c0a35899af6c5ca228c8 Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Tue, 5 Dec 2017 22:48:35 -0500 Subject: [PATCH 06/22] version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 63229f2..2f8c21d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.0.2-0", + "version": "7.0.2-1", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From 50f152b347854309b4264c842a0e348348925063 Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Tue, 5 Dec 2017 22:49:41 -0500 Subject: [PATCH 07/22] v7.0.2-2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f8c21d..3df549d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.0.2-1", + "version": "7.0.2-2", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From f87e4cb206ad41efb935f3c867314c6b75a1c03b Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Wed, 20 Dec 2017 09:57:38 -0500 Subject: [PATCH 08/22] Clarify Versioning (#498) # Which Version to use? ## Angular 5+ Use `@angular-redux/store@^7` - this version supports Angular 5, and also changes to using lettable operators. Any new major releases will released on the v7 branch and with the `@latest` tag for final publishes. ## Angular 4 or lower Use `@angular-redux/store@^6` - This supports Angular 4 and earlier. # Support for `@angular-redux/store@6`? Where possible, I will be maintaining and applying any fixes / enhancements for v7 into v6 where it does not introduce a breaking change. I made a few mistakes trying to publish fixes / etc to two major versions, which caused some releases to get tagged incorrectly and caused some confusion. Sorry for any confusion this has caused, and will do better on avoiding this in the future, and being more transparent with the releases that are going out. --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ README.md | 19 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8d3c37..34b6b35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,33 @@ +# 7.0.2 - Fixing Publish + +* There are no functional changes / fixes in this release. + +There was accidental publish to the `@latest` tag with an expiremental fix for the v6 branch that got pushed out with the incorrect tag. + +For some clarity: + +* v7+ - currently only works with Angular 5+ +* v6+ - works with Angular 4 and earlier, and v5. +* v8 - this was an accidental version bump - and that package is now deprecated. + +# Which Version to use? + +## Angular 5+ + +Use `@angular-redux/store@^7` - this version supports Angular 5, and also changes to using lettable operators. + +Any new major releases will released on the v7 branch and with the `@latest` tag for final publishes. + +## Angular 4 or lower + +Use `@angular-redux/store@^6` - This supports Angular 4 and earlier. + +# Support for `@angular-redux/store@6`? + +Where possible, I will be maintaining and applying any fixes / enhancements for v7 into v6 where it does not introduce a breaking change. + +I made a few mistakes trying to publish fixes / etc to two major versions, which caused some releases to get tagged incorrectly and caused some confusion. Sorry for any confusion this has caused, and will do better on avoiding this in the future, and being more transparent with the releases that are going out. + # 6.6.0 - Angular 5 Support * Add Angular 5+ as peer dependency diff --git a/README.md b/README.md index a5fc116..fd88841 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,22 @@ + +# Which Version to use? + +## Angular 5+ + +Use `@angular-redux/store@^7` - this version supports Angular 5, and also changes to using lettable operators. + +Any new major releases will released on the v7 branch and with the `@latest` tag for final publishes. + +## Angular 4 or lower + +Use `@angular-redux/store@^6` - This supports Angular 4 and earlier. + +# Support for `@angular-redux/store@6`? + +Where possible, I will be maintaining and applying any fixes / enhancements for v7 into v6 where it does not introduce a breaking change. + +I made a few mistakes trying to publish fixes / etc to two major versions, which caused some releases to get tagged incorrectly and caused some confusion. Sorry for any confusion this has caused, and will do better on avoiding this in the future, and being more transparent with the releases that are going out. + # @angular-redux/store Angular bindings for [Redux](https://github.com/reactjs/redux). From 1be0a44c331a8535b4ebb39494634b6b08a9afe1 Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Wed, 20 Dec 2017 10:04:03 -0500 Subject: [PATCH 09/22] v7.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3df549d..af9e8b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.0.2-2", + "version": "7.0.2", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From 88134e49f8ffe3da61189e3855e4fcec145d8108 Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Thu, 21 Dec 2017 14:29:18 -0500 Subject: [PATCH 10/22] Setup Prettier and pre-commit hook (#499) * Change tslint settings to be compatible with prettier * Ran prettier on code * Setup husky and lint-staged to auto-run prettier pre-commit --- .prettierignore | 3 + .prettierrc | 4 + package.json | 11 + src/components/dev-tools.ts | 10 +- src/components/fractal-reducer-map.ts | 58 ++-- src/components/ng-redux.ts | 13 +- src/components/observable-store.ts | 6 +- src/components/root-store.spec.ts | 131 ++++----- src/components/root-store.ts | 7 +- src/components/selectors.ts | 53 ++-- src/components/sub-store.spec.ts | 59 ++-- src/components/sub-store.ts | 6 +- src/decorators/dispatch.spec.ts | 80 +++--- src/decorators/dispatch.ts | 16 +- src/decorators/helpers.ts | 28 +- src/decorators/select.spec.ts | 3 + src/decorators/select.ts | 15 +- src/decorators/with-sub-store.spec.ts | 194 ++++++------- src/decorators/with-sub-store.ts | 7 +- src/index.ts | 1 + src/ng-redux.module.ts | 6 +- src/utils/assert.ts | 4 +- src/utils/get-in.spec.ts | 51 ++-- src/utils/get-in.ts | 7 +- src/utils/set-in.spec.ts | 15 +- src/utils/set-in.ts | 16 +- testing/ng-redux-testing.module.ts | 2 +- testing/ng-redux.mock.spec.ts | 35 +-- testing/ng-redux.mock.ts | 2 +- testing/observable-store.mock.ts | 47 ++-- tslint.json | 48 +--- yarn.lock | 388 +++++++++++++++++++++++++- 32 files changed, 847 insertions(+), 479 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..2254ab2 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +/coverage +/docs +/lib \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..40b6472 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "printWidth": 80 +} \ No newline at end of file diff --git a/package.json b/package.json index af9e8b2..60866ee 100644 --- a/package.json +++ b/package.json @@ -4,11 +4,13 @@ "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { + "precommit": "lint-staged", "prebuild": "rimraf ./lib", "build": "npm run build:src && npm run build:testing", "build:src": "ngc -p tsconfig.build.json", "build:testing": "ngc -p tsconfig.testing.json", "lint": "tslint 'src/**/*.ts'", + "prettier": "prettier --parser typescript --single-quote --trailing-comma es5 --write \"**/*.ts\"", "prepublish": "npm run lint && npm run build && npm test", "test": "nyc node tests.js", "test:watch": "nodemon tests.js -w src -w testing -e ts", @@ -65,9 +67,12 @@ "@types/jasmine": "2.5.38", "@types/node": "^6.0.36", "core-js": "^2.4.1", + "husky": "^0.14.3", "jasmine": "^2.5.3", + "lint-staged": "^6.0.0", "nodemon": "^1.11.0", "nyc": "^10.2.0", + "prettier": "1.9.2", "redux": "^3.7.2", "reflect-metadata": "0.1.10", "rimraf": "^2.5.2", @@ -95,5 +100,11 @@ "src/**/*.ts", "testing/**/*.ts" ] + }, + "lint-staged": { + "*.ts": [ + "yarn prettier", + "git add" + ] } } diff --git a/src/components/dev-tools.ts b/src/components/dev-tools.ts index 1795d2c..e44e30f 100644 --- a/src/components/dev-tools.ts +++ b/src/components/dev-tools.ts @@ -10,9 +10,7 @@ const environment: any = typeof window !== 'undefined' ? window : {}; @Injectable() export class DevToolsExtension { /** @hidden */ - constructor( - private appRef: ApplicationRef, - private ngRedux: NgRedux) { } + constructor(private appRef: ApplicationRef, private ngRedux: NgRedux) {} /** * A wrapper for the Chrome Extension Redux DevTools. @@ -30,7 +28,7 @@ export class DevToolsExtension { } // Make sure changes from dev tools update angular's view. - environment.devToolsExtension.listen(({type}: any) => { + environment.devToolsExtension.listen(({ type }: any) => { if (type === 'START') { subscription = this.ngRedux.subscribe(() => { if (!NgZone.isInAngularZone()) { @@ -43,10 +41,10 @@ export class DevToolsExtension { }); return environment.devToolsExtension(options); - } + }; /** * Returns true if the extension is installed and enabled. */ - isEnabled = () => environment && environment.devToolsExtension + isEnabled = () => environment && environment.devToolsExtension; } diff --git a/src/components/fractal-reducer-map.ts b/src/components/fractal-reducer-map.ts index 876e6ab..7ec3b86 100644 --- a/src/components/fractal-reducer-map.ts +++ b/src/components/fractal-reducer-map.ts @@ -5,13 +5,15 @@ import { getIn } from '../utils/get-in'; let reducerMap: { [id: string]: Reducer } = {}; -const composeReducers = (...reducers: Reducer[]): Reducer => - (state: any, action: Action) => - reducers.reduce((subState, reducer) => reducer(subState, action), state); +const composeReducers = (...reducers: Reducer[]): Reducer => ( + state: any, + action: Action +) => reducers.reduce((subState, reducer) => reducer(subState, action), state); /** - * @param rootReducer Call this on your root reducer to enable SubStore functionality for - * pre-configured stores (e.g. when using NgRedux.provideStore()). NgRedux.configureStore + * @param rootReducer Call this on your root reducer to enable SubStore + * functionality for pre-configured stores (e.g. using NgRedux.provideStore()). + * NgRedux.configureStore * does it for you under the hood. */ export function enableFractalReducers(rootReducer: Reducer) { @@ -22,34 +24,34 @@ export function enableFractalReducers(rootReducer: Reducer) { /** @hidden */ export function registerFractalReducer( basePath: PathSelector, - localReducer: Reducer): void { - const existingFractalReducer = reducerMap[JSON.stringify(basePath)]; - if (existingFractalReducer && existingFractalReducer !== localReducer) { - throw new Error(`attempt to overwrite fractal reducer for basePath ${basePath}`); - } - - reducerMap[JSON.stringify(basePath)] = localReducer; + localReducer: Reducer +): void { + const existingFractalReducer = reducerMap[JSON.stringify(basePath)]; + if (existingFractalReducer && existingFractalReducer !== localReducer) { + throw new Error( + `attempt to overwrite fractal reducer for basePath ${basePath}` + ); } + reducerMap[JSON.stringify(basePath)] = localReducer; +} + /** @hidden */ export function replaceLocalReducer( basePath: PathSelector, - nextLocalReducer: Reducer): void { - reducerMap[JSON.stringify(basePath)] = nextLocalReducer; - } + nextLocalReducer: Reducer +): void { + reducerMap[JSON.stringify(basePath)] = nextLocalReducer; +} function rootFractalReducer( state: {} = {}, - action: Action & { '@angular-redux::fractalkey'?: string }) { - const fractalKey = action['@angular-redux::fractalkey']; - const fractalPath = fractalKey ? JSON.parse(fractalKey) : []; - const localReducer = reducerMap[fractalKey || '']; - return fractalKey && localReducer ? - setIn( - state, - fractalPath, - localReducer( - getIn(state, fractalPath), - action)) : - state; - } + action: Action & { '@angular-redux::fractalkey'?: string } +) { + const fractalKey = action['@angular-redux::fractalkey']; + const fractalPath = fractalKey ? JSON.parse(fractalKey) : []; + const localReducer = reducerMap[fractalKey || '']; + return fractalKey && localReducer + ? setIn(state, fractalPath, localReducer(getIn(state, fractalPath), action)) + : state; +} diff --git a/src/components/ng-redux.ts b/src/components/ng-redux.ts index 89f1905..58ec692 100644 --- a/src/components/ng-redux.ts +++ b/src/components/ng-redux.ts @@ -4,7 +4,7 @@ import { Unsubscribe, Middleware, Store, - StoreEnhancer + StoreEnhancer, } from 'redux'; import { Observable } from 'rxjs/Observable'; import { ObservableStore } from './observable-store'; @@ -35,7 +35,8 @@ export abstract class NgRedux implements ObservableStore { rootReducer: Reducer, initState: RootState, middleware?: Middleware[], - enhancers?: StoreEnhancer[]) => void + enhancers?: StoreEnhancer[] + ) => void; /** * Accepts a Redux store, then sets it in NgRedux and @@ -47,7 +48,7 @@ export abstract class NgRedux implements ObservableStore { * * @param store Your app's store */ - abstract provideStore: (store: Store) => void + abstract provideStore: (store: Store) => void; // Redux Store methods abstract dispatch: Dispatch; @@ -58,8 +59,10 @@ export abstract class NgRedux implements ObservableStore { // ObservableStore methods. abstract select: ( selector?: Selector, - comparator?: Comparator) => Observable + comparator?: Comparator + ) => Observable; abstract configureSubStore: ( basePath: PathSelector, - localReducer: Reducer) => ObservableStore; + localReducer: Reducer + ) => ObservableStore; } diff --git a/src/components/observable-store.ts b/src/components/observable-store.ts index 394fa04..f21fd00 100644 --- a/src/components/observable-store.ts +++ b/src/components/observable-store.ts @@ -25,7 +25,8 @@ export interface ObservableStore extends Store { */ select: ( selector: Selector, - comparator?: Comparator) => Observable + comparator?: Comparator + ) => Observable; /** * Carves off a 'subStore' or 'fractal' store from this one. @@ -40,5 +41,6 @@ export interface ObservableStore extends Store { */ configureSubStore: ( basePath: PathSelector, - localReducer: Reducer) => ObservableStore; + localReducer: Reducer + ) => ObservableStore; } diff --git a/src/components/root-store.spec.ts b/src/components/root-store.spec.ts index 8a1eecb..ded68a5 100644 --- a/src/components/root-store.spec.ts +++ b/src/components/root-store.spec.ts @@ -10,7 +10,7 @@ import { RootStore } from './root-store'; import { select } from '../decorators/select'; class MockNgZone { - run = (fn: Function) => fn() + run = (fn: Function) => fn(); } type PayloadAction = Action & { payload?: string | number }; @@ -20,7 +20,7 @@ describe('NgRedux Observable Store', () => { foo: string; bar: string; baz: number; - }; + } let defaultState: IAppState; let rootReducer: Reducer; @@ -56,35 +56,32 @@ describe('NgRedux Observable Store', () => { it('should throw when the store is configured twice', () => { // Configured once in beforeEach, now we try to configure // it a second time. - expect(ngRedux.configureStore.bind(ngRedux, rootReducer, defaultState)) - .toThrowError(Error); + expect( + ngRedux.configureStore.bind(ngRedux, rootReducer, defaultState) + ).toThrowError(Error); }); - it('should get the initial state', done => ngRedux - .select() - .subscribe((state: IAppState) => { + it('should get the initial state', done => + ngRedux.select().subscribe((state: IAppState) => { expect(state.foo).toEqual('bar'); expect(state.baz).toEqual(-1); done(); })); - it('should accept a keyname for a selector', done => ngRedux - .select('foo') - .subscribe(stateSlice => { + it('should accept a keyname for a selector', done => + ngRedux.select('foo').subscribe(stateSlice => { expect(stateSlice).toEqual('bar'); done(); })); - it('should not trigger a selector if that slice of state was not changed', () => { + it('should not trigger selector if that slice of state wasnt changed', () => { let fooData; - const spy = jasmine - .createSpy('spy') - .and.callFake((foo: string) => { fooData = foo; }); + const spy = jasmine.createSpy('spy').and.callFake((foo: string) => { + fooData = foo; + }); - const foo$ = ngRedux - .select('foo') - .subscribe(spy); + const foo$ = ngRedux.select('foo').subscribe(spy); expect(spy.calls.count()).toEqual(1); ngRedux.dispatch({ type: 'UPDATE_BAR', payload: 0 }); @@ -99,12 +96,10 @@ describe('NgRedux Observable Store', () => { it('should not trigger a selector if the action payload is the same', () => { let fooData; - const spy = jasmine - .createSpy('spy') - .and.callFake((foo: string) => { fooData = foo; }); - const foo$ = ngRedux - .select('foo') - .subscribe(spy); + const spy = jasmine.createSpy('spy').and.callFake((foo: string) => { + fooData = foo; + }); + const foo$ = ngRedux.select('foo').subscribe(spy); expect(spy.calls.count()).toEqual(1); expect(fooData).toEqual('bar'); @@ -115,14 +110,12 @@ describe('NgRedux Observable Store', () => { foo$.unsubscribe(); }); - it('should not call the sub if the result of the function is the same', () => { + it('should not call sub if the result of the function is the same', () => { let fooData; - const spy = jasmine - .createSpy('spy') - .and.callFake((foo: string) => { fooData = foo; }); - ngRedux - .select(state => `${state.foo}-${state.baz}`) - .subscribe(spy); + const spy = jasmine.createSpy('spy').and.callFake((foo: string) => { + fooData = foo; + }); + ngRedux.select(state => `${state.foo}-${state.baz}`).subscribe(spy); expect(spy.calls.count()).toEqual(1); expect(fooData).toEqual('bar--1'); @@ -144,11 +137,14 @@ describe('NgRedux Observable Store', () => { }); it(`should accept a custom compare function`, () => { - interface IRecord { data?: string }; + interface IRecord { + data?: string; + } let fooData: IRecord = {}; - const spy = jasmine.createSpy('spy') - .and.callFake((data: IRecord) => fooData = data); + const spy = jasmine + .createSpy('spy') + .and.callFake((data: IRecord) => (fooData = data)); const cmp = (a: IRecord, b: IRecord) => a.data === b.data; ngRedux @@ -189,7 +185,7 @@ describe('NgRedux Observable Store', () => { expect(selectSpy.calls.count()).toEqual(2); }); - it('should throw when the store is provided after it has been configured', () => { + it('should throw if store is provided after it has been configured', () => { // Configured once in beforeEach, now we try to provide a store when // we already have configured one. expect(ngRedux.provideStore.bind(store)).toThrowError(); @@ -202,9 +198,9 @@ describe('NgRedux Observable Store', () => { baz: number; constructor(_ngRedux: NgRedux) { - _ngRedux.select(n => n.foo).subscribe(foo => this.foo = foo); - _ngRedux.select(n => n.bar).subscribe(bar => this.bar = bar); - _ngRedux.select(n => n.baz).subscribe(baz => this.baz = baz); + _ngRedux.select(n => n.foo).subscribe(foo => (this.foo = foo)); + _ngRedux.select(n => n.bar).subscribe(bar => (this.bar = bar)); + _ngRedux.select(n => n.baz).subscribe(baz => (this.baz = baz)); } } ngRedux = new RootStore(mockNgZone); @@ -226,8 +222,7 @@ describe('NgRedux Observable Store', () => { ngRedux = new RootStore(mockNgZone); const someService = new SomeService(); - someService - .foo$ + someService.foo$ .combineLatest(someService.bar$, someService.baz$) .subscribe(([foo, bar, baz]) => { expect(foo).toEqual('bar'); @@ -244,20 +239,22 @@ describe('Chained actions in subscriptions', () => { interface IAppState { keyword: string; keywordLength: number; - }; + } let defaultState: IAppState; let rootReducer: Reducer; let ngRedux: NgRedux; const mockNgZone = new MockNgZone() as NgZone; - const doSearch = (word: string) => ngRedux.dispatch({ type: 'SEARCH', payload: word }); - const doFetch = (word: string) => ngRedux.dispatch({ type: 'SEARCH_RESULT', payload: word.length }); + const doSearch = (word: string) => + ngRedux.dispatch({ type: 'SEARCH', payload: word }); + const doFetch = (word: string) => + ngRedux.dispatch({ type: 'SEARCH_RESULT', payload: word.length }); beforeEach(() => { defaultState = { keyword: '', - keywordLength: -1 + keywordLength: -1, }; rootReducer = (state = defaultState, action: PayloadAction) => { @@ -283,16 +280,14 @@ describe('Chained actions in subscriptions', () => { const length$ = ngRedux.select(n => n.keywordLength); const lengthSpy = jasmine .createSpy('lengthSpy') - .and.callFake((n: number) => length = n); + .and.callFake((n: number) => (length = n)); let lenSub; let keywordSub; - keywordSub = keyword$. - filter(n => n !== '') - .subscribe(n => { - keyword = n; - doFetch(n); - }); + keywordSub = keyword$.filter(n => n !== '').subscribe(n => { + keyword = n; + doFetch(n); + }); lenSub = length$.subscribe(lengthSpy); @@ -316,16 +311,14 @@ describe('Chained actions in subscriptions', () => { const length$ = ngRedux.select(n => n.keywordLength); const lengthSpy = jasmine .createSpy('lengthSpy') - .and.callFake((n: number) => length = n); + .and.callFake((n: number) => (length = n)); let lenSub; let keywordSub; - keywordSub = keyword$. - filter(n => n !== '') - .subscribe(n => { - keyword = n; - doFetch(n); - }); + keywordSub = keyword$.filter(n => n !== '').subscribe(n => { + keyword = n; + doFetch(n); + }); lenSub = length$.subscribe(lengthSpy); @@ -350,17 +343,15 @@ describe('Chained actions in subscriptions', () => { const length$ = ngRedux.select(n => n.keywordLength); const lengthSpy = jasmine .createSpy('lengthSpy') - .and.callFake((n: number) => length = n); + .and.callFake((n: number) => (length = n)); let lenSub; let keywordSub; lenSub = length$.subscribe(lengthSpy); - keywordSub = keyword$. - filter(n => n !== '') - .subscribe(n => { - keyword = n; - doFetch(n); - }); + keywordSub = keyword$.filter(n => n !== '').subscribe(n => { + keyword = n; + doFetch(n); + }); expect(keyword).toEqual(''); expect(length).toEqual(-1); @@ -382,17 +373,15 @@ describe('Chained actions in subscriptions', () => { const length$ = ngRedux.select(n => n.keywordLength); const lengthSpy = jasmine .createSpy('lengthSpy') - .and.callFake((n: number) => length = n); + .and.callFake((n: number) => (length = n)); let lenSub; let keywordSub; lenSub = length$.subscribe(lengthSpy); - keywordSub = keyword$. - filter(n => n !== '') - .subscribe(n => { - keyword = n; - doFetch(n); - }); + keywordSub = keyword$.filter(n => n !== '').subscribe(n => { + keyword = n; + doFetch(n); + }); expect(keyword).toEqual(''); expect(length).toEqual(-1); diff --git a/src/components/root-store.ts b/src/components/root-store.ts index d3d632a..5e9e35f 100644 --- a/src/components/root-store.ts +++ b/src/components/root-store.ts @@ -8,7 +8,7 @@ import { createStore, applyMiddleware, compose, - Dispatch + Dispatch, } from 'redux'; import { NgZone } from '@angular/core'; @@ -24,7 +24,7 @@ import { Selector, PathSelector, Comparator, - resolveToFunctionSelector + resolveToFunctionSelector, } from './selectors'; import { assert } from '../utils/assert'; import { SubStore } from './sub-store'; @@ -42,7 +42,8 @@ export class RootStore extends NgRedux { this._store$ = new BehaviorSubject(undefined).pipe( filter(n => n !== undefined), switchMap(observableStore => observableStore as any) - ) as BehaviorSubject; // TODO: fix this? needing to explicitly cast this is wrong + // TODO: fix this? needing to explicitly cast this is wrong + ) as BehaviorSubject; } configureStore = ( diff --git a/src/components/selectors.ts b/src/components/selectors.ts index 085af43..996357c 100644 --- a/src/components/selectors.ts +++ b/src/components/selectors.ts @@ -2,42 +2,47 @@ import { getIn } from '../utils/get-in'; import { Observable } from 'rxjs/Observable'; /** -* Custom equality checker that can be used with `.select` and `@select`. -* ```ts -* const customCompare: Comparator = (x: any, y: any) => { -* return x.id === y.id -* } -* -* @select(selector, customCompare) -* ``` -*/ + * Custom equality checker that can be used with `.select` and `@select`. + * ```ts + * const customCompare: Comparator = (x: any, y: any) => { + * return x.id === y.id + * } + * + * @select(selector, customCompare) + * ``` + */ export type Comparator = (x: any, y: any) => boolean; -export type Transformer = (store$: Observable) => Observable +export type Transformer = ( + store$: Observable +) => Observable; export type PropertySelector = string | number | symbol; export type PathSelector = (string | number)[]; export type FunctionSelector = ((s: RootState) => S); -export type Selector = PropertySelector | - PathSelector | - FunctionSelector; +export type Selector = + | PropertySelector + | PathSelector + | FunctionSelector; /** @hidden */ -export const sniffSelectorType = (selector?: Selector) => - !selector ? - 'nil' : - Array.isArray(selector) ? - 'path' : - typeof selector === 'function' ? - 'function' : - 'property'; +export const sniffSelectorType = ( + selector?: Selector +) => + !selector + ? 'nil' + : Array.isArray(selector) + ? 'path' + : typeof selector === 'function' ? 'function' : 'property'; /** @hidden */ export const resolver = (selector?: Selector) => ({ - property: (state: any) => state ? state[selector as PropertySelector] : undefined, + property: (state: any) => + state ? state[selector as PropertySelector] : undefined, path: (state: RootState) => getIn(state, selector as PathSelector), function: selector as FunctionSelector, nil: (state: RootState) => state, }); /** @hidden */ -export const resolveToFunctionSelector = (selector?: Selector) => - resolver(selector)[sniffSelectorType(selector)]; +export const resolveToFunctionSelector = ( + selector?: Selector +) => resolver(selector)[sniffSelectorType(selector)]; diff --git a/src/components/sub-store.spec.ts b/src/components/sub-store.spec.ts index 19c958c..c519c47 100644 --- a/src/components/sub-store.spec.ts +++ b/src/components/sub-store.spec.ts @@ -6,7 +6,9 @@ import { ObservableStore } from './observable-store'; import 'rxjs/add/operator/take'; import 'rxjs/add/operator/toArray'; -class MockNgZone { run = (fn: Function) => fn() } +class MockNgZone { + run = (fn: Function) => fn(); +} interface ISubState { wat: { @@ -32,68 +34,71 @@ describe('Substore', () => { ngRedux.configureStore(defaultReducer, { foo: { bar: { wat: { quux: 3 } }, - } + }, }); subStore = ngRedux.configureSubStore(basePath, defaultReducer); }); it('adds a key to actions it dispatches', () => - expect(subStore.dispatch({ type: 'MY_ACTION' })) - .toEqual({ - type: 'MY_ACTION', - '@angular-redux::fractalkey': '["foo","bar"]' - })); + expect(subStore.dispatch({ type: 'MY_ACTION' })).toEqual({ + type: 'MY_ACTION', + '@angular-redux::fractalkey': '["foo","bar"]', + })); it('gets state rooted at the base path', () => expect(subStore.getState()).toEqual({ wat: { quux: 3 } })); it('selects based on base path', () => - subStore.select('wat').subscribe(wat => - expect(wat).toEqual({ quux: 3 }))); + subStore.select('wat').subscribe(wat => expect(wat).toEqual({ quux: 3 }))); - it('handles property selection on a base path that doesn\'t exist yet', () => { + it(`handles property selection on a base path that doesn't exist yet`, () => { const nonExistentSubStore = ngRedux.configureSubStore( ['sure', 'whatever'], - (state: any, action: any) => ({ ...state, value: action.newValue })); - nonExistentSubStore.select('value') + (state: any, action: any) => ({ ...state, value: action.newValue }) + ); + nonExistentSubStore + .select('value') .take(2) .toArray() - .subscribe(v => expect(v).toEqual([ undefined, 'now I exist' ])); + .subscribe(v => expect(v).toEqual([undefined, 'now I exist'])); nonExistentSubStore.dispatch({ type: 'nvm', newValue: 'now I exist' }); }); - it('handles path selection on a base path that doesn\'t exist yet', () => { + it(`handles path selection on a base path that doesn't exist yet`, () => { const nonExistentSubStore = ngRedux.configureSubStore( ['sure', 'whatever'], - (state: any, action: any) => ({ ...state, value: action.newValue })); - nonExistentSubStore.select([ 'value' ]) + (state: any, action: any) => ({ ...state, value: action.newValue }) + ); + nonExistentSubStore + .select(['value']) .take(2) .toArray() - .subscribe(v => expect(v).toEqual([ undefined, 'now I exist' ])); + .subscribe(v => expect(v).toEqual([undefined, 'now I exist'])); nonExistentSubStore.dispatch({ type: 'nvm', newValue: 'now I exist' }); }); - it('handles function selection on a base path that doesn\'t exist yet', () => { + it(`handles function selection on a base path that doesn't exist yet`, () => { const nonExistentSubStore = ngRedux.configureSubStore( ['sure', 'whatever'], - (state: any, action: any) => ({ ...state, value: action.newValue })); - nonExistentSubStore.select(s => s ? s.value : s) + (state: any, action: any) => ({ ...state, value: action.newValue }) + ); + nonExistentSubStore + .select(s => (s ? s.value : s)) .take(2) .toArray() - .subscribe(v => expect(v).toEqual([ undefined, 'now I exist' ])); + .subscribe(v => expect(v).toEqual([undefined, 'now I exist'])); nonExistentSubStore.dispatch({ type: 'nvm', newValue: 'now I exist' }); }); it('can create its own sub-store', () => { const subSubStore = subStore.configureSubStore(['wat'], defaultReducer); expect(subSubStore.getState()).toEqual({ quux: 3 }); - subSubStore.select('quux').subscribe(quux => - expect(quux).toEqual(3)); + subSubStore.select('quux').subscribe(quux => expect(quux).toEqual(3)); - expect(subSubStore.dispatch({ type: 'MY_ACTION' })) - .toEqual({ - type: 'MY_ACTION', - '@angular-redux::fractalkey': '["foo","bar","wat"]'}); + expect(subSubStore.dispatch({ type: 'MY_ACTION' })).toEqual({ + type: 'MY_ACTION', + '@angular-redux::fractalkey': '["foo","bar","wat"]', + }); }); }); diff --git a/src/components/sub-store.ts b/src/components/sub-store.ts index bebab72..4b8f866 100644 --- a/src/components/sub-store.ts +++ b/src/components/sub-store.ts @@ -8,13 +8,13 @@ import { PathSelector, Selector, Comparator, - resolveToFunctionSelector + resolveToFunctionSelector, } from './selectors'; import { NgRedux } from './ng-redux'; import { ObservableStore } from './observable-store'; import { registerFractalReducer, - replaceLocalReducer + replaceLocalReducer, } from './fractal-reducer-map'; /** @hidden */ @@ -30,7 +30,7 @@ export class SubStore implements ObservableStore { dispatch: Dispatch = action => this.rootStore.dispatch( Object.assign({}, action, { - '@angular-redux::fractalkey': JSON.stringify(this.basePath) + '@angular-redux::fractalkey': JSON.stringify(this.basePath), }) ); diff --git a/src/decorators/dispatch.spec.ts b/src/decorators/dispatch.spec.ts index 39f074c..a1a0261 100644 --- a/src/decorators/dispatch.spec.ts +++ b/src/decorators/dispatch.spec.ts @@ -6,7 +6,7 @@ import { dispatch } from './dispatch'; import { WithSubStore } from './with-sub-store'; class MockNgZone { - run = (fn: Function) => fn() + run = (fn: Function) => fn(); } interface IAppState { @@ -25,13 +25,14 @@ describe('@dispatch', () => { beforeEach(() => { defaultState = { value: 'init-value', - instanceProperty: 'init-instanceProperty' + instanceProperty: 'init-instanceProperty', }; rootReducer = (state = defaultState, action: PayloadAction) => { switch (action.type) { case 'TEST': - const { value = null, instanceProperty = null } = action.payload || {}; + const { value = null, instanceProperty = null } = + action.payload || {}; return Object.assign({}, state, { value, instanceProperty }); default: return state; @@ -45,21 +46,23 @@ describe('@dispatch', () => { describe('on the RootStore', () => { class TestClass { - instanceProperty = 'test' + instanceProperty = 'test'; @dispatch() externalFunction: (value: string) => PayloadAction; - @dispatch() classMethod(value: string): PayloadAction { + @dispatch() + classMethod(value: string): PayloadAction { return { type: 'TEST', - payload: { value, instanceProperty: this.instanceProperty } - } + payload: { value, instanceProperty: this.instanceProperty }, + }; } - @dispatch() boundProperty = (value: string): PayloadAction => ({ + @dispatch() + boundProperty = (value: string): PayloadAction => ({ type: 'TEST', - payload: { value, instanceProperty: this.instanceProperty } - }) + payload: { value, instanceProperty: this.instanceProperty }, + }); } let instance: TestClass; @@ -74,15 +77,16 @@ describe('@dispatch', () => { type: 'TEST', payload: { value: 'class method', - instanceProperty: 'test' - } + instanceProperty: 'test', + }, }; expect(result.type).toBe('TEST'); expect(result.payload && result.payload.value).toBe('class method'); expect(result.payload && result.payload.instanceProperty).toBe('test'); expect(NgRedux.instance).toBeTruthy(); - expect(NgRedux.instance && NgRedux.instance.dispatch) - .toHaveBeenCalledWith(expectedArgs) + expect( + NgRedux.instance && NgRedux.instance.dispatch + ).toHaveBeenCalledWith(expectedArgs); }); it('should work with property initalizers', () => { @@ -91,18 +95,19 @@ describe('@dispatch', () => { type: 'TEST', payload: { value: 'bound property', - instanceProperty: 'test' - } - } + instanceProperty: 'test', + }, + }; expect(result.type).toBe('TEST'); expect(result.payload && result.payload.value).toBe('bound property'); expect(result.payload && result.payload.instanceProperty).toBe('test'); expect(NgRedux.instance).toBeTruthy(); - expect(NgRedux.instance && NgRedux.instance.dispatch) - .toHaveBeenCalledWith(expectedArgs) + expect( + NgRedux.instance && NgRedux.instance.dispatch + ).toHaveBeenCalledWith(expectedArgs); }); - it('work with properties bound to function defined outside of the class', () => { + it('work with props bound to function defined outside of class', () => { const instanceProperty = 'test'; function externalFunction(value: string) { return { @@ -110,8 +115,8 @@ describe('@dispatch', () => { payload: { value, instanceProperty, - } - } + }, + }; } instance.externalFunction = externalFunction; const result = instance.externalFunction('external function'); @@ -119,15 +124,16 @@ describe('@dispatch', () => { type: 'TEST', payload: { value: 'external function', - instanceProperty: 'test' - } - } + instanceProperty: 'test', + }, + }; expect(result.type).toBe('TEST'); expect(result.payload && result.payload.value).toBe('external function'); expect(result.payload && result.payload.instanceProperty).toBe('test'); expect(NgRedux.instance).toBeTruthy(); - expect(NgRedux.instance && NgRedux.instance.dispatch) - .toHaveBeenCalledWith(expectedArgs) + expect( + NgRedux.instance && NgRedux.instance.dispatch + ).toHaveBeenCalledWith(expectedArgs); }); }); @@ -138,13 +144,14 @@ describe('@dispatch', () => { localReducer, }) class TestClass { - getBasePath = () => [ 'bar', 'foo' ] + getBasePath = () => ['bar', 'foo']; - @dispatch() decoratedActionCreator(value: string): PayloadAction { + @dispatch() + decoratedActionCreator(value: string): PayloadAction { return { type: 'TEST', payload: { value }, - } + }; } } @@ -157,12 +164,13 @@ describe('@dispatch', () => { it('scopes decorated actions to the base path', () => { instance.decoratedActionCreator('hello'); - expect(NgRedux.instance && NgRedux.instance.dispatch) - .toHaveBeenCalledWith({ - type: 'TEST', - payload: { value: 'hello' }, - '@angular-redux::fractalkey': '["bar","foo"]', - }); + expect( + NgRedux.instance && NgRedux.instance.dispatch + ).toHaveBeenCalledWith({ + type: 'TEST', + payload: { value: 'hello' }, + '@angular-redux::fractalkey': '["bar","foo"]', + }); }); }); }); diff --git a/src/decorators/dispatch.ts b/src/decorators/dispatch.ts index 9d9a51c..6c0e38b 100644 --- a/src/decorators/dispatch.ts +++ b/src/decorators/dispatch.ts @@ -11,31 +11,31 @@ export function dispatch(): PropertyDecorator { return function decorate( target: Object, key: string | symbol | number, - descriptor?: PropertyDescriptor): PropertyDescriptor { - + descriptor?: PropertyDescriptor + ): PropertyDescriptor { let originalMethod: Function; - const wrapped = function (this: any, ...args: any[]) { + const wrapped = function(this: any, ...args: any[]) { const result = originalMethod.apply(this, args); const store = getBaseStore(this) || NgRedux.instance; if (store) { store.dispatch(result); } return result; - } + }; descriptor = descriptor || Object.getOwnPropertyDescriptor(target, key); if (descriptor === undefined) { const dispatchDescriptor: PropertyDescriptor = { get: () => wrapped, - set: (setMethod) => originalMethod = setMethod, - } - Object.defineProperty(target, key, dispatchDescriptor) + set: setMethod => (originalMethod = setMethod), + }; + Object.defineProperty(target, key, dispatchDescriptor); return dispatchDescriptor; } else { originalMethod = descriptor.value; descriptor.value = wrapped; return descriptor; } - } + }; } diff --git a/src/decorators/helpers.ts b/src/decorators/helpers.ts index ef2fb48..1660351 100644 --- a/src/decorators/helpers.ts +++ b/src/decorators/helpers.ts @@ -5,7 +5,7 @@ import { Selector, PathSelector, Comparator, - Transformer + Transformer, } from '../components/selectors'; import { distinctUntilChanged } from 'rxjs/operators/distinctUntilChanged'; @@ -31,29 +31,31 @@ export interface IFractalStoreOptions { } /** - * OPTIONS_KEY: this is per-class (static) and holds the config from the @SubStore - * decorator. + * OPTIONS_KEY: this is per-class (static) and holds the config from the + * @SubStore decorator. */ const OPTIONS_KEY = '@angular-redux::substore::class::options'; /** - * INSTANCE_SUBSTORE_KEY, INSTANCE_SELECTIONS_KEY: these are per-instance (non-static) and - * holds references to the substores/selected observables to be used by an instance of a - * decorated class. I'm not using reflect-metadata here because I want + * INSTANCE_SUBSTORE_KEY, INSTANCE_SELECTIONS_KEY: these are per-instance + * (non-static) and holds references to the substores/selected observables + * to be used by an instance of a decorated class. I'm not using + * reflect-metadata here because I want * - * 1. different instances to have different substores in the case where `basePathMethodName` - * is dynamic. - * 2. the instance substore to be garbage collected when the instance is no longer reachable. - * - * This is therefore an own-property on the actual instance of the decorated class. + * 1. different instances to have different substores in the case where + * `basePathMethodName` is dynamic. + * 2. the instance substore to be garbage collected when the instance is no + * longer reachable. + * This is therefore an own-property on the actual instance of the decorated + * class. */ const INSTANCE_SUBSTORE_KEY = '@angular-redux::substore::instance::store'; const INSTANCE_SELECTIONS_KEY = '@angular-redux::substore::instance::selections'; /** - * Used to detect when the base path changes - this allows components to dynamically adjust - * their selections if necessary. + * Used to detect when the base path changes - this allows components to + * dynamically adjust their selections if necessary. */ const INSTANCE_BASE_PATH_KEY = '@angular-redux::substore::instance::basepath'; diff --git a/src/decorators/select.spec.ts b/src/decorators/select.spec.ts index f9564c5..21af0f9 100644 --- a/src/decorators/select.spec.ts +++ b/src/decorators/select.spec.ts @@ -38,6 +38,7 @@ describe('Select decorators', () => { describe('@select', () => { describe('when passed no arguments', () => { + // tslint:disable-next-line:max-line-length it('binds to a store property that matches the name of the class property', done => { class MockClass { @select() baz: Observable; @@ -55,6 +56,7 @@ describe('Select decorators', () => { ngRedux.dispatch({ type: 'nvm', payload: 1 }); }); + // tslint:disable-next-line:max-line-length it('binds by name ignoring any $ characters in the class property name', done => { class MockClass { @select() baz$: Observable; @@ -74,6 +76,7 @@ describe('Select decorators', () => { }); describe('when passed a string', () => { + // tslint:disable-next-line:max-line-length it('binds to the store property whose name matches the string value', done => { class MockClass { @select('baz') obs$: Observable; diff --git a/src/decorators/select.ts b/src/decorators/select.ts index 2854023..413a3c2 100644 --- a/src/decorators/select.ts +++ b/src/decorators/select.ts @@ -35,13 +35,14 @@ export function select( } /** - * Selects an observable using the given path selector, and runs it through the given - * transformer function. A transformer function takes the store observable as an input and - * returns a derived observable from it. That derived observable is run through - * distinctUntilChanges with the given optional comparator and attached to the store property. + * Selects an observable using the given path selector, and runs it through the + * given transformer function. A transformer function takes the store + * observable as an input and returns a derived observable from it. That derived + * observable is run through distinctUntilChanges with the given optional + * comparator and attached to the store property. * - * Think of a Transformer as a FunctionSelector that operates on observables instead of - * values. + * Think of a Transformer as a FunctionSelector that operates on observables + * instead of values. * * ```ts * import { select$ } from 'angular-redux/store'; @@ -79,7 +80,7 @@ function decorate( Object.defineProperty(target, key, { get: getter, enumerable: true, - configurable: true + configurable: true, }); } }; diff --git a/src/decorators/with-sub-store.spec.ts b/src/decorators/with-sub-store.spec.ts index 19f2966..64d7209 100644 --- a/src/decorators/with-sub-store.spec.ts +++ b/src/decorators/with-sub-store.spec.ts @@ -12,7 +12,9 @@ import { PathSelector } from '../components/selectors'; import { NgRedux } from '../components/ng-redux'; import { RootStore } from '../components/root-store'; -class MockNgZone { run = (fn: Function) => fn() } +class MockNgZone { + run = (fn: Function) => fn(); +} describe('@WithSubStore', () => { let ngRedux: NgRedux; @@ -23,15 +25,13 @@ describe('@WithSubStore', () => { const defaultState = { foo: 'Root Foo!', a: { - b: { foo: 'Foo!' } - } + b: { foo: 'Foo!' }, + }, }; ngRedux = new RootStore(new MockNgZone() as NgZone); NgRedux.instance = ngRedux; - ngRedux.configureStore( - (state: any, _: Action) => state, - defaultState); + ngRedux.configureStore((state: any, _: Action) => state, defaultState); }); describe('on the class causes @select to', () => { @@ -39,86 +39,77 @@ describe('@WithSubStore', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { @select() foo: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.foo - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.foo.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('use a substore for inferred-name selections with $ on the end', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { @select() foo$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.foo$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.foo$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('use a substore for a property selector', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { @select('foo') obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.obs$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.obs$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('use a substore for a function selector', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { - @select(s => s.foo) obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + @select(s => s.foo) + obs$: Observable; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.obs$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.obs$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('use a substore for a path selector', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { - @select(['b', 'foo']) obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a' ]; - }; + @select(['b', 'foo']) + obs$: Observable; + getSubStorePath = (): PathSelector => ['a']; + } const testInstance = new TestClass(); - testInstance.obs$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.obs$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('use a substore for a property selector with a comparator', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { - @select('foo', (x, y) => x !== y) obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + @select('foo', (x, y) => x !== y) + obs$: Observable; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.obs$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.obs$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('return a stable reference for the decorated property', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { @select('foo') obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); @@ -131,22 +122,24 @@ describe('@WithSubStore', () => { }); it('handle a base path with no extant store data', () => { - const iDontExistYetReducer = - (state: any, action: Action & { newValue?: string }) => - ({ ...state, nonexistentkey: action.newValue }); + const iDontExistYetReducer = ( + state: any, + action: Action & { newValue?: string } + ) => ({ ...state, nonexistentkey: action.newValue }); @WithSubStore({ basePathMethodName, localReducer: iDontExistYetReducer }) class TestClass { @select('nonexistentkey') obs$: Observable; - getSubStorePath = (): PathSelector => [ 'I', 'don\'t', 'exist', 'yet' ]; - @dispatch() makeItExist = (newValue: string) => ({ type: 'nvm', newValue }); - }; + getSubStorePath = (): PathSelector => ['I', `don't`, 'exist', 'yet']; + @dispatch() + makeItExist = (newValue: string) => ({ type: 'nvm', newValue }); + } const testInstance = new TestClass(); testInstance.obs$ .take(2) .toArray() - .subscribe(v => expect(v).toEqual([ undefined, 'now I exist' ])); + .subscribe(v => expect(v).toEqual([undefined, 'now I exist'])); testInstance.makeItExist('now I exist'); }); }); @@ -155,56 +148,49 @@ describe('@WithSubStore', () => { it('use a substore for a property selector', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { - @select$('foo', o$ => o$.map(x => x)) obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + @select$('foo', o$ => o$.map(x => x)) + obs$: Observable; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.obs$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.obs$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('use a substore for a function selector', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { - @select$(s => s.foo, o$ => o$.map(x => x)) obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + @select$(s => s.foo, o$ => o$.map(x => x)) + obs$: Observable; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.obs$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.obs$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('use a substore for a path selector', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { - @select$(['b', 'foo'], o$ => o$.map(x => x)) obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a' ]; - }; + @select$(['b', 'foo'], o$ => o$.map(x => x)) + obs$: Observable; + getSubStorePath = (): PathSelector => ['a']; + } const testInstance = new TestClass(); - testInstance.obs$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.obs$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('use a substore for a property selector with a comparator', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { - @select$( - 'foo', - o$ => o$.map(x => x), - (x, y) => x !== y) obs$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + @select$('foo', o$ => o$.map(x => x), (x, y) => x !== y) + obs$: Observable; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.obs$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.obs$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); }); @@ -215,13 +201,13 @@ describe('@WithSubStore', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { @dispatch() createFooAction = () => ({ type: 'FOO' }); - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } new TestClass().createFooAction(); expect(ngRedux.dispatch).toHaveBeenCalledWith({ type: 'FOO', - '@angular-redux::fractalkey': JSON.stringify([ 'a', 'b' ]), + '@angular-redux::fractalkey': JSON.stringify(['a', 'b']), }); }); }); @@ -232,13 +218,11 @@ describe('@WithSubStore', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { @select() foo$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.foo$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.foo$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('@Component the other way round', () => { @@ -246,13 +230,11 @@ describe('@WithSubStore', () => { @Component({ template: '

Wat

' }) class TestClass { @select() foo$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.foo$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.foo$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('@Injectable', () => { @@ -260,13 +242,11 @@ describe('@WithSubStore', () => { @WithSubStore({ basePathMethodName, localReducer }) class TestClass { @select() foo$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.foo$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.foo$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('@Injectable in the other order', () => { @@ -274,17 +254,16 @@ describe('@WithSubStore', () => { @Injectable() class TestClass { @select() foo$: Observable; - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; - }; + getSubStorePath = (): PathSelector => ['a', 'b']; + } const testInstance = new TestClass(); - testInstance.foo$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.foo$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); }); describe('with inheritance', () => { + // tslint:disable-next-line:max-line-length it('lets you select in a super class against a path from the sub class', () => { @WithSubStore({ basePathMethodName, localReducer }) class SuperClass { @@ -292,19 +271,18 @@ describe('@WithSubStore', () => { } class SubClass extends SuperClass { - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; + getSubStorePath = (): PathSelector => ['a', 'b']; } const testInstance = new SubClass(); - testInstance.foo$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.foo$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); + // tslint:disable-next-line:max-line-length it('lets you select in a sub class against a path from the super class', () => { @WithSubStore({ basePathMethodName, localReducer }) class SuperClass { - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; + getSubStorePath = (): PathSelector => ['a', 'b']; } class SubClass extends SuperClass { @@ -312,9 +290,7 @@ describe('@WithSubStore', () => { } const testInstance = new SubClass(); - testInstance.foo$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testInstance.foo$.take(1).subscribe(v => expect(v).toEqual('Foo!')); }); it('modifies behaviour of superclass selects in the subclass only', () => { @@ -324,13 +300,11 @@ describe('@WithSubStore', () => { @WithSubStore({ basePathMethodName, localReducer }) class SubClass extends SuperClass { - getSubStorePath = (): PathSelector => [ 'a', 'b' ]; + getSubStorePath = (): PathSelector => ['a', 'b']; } const testSubInstance = new SubClass(); - testSubInstance.foo$ - .take(1) - .subscribe(v => expect(v).toEqual('Foo!')); + testSubInstance.foo$.take(1).subscribe(v => expect(v).toEqual('Foo!')); const testSuperInstance = new SuperClass(); testSuperInstance.foo$ diff --git a/src/decorators/with-sub-store.ts b/src/decorators/with-sub-store.ts index dad472e..a7b5458 100644 --- a/src/decorators/with-sub-store.ts +++ b/src/decorators/with-sub-store.ts @@ -4,17 +4,18 @@ import { IFractalStoreOptions, setClassOptions } from './helpers'; * Modifies the behaviour of any `@select`, `@select$`, or `@dispatch` * decorators to operate on a substore defined by the IFractalStoreOptions. * - * See https://github.com/angular-redux/store/blob/master/articles/fractal-store.md + * See: + * https://github.com/angular-redux/store/blob/master/articles/fractal-store.md * for more information about SubStores. */ export function WithSubStore({ basePathMethodName, - localReducer + localReducer, }: IFractalStoreOptions): ClassDecorator { return function decorate(constructor: Function): void { setClassOptions(constructor, { basePathMethodName, localReducer, }); - } + }; } diff --git a/src/index.ts b/src/index.ts index 7d18948..84c25cc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,6 +18,7 @@ import { NgReduxModule } from './ng-redux.module'; // Warning: don't do this: // export * from './foo' // ... because it breaks rollup. See +// tslint:disable-next-line:max-line-length // https://github.com/rollup/rollup/wiki/Troubleshooting#name-is-not-exported-by-module export { NgRedux, diff --git a/src/ng-redux.module.ts b/src/ng-redux.module.ts index 0915b60..cdf07ef 100644 --- a/src/ng-redux.module.ts +++ b/src/ng-redux.module.ts @@ -11,7 +11,7 @@ export function _ngReduxFactory(ngZone: NgZone) { @NgModule({ providers: [ DevToolsExtension, - { provide: NgRedux, useFactory: _ngReduxFactory, deps: [ NgZone ] } - ] + { provide: NgRedux, useFactory: _ngReduxFactory, deps: [NgZone] }, + ], }) -export class NgReduxModule { }; +export class NgReduxModule {} diff --git a/src/utils/assert.ts b/src/utils/assert.ts index 21aadd8..6843c62 100644 --- a/src/utils/assert.ts +++ b/src/utils/assert.ts @@ -1,6 +1,6 @@ /** @hidden */ export const assert = (condition: boolean, message: string): void => { if (!condition) { - throw new Error(message) + throw new Error(message); } -} +}; diff --git a/src/utils/get-in.spec.ts b/src/utils/get-in.spec.ts index a9c6823..7b2f9a3 100644 --- a/src/utils/get-in.spec.ts +++ b/src/utils/get-in.spec.ts @@ -3,17 +3,17 @@ import { getIn } from './get-in'; describe('getIn', () => { it('should select a first-level prop', () => { const test = { foo: 1 }; - expect(getIn(test, [ 'foo' ])).toEqual(1); + expect(getIn(test, ['foo'])).toEqual(1); }); it('should select a second-level prop', () => { const test = { foo: { bar: 2 } }; - expect(getIn(test, [ 'foo', 'bar' ])).toEqual(2); + expect(getIn(test, ['foo', 'bar'])).toEqual(2); }); it('should select a third-level prop', () => { const test = { foo: { bar: { quux: 3 } } }; - expect(getIn(test, [ 'foo', 'bar', 'quux' ])).toEqual(3); + expect(getIn(test, ['foo', 'bar', 'quux'])).toEqual(3); }); it('should select falsy values properly', () => { @@ -21,12 +21,12 @@ describe('getIn', () => { a: false, b: 0, c: '', - d: undefined + d: undefined, }; - expect(getIn(test, [ 'a' ])).toEqual(false); - expect(getIn(test, [ 'b' ])).toEqual(0); - expect(getIn(test, [ 'c' ])).toEqual(''); - expect(getIn(test, [ 'd' ])).toEqual(undefined); + expect(getIn(test, ['a'])).toEqual(false); + expect(getIn(test, ['b'])).toEqual(0); + expect(getIn(test, ['c'])).toEqual(''); + expect(getIn(test, ['d'])).toEqual(undefined); }); it('should select nested falsy values properly', () => { @@ -35,41 +35,41 @@ describe('getIn', () => { a: false, b: 0, c: '', - d: undefined - } + d: undefined, + }, }; - expect(getIn(test, [ 'foo', 'a' ])).toEqual(false); - expect(getIn(test, [ 'foo', 'b' ])).toEqual(0); - expect(getIn(test, [ 'foo', 'c' ])).toEqual(''); - expect(getIn(test, [ 'foo', 'd' ])).toEqual(undefined); + expect(getIn(test, ['foo', 'a'])).toEqual(false); + expect(getIn(test, ['foo', 'b'])).toEqual(0); + expect(getIn(test, ['foo', 'c'])).toEqual(''); + expect(getIn(test, ['foo', 'd'])).toEqual(undefined); }); it('should not freak if the object is null', () => - expect(getIn(null, [ 'foo', 'd' ])).toEqual(null)); + expect(getIn(null, ['foo', 'd'])).toEqual(null)); it('should not freak if the object is undefined', () => - expect(getIn(undefined, [ 'foo', 'd' ])).toEqual(undefined)); + expect(getIn(undefined, ['foo', 'd'])).toEqual(undefined)); it('should not freak if the object is a primitive', () => - expect(getIn(42, [ 'foo', 'd' ])).toEqual(undefined)); + expect(getIn(42, ['foo', 'd'])).toEqual(undefined)); it('should return undefined for a nonexistent prop', () => { const test = { foo: 1 }; - expect(getIn(test, [ 'bar' ])).toBe(undefined); + expect(getIn(test, ['bar'])).toBe(undefined); }); it('should return undefined for a nonexistent path', () => { const test = { foo: 1 }; - expect(getIn(test, [ 'bar', 'quux' ])).toBe(undefined); + expect(getIn(test, ['bar', 'quux'])).toBe(undefined); }); it('should return undefined for a nested nonexistent prop', () => { const test = { foo: 1 }; - expect(getIn(test, [ 'foo', 'bar' ])).toBe(undefined); + expect(getIn(test, ['foo', 'bar'])).toBe(undefined); }); it('should select array elements properly', () => { - const test = [ 'foo', 'bar' ]; + const test = ['foo', 'bar']; expect(getIn(test, [0])).toEqual('foo'); expect(getIn(test, ['0'])).toEqual('foo'); expect(getIn(test, [1])).toEqual('bar'); @@ -79,7 +79,7 @@ describe('getIn', () => { }); it('should select nested array elements properly', () => { - const test = { 'quux': [ 'foo', 'bar' ] }; + const test = { quux: ['foo', 'bar'] }; expect(getIn(test, ['quux', 0])).toEqual('foo'); expect(getIn(test, ['quux', '0'])).toEqual('foo'); expect(getIn(test, ['quux', 1])).toEqual('bar'); @@ -89,12 +89,13 @@ describe('getIn', () => { }); it('should defer to a native getIn function if it exists on the data', () => { - const testPath = [ 'foo', 'bar' ]; + const testPath = ['foo', 'bar']; const test = { - getIn: (path: (string | number)[]) => path === testPath ? 42 : undefined, + getIn: (path: (string | number)[]) => + path === testPath ? 42 : undefined, }; expect(getIn(test, testPath)).toEqual(42); - expect(getIn(test, [ 'some', 'path' ])).toBe(undefined); + expect(getIn(test, ['some', 'path'])).toBe(undefined); }); }); diff --git a/src/utils/get-in.ts b/src/utils/get-in.ts index 32d9042..e5acb78 100644 --- a/src/utils/get-in.ts +++ b/src/utils/get-in.ts @@ -4,7 +4,10 @@ * * @hidden */ -export function getIn(v: any | undefined, pathElems: (string | number)[]): any | undefined { +export function getIn( + v: any | undefined, + pathElems: (string | number)[] +): any | undefined { if (!v) { return v; } @@ -14,7 +17,7 @@ export function getIn(v: any | undefined, pathElems: (string | number)[]): any | return v.getIn(pathElems); } - const [ firstElem, ...restElems] = pathElems; + const [firstElem, ...restElems] = pathElems; if (undefined === v[firstElem]) { return undefined; diff --git a/src/utils/set-in.spec.ts b/src/utils/set-in.spec.ts index 1ab07d2..3f1d9a1 100644 --- a/src/utils/set-in.spec.ts +++ b/src/utils/set-in.spec.ts @@ -3,13 +3,13 @@ import { setIn } from './set-in'; describe('setIn', () => { it('performs a shallow set correctly without mutation', () => { const original = { a: 1 }; - expect(setIn(original, ['b'], 2)).toEqual({ a: 1, b: 2}); - expect(original).toEqual({ a: 1}); + expect(setIn(original, ['b'], 2)).toEqual({ a: 1, b: 2 }); + expect(original).toEqual({ a: 1 }); }); it('performs a deeply nested set correctly without mutation', () => { const original = { a: 1 }; - const expected = { + const expected = { a: 1, b: { c: { @@ -19,15 +19,16 @@ describe('setIn', () => { }; expect(setIn(original, ['b', 'c', 'd'], 2)).toEqual(expected); - expect(original).toEqual({ a: 1}); + expect(original).toEqual({ a: 1 }); }); - it ('performs a deeply nested set with existing keys without mutation', () => { + it('performs a deeply nested set with existing keys without mutation', () => { const original = { a: 1, b: { wat: 3, - }}; + }, + }; const expected = { a: 1, b: { @@ -39,6 +40,6 @@ describe('setIn', () => { }; expect(setIn(original, ['b', 'c', 'd'], 2)).toEqual(expected); - expect(original).toEqual({ a: 1, b: { wat: 3, } }); + expect(original).toEqual({ a: 1, b: { wat: 3 } }); }); }); diff --git a/src/utils/set-in.ts b/src/utils/set-in.ts index 0e2f303..6e795f7 100644 --- a/src/utils/set-in.ts +++ b/src/utils/set-in.ts @@ -7,10 +7,12 @@ */ export const setIn = ( obj: any, - [ firstElem, ...restElems ]: (string | number)[], - value: any): Object => ({ - ...obj, - [firstElem]: restElems.length === 0 ? - value : - setIn(obj[firstElem] || {}, restElems, value) - }); + [firstElem, ...restElems]: (string | number)[], + value: any +): Object => ({ + ...obj, + [firstElem]: + restElems.length === 0 + ? value + : setIn(obj[firstElem] || {}, restElems, value), +}); diff --git a/testing/ng-redux-testing.module.ts b/testing/ng-redux-testing.module.ts index c4fec52..de35971 100644 --- a/testing/ng-redux-testing.module.ts +++ b/testing/ng-redux-testing.module.ts @@ -4,7 +4,7 @@ import { MockNgRedux } from './ng-redux.mock'; import { MockDevToolsExtension } from './dev-tools.mock'; // Needs to be initialized early so @select's use the mocked version too. -const mockNgRedux = MockNgRedux.getInstance() ; +const mockNgRedux = MockNgRedux.getInstance(); /** @hidden */ export function _mockNgReduxFactory() { diff --git a/testing/ng-redux.mock.spec.ts b/testing/ng-redux.mock.spec.ts index 0ff5959..6e0f737 100644 --- a/testing/ng-redux.mock.spec.ts +++ b/testing/ng-redux.mock.spec.ts @@ -6,17 +6,16 @@ import 'rxjs/add/operator/toArray'; import { MockNgRedux } from './ng-redux.mock'; import { NgRedux, select, select$ } from '../src'; -@Component( { +@Component({ template: 'whatever', selector: 'test-component', }) class TestComponent { - @select('foo') - readonly obs$: Observable; - + @select('foo') readonly obs$: Observable; + @select$('bar', obs$ => obs$.map(x => 2 * x)) readonly barTimesTwo$: Observable; - + readonly baz$: Observable; constructor(ngRedux: NgRedux) { @@ -28,20 +27,18 @@ describe('NgReduxMock', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [TestComponent], - providers: [ { provide: NgRedux, useFactory: MockNgRedux.getInstance } ] + providers: [{ provide: NgRedux, useFactory: MockNgRedux.getInstance }], }).compileComponents(); MockNgRedux.reset(); }); it('should reset stubs used by @select', () => { - const instance = TestBed - .createComponent(TestComponent) - .debugElement + const instance = TestBed.createComponent(TestComponent).debugElement .componentInstance; const stub1 = MockNgRedux.getSelectorStub('foo'); - stub1.next(1) + stub1.next(1); stub1.next(2); stub1.complete(); @@ -53,7 +50,7 @@ describe('NgReduxMock', () => { // Reset should result in a new stub getting created. const stub2 = MockNgRedux.getSelectorStub('foo'); - expect(stub1 === stub2).toBe(false) + expect(stub1 === stub2).toBe(false); stub2.next(3); stub2.complete(); @@ -64,13 +61,11 @@ describe('NgReduxMock', () => { }); it('should reset stubs used by @select$', () => { - const instance = TestBed - .createComponent(TestComponent) - .debugElement + const instance = TestBed.createComponent(TestComponent).debugElement .componentInstance; const stub1 = MockNgRedux.getSelectorStub('bar'); - stub1.next(1) + stub1.next(1); stub1.next(2); stub1.complete(); @@ -82,7 +77,7 @@ describe('NgReduxMock', () => { // Reset should result in a new stub getting created. const stub2 = MockNgRedux.getSelectorStub('bar'); - expect(stub1 === stub2).toBe(false) + expect(stub1 === stub2).toBe(false); stub2.next(3); stub2.complete(); @@ -93,13 +88,11 @@ describe('NgReduxMock', () => { }); it('should reset stubs used by .select', () => { - const instance = TestBed - .createComponent(TestComponent) - .debugElement + const instance = TestBed.createComponent(TestComponent).debugElement .componentInstance; const stub1 = MockNgRedux.getSelectorStub('baz'); - stub1.next(1) + stub1.next(1); stub1.next(2); stub1.complete(); @@ -111,7 +104,7 @@ describe('NgReduxMock', () => { // Reset should result in a new stub getting created. const stub2 = MockNgRedux.getSelectorStub('baz'); - expect(stub1 === stub2).toBe(false) + expect(stub1 === stub2).toBe(false); stub2.next(3); stub2.complete(); diff --git a/testing/ng-redux.mock.ts b/testing/ng-redux.mock.ts index ba2fcbb..d3ff3f1 100644 --- a/testing/ng-redux.mock.ts +++ b/testing/ng-redux.mock.ts @@ -2,7 +2,7 @@ import { NgRedux, Selector, Comparator, - PathSelector + PathSelector, } from '@angular-redux/store'; import { Reducer, Dispatch, Middleware, Store, StoreEnhancer } from 'redux'; import { Observable } from 'rxjs/Observable'; diff --git a/testing/observable-store.mock.ts b/testing/observable-store.mock.ts index 9d81c78..bc59808 100644 --- a/testing/observable-store.mock.ts +++ b/testing/observable-store.mock.ts @@ -24,7 +24,7 @@ export interface SelectorStubMap { /** @hidden */ export interface SubStoreStubMap { - [basePath: string]: MockObservableStore + [basePath: string]: MockObservableStore; } /** @hidden */ @@ -34,14 +34,15 @@ export class MockObservableStore implements ObservableStore { getSelectorStub = ( selector?: Selector, - comparator?: Comparator): Subject => - this.initSelectorStub(selector, comparator).subject; + comparator?: Comparator + ): Subject => + this.initSelectorStub(selector, comparator).subject; reset = () => { Object.keys(this.subStores).forEach(k => this.subStores[k].reset()); this.selections = {}; this.subStores = {}; - } + }; dispatch: Dispatch = action => action; replaceReducer = () => null; @@ -50,27 +51,31 @@ export class MockObservableStore implements ObservableStore { select = ( selector?: Selector, - comparator?: Comparator): Observable => { - const stub = this.initSelectorStub(selector, comparator); - return stub.comparator ? - stub.subject.distinctUntilChanged(stub.comparator) : - stub.subject; - } + comparator?: Comparator + ): Observable => { + const stub = this.initSelectorStub(selector, comparator); + return stub.comparator + ? stub.subject.distinctUntilChanged(stub.comparator) + : stub.subject; + }; configureSubStore = ( basePath: PathSelector, - _: Reducer): MockObservableStore => - this.initSubStore(basePath) + _: Reducer + ): MockObservableStore => this.initSubStore(basePath); - getSubStore = (...pathSelectors: PathSelector[]): MockObservableStore => { - const [ first, ...rest ] = pathSelectors; - return (first ? - this.initSubStore(first).getSubStore(...rest) : - this) as MockObservableStore; - } + getSubStore = ( + ...pathSelectors: PathSelector[] + ): MockObservableStore => { + const [first, ...rest] = pathSelectors; + return (first + ? this.initSubStore(first).getSubStore(...rest) + : this) as MockObservableStore; + }; private initSubStore(basePath: PathSelector) { - const result = this.subStores[JSON.stringify(basePath)] || + const result = + this.subStores[JSON.stringify(basePath)] || new MockObservableStore(); this.subStores[JSON.stringify(basePath)] = result; return result; @@ -78,8 +83,8 @@ export class MockObservableStore implements ObservableStore { private initSelectorStub( selector?: Selector, - comparator?: Comparator): SelectorStubRecord { - + comparator?: Comparator + ): SelectorStubRecord { const key = selector ? selector.toString() : ''; const record = this.selections[key] || { subject: new ReplaySubject(), diff --git a/tslint.json b/tslint.json index 8d00964..17e7248 100644 --- a/tslint.json +++ b/tslint.json @@ -2,38 +2,22 @@ "rules": { "callable-types": true, "class-name": true, - "comment-format": [ - true, - "check-space" - ], + "comment-format": [true, "check-space"], "curly": true, "eofline": true, "forin": true, - "indent": [ - true, - "spaces" - ], + "indent": [true, "spaces"], "label-position": true, - "max-line-length": [ - true, - 140 - ], + "max-line-length": [true, 80], "member-access": false, - "member-ordering": [ - true, - "static-before-instance", - "variables-before-functions" - ], + "member-ordering": { + "options": { + "order": "statics-first" + } + }, "no-arg": true, "no-bitwise": true, - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], + "no-console": [true, "debug", "info", "time", "timeEnd", "trace"], "no-construct": true, "no-debugger": true, "no-duplicate-variable": true, @@ -56,18 +40,10 @@ "check-whitespace" ], "prefer-const": true, - "quotemark": [ - true, - "single" - ], + "quotemark": [true, "single"], "radix": true, - "semicolon": [ - "always" - ], - "triple-equals": [ - true, - "allow-null-check" - ], + "semicolon": [true, "always", "ignore-bound-class-methods"], + "triple-equals": [true, "allow-null-check"], "typedef-whitespace": [ true, { diff --git a/yarn.lock b/yarn.lock index 1f8319c..a2f8a3e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -134,6 +134,10 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" +ansi-escapes@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -146,12 +150,16 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0: +ansi-styles@^3.1.0, ansi-styles@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: color-convert "^1.9.0" +any-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" + any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -163,6 +171,10 @@ anymatch@^1.3.0: micromatch "^2.1.5" normalize-path "^2.0.0" +app-root-path@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" + append-transform@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" @@ -184,6 +196,12 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +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" @@ -397,7 +415,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -430,10 +448,31 @@ chokidar@^1.4.2, chokidar@^1.7.0: optionalDependencies: fsevents "^1.0.0" +ci-info@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4" + cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -474,6 +513,10 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +commander@^2.11.0: + version "2.12.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" + commander@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -513,6 +556,15 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cosmiconfig@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-3.1.0.tgz#640a94bf9847f321800403cd273af60665c73397" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^3.0.0" + require-from-string "^2.0.1" + create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" @@ -550,6 +602,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +date-fns@^1.27.2: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" @@ -570,6 +626,10 @@ decamelize@^1.0.0, decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -626,7 +686,11 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -error-ex@^1.2.0: +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: @@ -640,6 +704,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -668,6 +736,22 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -698,6 +782,13 @@ extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -720,6 +811,10 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" +find-parent-dir@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + find-up@^1.0.0, find-up@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -813,6 +908,10 @@ get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" +get-own-enumerable-property-symbols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -951,6 +1050,14 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +husky@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3" + dependencies: + is-ci "^1.0.10" + normalize-path "^1.0.0" + strip-indent "^2.0.0" + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -963,6 +1070,16 @@ imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1012,6 +1129,16 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" +is-ci@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + dependencies: + ci-info "^1.0.0" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" @@ -1030,6 +1157,10 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" @@ -1052,6 +1183,12 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + is-installed-globally@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" @@ -1075,10 +1212,16 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-obj@^1.0.0: +is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +is-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" + dependencies: + symbol-observable "^0.2.2" + is-path-inside@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" @@ -1093,10 +1236,18 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + 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" @@ -1190,10 +1341,30 @@ jasmine@^2.5.3: glob "^7.0.6" jasmine-core "~2.8.0" +jest-get-type@^21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" + +jest-validate@^21.1.0: + version "21.2.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7" + dependencies: + chalk "^2.0.1" + jest-get-type "^21.2.0" + leven "^2.1.0" + pretty-format "^21.2.1" + js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +js-yaml@^3.9.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -1263,6 +1434,83 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + +lint-staged@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-6.0.0.tgz#7ab7d345f2fe302ff196f1de6a005594ace03210" + dependencies: + app-root-path "^2.0.0" + chalk "^2.1.0" + commander "^2.11.0" + cosmiconfig "^3.1.0" + debug "^3.1.0" + dedent "^0.7.0" + execa "^0.8.0" + find-parent-dir "^0.3.0" + is-glob "^4.0.0" + jest-validate "^21.1.0" + listr "^0.13.0" + lodash "^4.17.4" + log-symbols "^2.0.0" + minimatch "^3.0.0" + npm-which "^3.0.1" + p-map "^1.1.1" + path-is-inside "^1.0.2" + pify "^3.0.0" + staged-git-files "0.0.4" + stringify-object "^3.2.0" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + +listr-update-renderer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + figures "^1.7.0" + indent-string "^2.1.0" + is-observable "^0.2.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.4.0" + listr-verbose-renderer "^0.4.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + ora "^0.2.3" + p-map "^1.1.1" + rxjs "^5.4.2" + stream-to-observable "^0.2.0" + strip-ansi "^3.0.1" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -1347,6 +1595,25 @@ lodash@^4.13.1, lodash@^4.17.4, lodash@^4.2.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +log-symbols@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.1.0.tgz#f35fa60e278832b538dc4dddcbb478a45d3e3be6" + dependencies: + chalk "^2.0.1" + +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -1515,18 +1782,36 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" +npm-path@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.3.tgz#15cff4e1c89a38da77f56f6055b24f975dfb2bbe" + dependencies: + which "^1.2.10" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" dependencies: path-key "^2.0.0" +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -1576,7 +1861,7 @@ 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@^4.1.0: +object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1593,6 +1878,10 @@ once@^1.3.0, once@^1.3.3: dependencies: wrappy "1" +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -1600,6 +1889,15 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" +ora@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" + dependencies: + chalk "^1.1.1" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + object-assign "^4.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" @@ -1625,6 +1923,10 @@ p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -1649,6 +1951,12 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-json@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-3.0.0.tgz#fa6f47b18e23826ead32f263e744d0e1e847fb13" + dependencies: + error-ex "^1.3.1" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -1663,7 +1971,7 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -1725,6 +2033,17 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.9.2.tgz#96bc2132f7a32338e6078aeb29727178c6335827" + +pretty-format@^21.2.1: + version "21.2.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + 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" @@ -1894,6 +2213,10 @@ require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" +require-from-string@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.1.tgz#c545233e9d7da6616e9d59adfb39fc9f588676ff" + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -1908,6 +2231,13 @@ resolve@^1.1.6, resolve@^1.3.2: dependencies: path-parse "^1.0.5" +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -1920,6 +2250,12 @@ rimraf@2, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2. dependencies: glob "^7.0.5" +rxjs@^5.4.2: + version "5.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.5.tgz#e164f11d38eaf29f56f08c3447f74ff02dd84e97" + dependencies: + symbol-observable "1.0.1" + rxjs@^5.5.2: version "5.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.2.tgz#28d403f0071121967f18ad665563255d54236ac3" @@ -1974,6 +2310,10 @@ signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -2031,6 +2371,10 @@ split@0.3: dependencies: through "2" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + sshpk@^1.7.0: version "1.13.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" @@ -2045,12 +2389,22 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" +staged-git-files@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35" + stream-combiner@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" dependencies: duplexer "~0.1.1" +stream-to-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10" + dependencies: + any-observable "^0.2.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -2072,6 +2426,14 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" +stringify-object@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.1.tgz#2720c2eff940854c819f6ee252aaeb581f30624d" + dependencies: + get-own-enumerable-property-symbols "^2.0.1" + is-obj "^1.0.1" + is-regexp "^1.0.0" + stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -2102,6 +2464,10 @@ strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + 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" @@ -2122,6 +2488,14 @@ supports-color@^4.0.0: dependencies: has-flag "^2.0.0" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + +symbol-observable@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" + symbol-observable@^1.0.1, symbol-observable@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" @@ -2395,7 +2769,7 @@ 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.2.4, which@^1.2.9: +which@^1.2.10, which@^1.2.4, which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: From 2169480d730da9a12e75a5a8216715aafe50d728 Mon Sep 17 00:00:00 2001 From: Roy Art Date: Sat, 20 Jan 2018 19:48:32 +0100 Subject: [PATCH 11/22] Adding a way for @dispatch methods to return a value that won't trigger a dispatch (#497) * Adding a way for methods that use the `@dispatch` decorator to return a value that won't trigger a dispatch so they can conditionally dispatch based on any logic that suits the need * Update dispatch.ts --- src/decorators/dispatch.spec.ts | 48 +++++++++++++++++++++++++++++++++ src/decorators/dispatch.ts | 8 +++--- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/src/decorators/dispatch.spec.ts b/src/decorators/dispatch.spec.ts index a1a0261..2465872 100644 --- a/src/decorators/dispatch.spec.ts +++ b/src/decorators/dispatch.spec.ts @@ -34,6 +34,8 @@ describe('@dispatch', () => { const { value = null, instanceProperty = null } = action.payload || {}; return Object.assign({}, state, { value, instanceProperty }); + case 'CONDITIONAL_DISPATCH_TEST': + return { ...state, ...action.payload }; default: return state; } @@ -58,6 +60,23 @@ describe('@dispatch', () => { }; } + @dispatch() + conditionalDispatchMethod( + shouldDispatch: boolean + ): PayloadAction | false { + if (shouldDispatch) { + return { + type: 'CONDITIONAL_DISPATCH_TEST', + payload: { + value: 'Conditional Dispatch Action', + instanceProperty: this.instanceProperty, + }, + }; + } else { + return false; + } + } + @dispatch() boundProperty = (value: string): PayloadAction => ({ type: 'TEST', @@ -89,6 +108,35 @@ describe('@dispatch', () => { ).toHaveBeenCalledWith(expectedArgs); }); + it('should not call dispatch', () => { + const stateBeforeAction = NgRedux.instance && NgRedux.instance.getState(); + const result = instance.conditionalDispatchMethod(false); + expect(result).toBe(false); + expect(NgRedux.instance).toBeTruthy(); + expect(NgRedux.instance && NgRedux.instance.getState()).toEqual( + stateBeforeAction + ); + }); + + it('should call dispatch with result of function normally', () => { + const result = instance.conditionalDispatchMethod(true); + expect(result.type).toBe('CONDITIONAL_DISPATCH_TEST'); + expect(result.payload && result.payload.value).toBe( + 'Conditional Dispatch Action' + ); + expect(result.payload && result.payload.instanceProperty).toBe('test'); + expect(NgRedux.instance).toBeTruthy(); + expect( + NgRedux.instance && NgRedux.instance.dispatch + ).toHaveBeenCalledWith({ + type: 'CONDITIONAL_DISPATCH_TEST', + payload: { + value: 'Conditional Dispatch Action', + instanceProperty: 'test', + }, + }); + }); + it('should work with property initalizers', () => { const result = instance.boundProperty('bound property'); const expectedArgs = { diff --git a/src/decorators/dispatch.ts b/src/decorators/dispatch.ts index 6c0e38b..b0297fa 100644 --- a/src/decorators/dispatch.ts +++ b/src/decorators/dispatch.ts @@ -17,9 +17,11 @@ export function dispatch(): PropertyDecorator { const wrapped = function(this: any, ...args: any[]) { const result = originalMethod.apply(this, args); - const store = getBaseStore(this) || NgRedux.instance; - if (store) { - store.dispatch(result); + if (result !== false) { + const store = getBaseStore(this) || NgRedux.instance; + if (store) { + store.dispatch(result); + } } return result; }; From ae9a658aa9a1297e2289e959240948ec1af1c9fe Mon Sep 17 00:00:00 2001 From: Maksim Krautsou Date: Sat, 20 Jan 2018 19:49:53 +0100 Subject: [PATCH 12/22] Add possibility to access component scope inside of 'transformer' function (#500) * Add possibility to access component scope inside of 'transformer' function. * Fix linting error. * Fix linting error. --- src/components/selectors.ts | 3 ++- src/decorators/helpers.ts | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/selectors.ts b/src/components/selectors.ts index 996357c..668032a 100644 --- a/src/components/selectors.ts +++ b/src/components/selectors.ts @@ -13,7 +13,8 @@ import { Observable } from 'rxjs/Observable'; */ export type Comparator = (x: any, y: any) => boolean; export type Transformer = ( - store$: Observable + store$: Observable, + scope: any ) => Observable; export type PropertySelector = string | number | symbol; export type PathSelector = (string | number)[]; diff --git a/src/decorators/helpers.ts b/src/decorators/helpers.ts index 1660351..9ef1bd9 100644 --- a/src/decorators/helpers.ts +++ b/src/decorators/helpers.ts @@ -173,7 +173,10 @@ export const getInstanceSelection = ( ? store.select(selector, comparator) : store .select(selector) - .pipe(transformer, distinctUntilChanged(comparator))); + .pipe( + obs$ => transformer(obs$, decoratedInstance), + distinctUntilChanged(comparator) + )); return selections[key]; } From bfc3b15e46180d82a94518ddda9b63e9924485f1 Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Sat, 20 Jan 2018 13:59:52 -0500 Subject: [PATCH 13/22] Changelog (#506) --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34b6b35..4a2dbc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ +# 7.1.0 + +## Features + +* Add a way to return a false value from a method decorted with `@dispatch` to allow conditionally preventing a dispatch. [PR#497](https://github.com/angular-redux/store/pull/497) + + +```ts +@dispatch() +selectTab(tab) { + return this.active.id !== tab.id ? { type: .... } : false; +} +``` + +* Add a way to access the decoratde instance inside of transformer for `@select$` [PR#500](https://github.com/angular-redux/store/pull/500) + +```ts +@Input() public anotherInput: string; + +@select$(['selector'], (obs$, inst) => obs$.filter(x => x.name === inst.anotherInput)) +public selectedObs: Observable; +``` + +Shout out to contributers: + +* [@rart](https://github.com/rart) +* [@MaKCbIMKo](https://github.com/MaKCbIMKo) + # 7.0.2 - Fixing Publish * There are no functional changes / fixes in this release. From 6ce3e4ff68df2fe694dfe9ed0b6f03ee8b633eeb Mon Sep 17 00:00:00 2001 From: Evan Schultz Date: Sat, 20 Jan 2018 14:33:27 -0500 Subject: [PATCH 14/22] v7.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 60866ee..374dce4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.0.2", + "version": "7.1.0", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From 913662bbfcb1944ca8a20606bd2daad5791f14d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Bus=C5=82owicz?= Date: Sun, 4 Mar 2018 23:15:30 +0100 Subject: [PATCH 15/22] Fixing Fractal Stores issue with ImmutableJS (#511) * Updating package-lock.json to fix install/build issues * Make setIn use internal setIn of an object if it exists (fixes #463) --- package-lock.json | 1748 ++++++++++++++++++++++++++++++++------ src/utils/set-in.spec.ts | 16 + src/utils/set-in.ts | 6 +- 3 files changed, 1513 insertions(+), 257 deletions(-) diff --git a/package-lock.json b/package-lock.json index f60754f..6b400f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,73 +1,111 @@ { "name": "@angular-redux/store", - "version": "7.0.2-1", + "version": "7.1.0", "lockfileVersion": 1, + "requires": true, "dependencies": { "@angular/animations": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.2.6.tgz", "integrity": "sha1-nZyAoRmwwDaTy9I7uvcosVMf/8c=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/common": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.2.6.tgz", "integrity": "sha1-IQrOS9JON1+LQbpS/rNLGKiH1do=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/compiler": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.2.6.tgz", "integrity": "sha1-ZndW1JXKDUXSBhJooQ1Sr4Ofr/Q=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/compiler-cli": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.2.6.tgz", "integrity": "sha1-iiE1Ipnz69Hj8XWBBUFkVmyjBr4=", - "dev": true + "dev": true, + "requires": { + "@angular/tsc-wrapped": "4.2.6", + "minimist": "1.2.0", + "reflect-metadata": "0.1.3" + } }, "@angular/core": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.2.6.tgz", "integrity": "sha1-DByP8BV/B29KfAtyHKFCPxu+Fk4=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/http": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.2.6.tgz", "integrity": "sha1-SZ4roLvB89cbdt6+wDTJWMrxE04=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/platform-browser": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.2.6.tgz", "integrity": "sha1-oTH/WSIl/mSWvKLJr/YSpNvd9Dc=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/platform-browser-dynamic": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.2.6.tgz", "integrity": "sha1-TmyK0s1c/BeIBBf3fyo0E895HCY=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "@angular/platform-server": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-4.2.6.tgz", "integrity": "sha1-ZuA/2FVIb+BY4j03hgYdkUYpmNs=", - "dev": true + "dev": true, + "requires": { + "parse5": "3.0.2", + "tslib": "1.7.1", + "xhr2": "0.1.4" + } }, "@angular/tsc-wrapped": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.2.6.tgz", "integrity": "sha1-YORLWzjzNA7hTFSlinoHEzxk6Jg=", - "dev": true + "dev": true, + "requires": { + "tsickle": "0.21.6" + } }, "@types/fs-extra": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-2.1.0.tgz", "integrity": "sha1-izUCOcBFXZK408Ym7awZOGD/OV8=", - "dev": true + "dev": true, + "requires": { + "@types/node": "6.0.79" + } }, "@types/handlebars": { "version": "4.0.33", @@ -115,7 +153,10 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.7.2.tgz", "integrity": "sha512-NanpA4ybcKXr32Zg7sgHvOfir/AeoOdN7+8TpnWueHkmPhVZLSPWU4LLl7y7d2FG08jaxE18HZjlATjttmjHCQ==", - "dev": true + "dev": true, + "requires": { + "@types/node": "6.0.79" + } }, "abbrev": { "version": "1.1.0", @@ -127,7 +168,12 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "amdefine": { "version": "1.0.1", @@ -157,13 +203,20 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } }, "arr-flatten": { "version": "1.1.0", @@ -199,7 +252,12 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } }, "balanced-match": { "version": "1.0.0", @@ -217,13 +275,22 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "camelcase": { "version": "1.2.1", @@ -237,19 +304,41 @@ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, - "optional": true + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true + "dev": true, + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } }, "cliui": { "version": "2.1.0", @@ -257,6 +346,11 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -271,7 +365,10 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "dev": true + "dev": true, + "requires": { + "color-name": "1.1.2" + } }, "color-name": { "version": "1.1.2", @@ -301,7 +398,17 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz", "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + } }, "core-js": { "version": "2.4.1", @@ -319,7 +426,10 @@ "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true + "dev": true, + "requires": { + "ms": "2.0.0" + } }, "decamelize": { "version": "1.2.0", @@ -350,19 +460,31 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", - "dev": true + "dev": true, + "requires": { + "end-of-stream": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } }, "end-of-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", "dev": true, + "requires": { + "once": "1.3.3" + }, "dependencies": { "once": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } } } }, @@ -370,7 +492,10 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "es6-promise": { "version": "3.3.1", @@ -394,7 +519,16 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } }, "exit": { "version": "0.1.2", @@ -406,19 +540,28 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true + "dev": true, + "requires": { + "fill-range": "2.2.3" + } }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "filename-regex": { "version": "2.0.1", @@ -430,7 +573,14 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "for-in": { "version": "1.0.2", @@ -442,7 +592,10 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } }, "from": { "version": "0.1.7", @@ -454,7 +607,11 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0" + } }, "fs.realpath": { "version": "1.0.0", @@ -468,6 +625,10 @@ "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", "dev": true, "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, "dependencies": { "abbrev": { "version": "1.1.0", @@ -479,7 +640,11 @@ "version": "4.11.8", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } }, "ansi-regex": { "version": "2.1.1", @@ -496,7 +661,11 @@ "version": "1.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } }, "asn1": { "version": "0.2.3", @@ -537,22 +706,35 @@ "version": "1.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } }, "block-stream": { "version": "0.0.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "boom": { "version": "2.10.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hoek": "2.16.3" + } }, "brace-expansion": { "version": "1.1.7", "bundled": true, - "dev": true + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } }, "buffer-shims": { "version": "1.0.0", @@ -579,7 +761,10 @@ "combined-stream": { "version": "1.0.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } }, "concat-map": { "version": "0.0.1", @@ -600,13 +785,19 @@ "version": "2.0.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1" + } }, "dashdash": { "version": "1.14.1", "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -620,7 +811,10 @@ "version": "2.6.8", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ms": "2.0.0" + } }, "deep-extend": { "version": "0.4.2", @@ -643,7 +837,10 @@ "version": "0.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "extend": { "version": "3.0.1", @@ -666,7 +863,12 @@ "version": "2.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } }, "fs.realpath": { "version": "1.0.0", @@ -676,25 +878,49 @@ "fstream": { "version": "1.0.11", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } }, "fstream-ignore": { "version": "1.0.5", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } }, "gauge": { "version": "2.7.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } }, "getpass": { "version": "0.1.7", "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -707,7 +933,15 @@ "glob": { "version": "7.1.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "graceful-fs": { "version": "4.1.11", @@ -724,7 +958,11 @@ "version": "4.2.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } }, "has-unicode": { "version": "2.0.1", @@ -736,7 +974,13 @@ "version": "3.1.3", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } }, "hoek": { "version": "2.16.3", @@ -747,12 +991,21 @@ "version": "1.1.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } }, "inflight": { "version": "1.0.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -768,7 +1021,10 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-typedarray": { "version": "1.0.0", @@ -791,7 +1047,10 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsbn": "0.1.1" + } }, "jsbn": { "version": "0.1.1", @@ -809,7 +1068,10 @@ "version": "1.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "jsonify": "0.0.0" + } }, "json-stringify-safe": { "version": "5.0.1", @@ -828,6 +1090,12 @@ "bundled": true, "dev": true, "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -845,12 +1113,18 @@ "mime-types": { "version": "2.1.15", "bundled": true, - "dev": true + "dev": true, + "requires": { + "mime-db": "1.27.0" + } }, "minimatch": { "version": "3.0.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } }, "minimist": { "version": "0.0.8", @@ -860,7 +1134,10 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -872,19 +1149,40 @@ "version": "0.6.36", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } }, "nopt": { "version": "4.0.1", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } }, "npmlog": { "version": "4.1.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } }, "number-is-nan": { "version": "1.0.1", @@ -906,7 +1204,10 @@ "once": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "os-homedir": { "version": "1.0.2", @@ -924,7 +1225,11 @@ "version": "0.1.4", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "path-is-absolute": { "version": "1.0.1", @@ -959,6 +1264,12 @@ "bundled": true, "dev": true, "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -971,18 +1282,54 @@ "readable-stream": { "version": "2.2.9", "bundled": true, - "dev": true + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } }, "request": { "version": "2.81.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } }, "rimraf": { "version": "2.6.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "safe-buffer": { "version": "5.0.1", @@ -1011,13 +1358,27 @@ "version": "1.0.9", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "hoek": "2.16.3" + } }, "sshpk": { "version": "1.13.0", "bundled": true, "dev": true, "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, "dependencies": { "assert-plus": { "version": "1.0.0", @@ -1027,15 +1388,23 @@ } } }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "string-width": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "stringstream": { "version": "0.0.5", @@ -1046,7 +1415,10 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -1057,25 +1429,46 @@ "tar": { "version": "2.2.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } }, "tar-pack": { "version": "3.4.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } }, "tough-cookie": { "version": "2.3.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "punycode": "1.4.1" + } }, "tunnel-agent": { "version": "0.6.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -1104,13 +1497,19 @@ "version": "1.3.6", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } }, "wide-align": { "version": "1.1.2", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "string-width": "1.0.2" + } }, "wrappy": { "version": "1.0.2", @@ -1123,25 +1522,52 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "got": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=", "dev": true, + "requires": { + "duplexify": "3.5.0", + "infinity-agent": "2.0.3", + "is-redirect": "1.0.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "nested-error-stacks": "1.0.2", + "object-assign": "3.0.0", + "prepend-http": "1.0.4", + "read-all-stream": "3.1.0", + "timed-out": "2.0.0" + }, "dependencies": { "object-assign": { "version": "3.0.0", @@ -1162,12 +1588,21 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, "dependencies": { "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, @@ -1175,7 +1610,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-flag": { "version": "2.0.0", @@ -1211,8 +1649,12 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true - }, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -1241,7 +1683,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true + "dev": true, + "requires": { + "binary-extensions": "1.8.0" + } }, "is-buffer": { "version": "1.1.5", @@ -1259,7 +1704,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -1277,13 +1725,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-npm": { "version": "1.0.0", @@ -1295,7 +1749,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2" + } }, "is-posix-bracket": { "version": "0.1.1", @@ -1337,13 +1794,21 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true + "dev": true, + "requires": { + "isarray": "1.0.0" + } }, "jasmine": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.6.0.tgz", "integrity": "sha1-ayLnCIPo5YnUVjRhU7TSBt2+IX8=", - "dev": true + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "7.1.2", + "jasmine-core": "2.6.4" + } }, "jasmine-core": { "version": "2.6.4", @@ -1361,19 +1826,28 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } }, "latest-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", - "dev": true + "dev": true, + "requires": { + "package-json": "1.2.0" + } }, "lazy-cache": { "version": "1.0.4", @@ -1398,7 +1872,11 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } }, "lodash._basecopy": { "version": "3.0.1", @@ -1416,7 +1894,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true + "dev": true, + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } }, "lodash._getnative": { "version": "3.9.1", @@ -1434,13 +1917,22 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "dev": true + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" + } }, "lodash.defaults": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", - "dev": true + "dev": true, + "requires": { + "lodash.assign": "3.2.0", + "lodash.restparam": "3.6.1" + } }, "lodash.isarguments": { "version": "3.1.0", @@ -1458,7 +1950,12 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } }, "lodash.restparam": { "version": "3.6.1", @@ -1476,7 +1973,10 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } }, "lowercase-keys": { "version": "1.0.0", @@ -1506,13 +2006,31 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "1.2.0", @@ -1525,6 +2043,9 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, + "requires": { + "minimist": "0.0.8" + }, "dependencies": { "minimist": { "version": "0.0.8", @@ -1551,25 +2072,46 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "nodemon": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.11.0.tgz", "integrity": "sha1-ImxWK9KnsT09dRi0mtSCijYj0Gw=", - "dev": true + "dev": true, + "requires": { + "chokidar": "1.7.0", + "debug": "2.6.8", + "es6-promise": "3.3.1", + "ignore-by-default": "1.0.1", + "lodash.defaults": "3.1.2", + "minimatch": "3.0.4", + "ps-tree": "1.1.0", + "touch": "1.0.0", + "undefsafe": "0.0.3", + "update-notifier": "0.5.0" + } }, "nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.1.0" + } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.2" + } }, "number-is-nan": { "version": "1.0.1", @@ -1582,11 +2124,45 @@ "resolved": "https://registry.npmjs.org/nyc/-/nyc-10.3.2.tgz", "integrity": "sha1-8n9NkfKp2zbCT1dP9cbv/wIz3kY=", "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.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.6", + "glob": "7.1.1", + "istanbul-lib-coverage": "1.1.0", + "istanbul-lib-hook": "1.0.6", + "istanbul-lib-instrument": "1.7.1", + "istanbul-lib-report": "1.1.0", + "istanbul-lib-source-maps": "1.2.0", + "istanbul-reports": "1.1.0", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.3", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.1", + "signal-exit": "3.0.2", + "spawn-wrap": "1.2.4", + "test-exclude": "4.1.0", + "yargs": "7.1.0", + "yargs-parser": "5.0.0" + }, "dependencies": { "align-text": { "version": "0.1.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.0", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "amdefine": { "version": "1.0.1", @@ -1606,7 +2182,10 @@ "append-transform": { "version": "0.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } }, "archy": { "version": "1.0.0", @@ -1616,7 +2195,10 @@ "arr-diff": { "version": "2.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "arr-flatten": "1.0.3" + } }, "arr-flatten": { "version": "1.0.3", @@ -1641,37 +2223,83 @@ "babel-code-frame": { "version": "6.22.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.1" + } }, "babel-generator": { "version": "6.24.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.24.1", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } }, "babel-messages": { "version": "6.23.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } }, "babel-runtime": { "version": "6.23.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } }, "babel-template": { "version": "6.24.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.24.1", + "babel-types": "6.24.1", + "babylon": "6.17.0", + "lodash": "4.17.4" + } }, "babel-traverse": { "version": "6.24.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.24.1", + "babylon": "6.17.0", + "debug": "2.6.6", + "globals": "9.17.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } }, "babel-types": { "version": "6.24.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } }, "babylon": { "version": "6.17.0", @@ -1686,12 +2314,21 @@ "brace-expansion": { "version": "1.1.7", "bundled": true, - "dev": true + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } }, "braces": { "version": "1.8.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } }, "builtin-modules": { "version": "1.1.1", @@ -1701,7 +2338,12 @@ "caching-transform": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } }, "camelcase": { "version": "1.2.1", @@ -1713,18 +2355,34 @@ "version": "0.1.3", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } }, "chalk": { "version": "1.1.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "cliui": { "version": "2.1.0", "bundled": true, "dev": true, "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -1762,12 +2420,19 @@ "cross-spawn": { "version": "4.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lru-cache": "4.0.2", + "which": "1.2.14" + } }, "debug": { "version": "2.6.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ms": "0.7.3" + } }, "debug-log": { "version": "1.0.1", @@ -1782,17 +2447,26 @@ "default-require-extensions": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } }, "detect-indent": { "version": "4.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "repeating": "2.0.1" + } }, "error-ex": { "version": "1.3.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "escape-string-regexp": { "version": "1.0.5", @@ -1807,17 +2481,26 @@ "expand-brackets": { "version": "0.1.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } }, "expand-range": { "version": "1.8.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "fill-range": "2.2.3" + } }, "extglob": { "version": "0.3.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "filename-regex": { "version": "2.0.1", @@ -1827,17 +2510,33 @@ "fill-range": { "version": "2.2.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.6", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, "find-cache-dir": { "version": "0.1.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } }, "find-up": { "version": "1.1.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } }, "for-in": { "version": "1.0.2", @@ -1847,12 +2546,19 @@ "for-own": { "version": "0.1.5", "bundled": true, - "dev": true + "dev": true, + "requires": { + "for-in": "1.0.2" + } }, "foreground-child": { "version": "1.5.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } }, "fs.realpath": { "version": "1.0.0", @@ -1867,17 +2573,32 @@ "glob": { "version": "7.1.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, "glob-parent": { "version": "2.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "globals": { "version": "9.17.0", @@ -1893,18 +2614,30 @@ "version": "4.0.8", "bundled": true, "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.22" + }, "dependencies": { "source-map": { "version": "0.4.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "amdefine": "1.0.1" + } } } }, "has-ansi": { "version": "2.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "has-flag": { "version": "1.0.0", @@ -1924,7 +2657,11 @@ "inflight": { "version": "1.0.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -1934,7 +2671,10 @@ "invariant": { "version": "2.2.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } }, "invert-kv": { "version": "1.0.0", @@ -1954,7 +2694,10 @@ "is-builtin-module": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, "is-dotfile": { "version": "1.0.2", @@ -1964,7 +2707,10 @@ "is-equal-shallow": { "version": "0.1.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -1979,22 +2725,34 @@ "is-finite": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-glob": { "version": "2.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-number": { "version": "2.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.0" + } }, "is-posix-bracket": { "version": "0.1.1", @@ -2024,7 +2782,10 @@ "isobject": { "version": "2.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "isarray": "1.0.0" + } }, "istanbul-lib-coverage": { "version": "1.1.0", @@ -2034,34 +2795,65 @@ "istanbul-lib-hook": { "version": "1.0.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "append-transform": "0.4.0" + } }, "istanbul-lib-instrument": { "version": "1.7.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "babel-generator": "6.24.1", + "babel-template": "6.24.1", + "babel-traverse": "6.24.1", + "babel-types": "6.24.1", + "babylon": "6.17.0", + "istanbul-lib-coverage": "1.1.0", + "semver": "5.3.0" + } }, "istanbul-lib-report": { "version": "1.1.0", "bundled": true, "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, "dependencies": { "supports-color": { "version": "3.2.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, "istanbul-lib-source-maps": { "version": "1.2.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "debug": "2.6.6", + "istanbul-lib-coverage": "1.1.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "source-map": "0.5.6" + } }, "istanbul-reports": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "handlebars": "4.0.8" + } }, "js-tokens": { "version": "3.0.1", @@ -2076,7 +2868,10 @@ "kind-of": { "version": "3.2.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } }, "lazy-cache": { "version": "1.0.4", @@ -2087,12 +2882,22 @@ "lcid": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } }, "load-json-file": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } }, "lodash": { "version": "4.17.4", @@ -2107,17 +2912,27 @@ "loose-envify": { "version": "1.3.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "js-tokens": "3.0.1" + } }, "lru-cache": { "version": "4.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } }, "md5-hex": { "version": "1.3.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } }, "md5-o-matic": { "version": "0.1.1", @@ -2127,17 +2942,38 @@ "merge-source-map": { "version": "1.0.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.6" + } }, "micromatch": { "version": "2.3.11", "bundled": true, - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.0", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } }, "minimatch": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } }, "minimist": { "version": "0.0.8", @@ -2147,7 +2983,10 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "0.7.3", @@ -2157,12 +2996,21 @@ "normalize-package-data": { "version": "2.3.8", "bundled": true, - "dev": true + "dev": true, + "requires": { + "hosted-git-info": "2.4.2", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } }, "normalize-path": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.1" + } }, "number-is-nan": { "version": "1.0.1", @@ -2177,17 +3025,28 @@ "object.omit": { "version": "2.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "once": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "optimist": { "version": "0.6.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } }, "os-homedir": { "version": "1.0.2", @@ -2197,22 +3056,37 @@ "os-locale": { "version": "1.4.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lcid": "1.0.0" + } }, "parse-glob": { "version": "3.0.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.2", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "path-exists": { "version": "2.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } }, "path-is-absolute": { "version": "1.0.1", @@ -2227,7 +3101,12 @@ "path-type": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } }, "pify": { "version": "2.3.0", @@ -2242,12 +3121,18 @@ "pinkie-promise": { "version": "2.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "pinkie": "2.0.4" + } }, "pkg-dir": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2" + } }, "preserve": { "version": "0.2.0", @@ -2262,17 +3147,30 @@ "randomatic": { "version": "1.1.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-number": "2.1.0", + "kind-of": "3.2.0" + } }, "read-pkg": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.3.8", + "path-type": "1.1.0" + } }, "read-pkg-up": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } }, "regenerator-runtime": { "version": "0.10.5", @@ -2282,7 +3180,11 @@ "regex-cache": { "version": "0.4.3", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } }, "remove-trailing-separator": { "version": "1.0.1", @@ -2302,7 +3204,10 @@ "repeating": { "version": "2.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } }, "require-directory": { "version": "2.1.1", @@ -2323,12 +3228,18 @@ "version": "0.1.3", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "align-text": "0.1.4" + } }, "rimraf": { "version": "2.6.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "glob": "7.1.1" + } }, "semver": { "version": "5.3.0", @@ -2359,6 +3270,14 @@ "version": "1.2.4", "bundled": true, "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.1", + "signal-exit": "2.1.2", + "which": "1.2.14" + }, "dependencies": { "signal-exit": { "version": "2.1.2", @@ -2370,7 +3289,10 @@ "spdx-correct": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -2385,17 +3307,28 @@ "string-width": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } }, "strip-ansi": { "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "2.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } }, "supports-color": { "version": "2.0.0", @@ -2405,7 +3338,14 @@ "test-exclude": { "version": "4.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } }, "to-fast-properties": { "version": "1.0.3", @@ -2422,12 +3362,23 @@ "bundled": true, "dev": true, "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, "dependencies": { "yargs": { "version": "3.10.0", "bundled": true, "dev": true, - "optional": true + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } }, @@ -2440,12 +3391,19 @@ "validate-npm-package-license": { "version": "3.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "which": { "version": "1.2.14", "bundled": true, - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "which-module": { "version": "1.0.0", @@ -2466,7 +3424,11 @@ "wrap-ansi": { "version": "2.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } }, "wrappy": { "version": "1.0.2", @@ -2476,7 +3438,12 @@ "write-file-atomic": { "version": "1.3.4", "bundled": true, - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } }, "y18n": { "version": "3.2.1", @@ -2492,6 +3459,21 @@ "version": "7.1.0", "bundled": true, "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "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.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -2501,7 +3483,12 @@ "cliui": { "version": "3.2.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } } } }, @@ -2509,6 +3496,9 @@ "version": "5.0.0", "bundled": true, "dev": true, + "requires": { + "camelcase": "3.0.0" + }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -2529,19 +3519,30 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "requires": { + "wrappy": "1.0.2" + } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + }, "dependencies": { "minimist": { "version": "0.0.10", @@ -2567,31 +3568,51 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "package-json": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=", - "dev": true + "dev": true, + "requires": { + "got": "3.3.1", + "registry-url": "3.1.0" + } }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "parse5": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", - "dev": true + "dev": true, + "requires": { + "@types/node": "6.0.79" + } }, "path-is-absolute": { "version": "1.0.1", @@ -2609,7 +3630,10 @@ "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true + "dev": true, + "requires": { + "through": "2.3.8" + } }, "pinkie": { "version": "2.0.4", @@ -2621,7 +3645,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "dev": true, + "requires": { + "pinkie": "2.0.4" + } }, "prepend-http": { "version": "1.0.4", @@ -2651,25 +3678,38 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", - "dev": true + "dev": true, + "requires": { + "event-stream": "3.3.4" + } }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "requires": { + "kind-of": "3.2.2" + }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -2677,7 +3717,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -2685,37 +3728,71 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "dev": true + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + } }, "read-all-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + } }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true + "dev": true, + "requires": { + "resolve": "1.3.3" + } }, "redux": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.1.tgz", "integrity": "sha512-iEVTlORM5mv6xb3ZAOyrVehVUD+W87jdFAX6SYVgZh3/SQAWFSxTRJOqPWQdvo4VN4lJkNDvqKlBXBabsJTSkA==", - "dev": true + "dev": true, + "requires": { + "lodash": "4.17.4", + "lodash-es": "4.17.4", + "loose-envify": "1.3.1", + "symbol-observable": "1.0.4" + } }, "reflect-metadata": { "version": "0.1.3", @@ -2727,13 +3804,20 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } }, "registry-url": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true + "dev": true, + "requires": { + "rc": "1.2.1" + } }, "remove-trailing-separator": { "version": "1.0.2", @@ -2757,32 +3841,47 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } }, "resolve": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true + "dev": true, + "requires": { + "path-parse": "1.0.5" + } }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, - "optional": true + "optional": true, + "requires": { + "align-text": "0.1.4" + } }, "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2" + } }, "rxjs": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.2.tgz", - "integrity": "sha1-KjI2/L8D31e64G/Wly/ZnlwI/Pc=", - "dev": true + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.2.tgz", + "integrity": "sha512-oRYoIKWBU3Ic37fLA5VJu31VqQO4bWubRntcHSJ+cwaDQBwdnZ9x4zmhJfm/nFQ2E82/I4loSioHnACamrKGgA==", + "dev": true, + "requires": { + "symbol-observable": "1.0.4" + } }, "safe-buffer": { "version": "5.1.1", @@ -2800,7 +3899,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true + "dev": true, + "requires": { + "semver": "5.3.0" + } }, "set-immediate-shim": { "version": "1.0.1", @@ -2812,7 +3914,12 @@ "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.0.3", + "rechoir": "0.6.2" + } }, "slide": { "version": "1.1.6", @@ -2830,19 +3937,28 @@ "version": "0.4.15", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true + "dev": true, + "requires": { + "source-map": "0.5.6" + } }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true + "dev": true, + "requires": { + "through": "2.3.8" + } }, "stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true + "dev": true, + "requires": { + "duplexer": "0.1.1" + } }, "stream-shift": { "version": "1.0.0", @@ -2850,23 +3966,32 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true - }, "string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-bom": { "version": "3.0.0", @@ -2908,31 +4033,57 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", - "dev": true + "dev": true, + "requires": { + "nopt": "1.0.10" + } }, "ts-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.2.0.tgz", "integrity": "sha1-mBTwwBQXhJAM8S/vEZetS39NI9E=", "dev": true, + "requires": { + "arrify": "1.0.1", + "chalk": "2.0.1", + "diff": "3.3.0", + "make-error": "1.3.0", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map-support": "0.4.15", + "tsconfig": "6.0.0", + "v8flags": "2.1.1", + "yn": "2.0.0" + }, "dependencies": { "ansi-styles": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "chalk": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "3.1.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.2.0" + } }, "supports-color": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true + "dev": true, + "requires": { + "has-flag": "2.0.0" + } } } }, @@ -2940,25 +4091,41 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=", - "dev": true + "dev": true, + "requires": { + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1" + } }, "tsconfig-paths": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-2.2.0.tgz", "integrity": "sha1-x2rOfyxFTNMcpvcsM4dtuuAgAOg=", "dev": true, + "requires": { + "tsconfig": "5.0.3" + }, "dependencies": { "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } }, "tsconfig": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", "integrity": "sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo=", - "dev": true + "dev": true, + "requires": { + "any-promise": "1.3.0", + "parse-json": "2.2.0", + "strip-bom": "2.0.0", + "strip-json-comments": "2.0.1" + } } } }, @@ -2966,7 +4133,13 @@ "version": "0.21.6", "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz", "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=", - "dev": true + "dev": true, + "requires": { + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map": "0.5.6", + "source-map-support": "0.4.15" + } }, "tslib": { "version": "1.7.1", @@ -2978,19 +4151,53 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.5.0.tgz", "integrity": "sha1-EOjas+MGH6YelELozuOYKs8gpqo=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "colors": "1.1.2", + "commander": "2.11.0", + "diff": "3.3.0", + "glob": "7.1.2", + "minimatch": "3.0.4", + "resolve": "1.3.3", + "semver": "5.3.0", + "tslib": "1.7.1", + "tsutils": "2.5.1" + } }, "tsutils": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.5.1.tgz", "integrity": "sha1-wgATkMee7Bpcz6esEtWZY5aD4M8=", - "dev": true + "dev": true, + "requires": { + "tslib": "1.7.1" + } }, "typedoc": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.6.0.tgz", "integrity": "sha1-nJhUrsVNkXrAVVKko6SqvsKA4c8=", "dev": true, + "requires": { + "@types/fs-extra": "2.1.0", + "@types/handlebars": "4.0.33", + "@types/highlight.js": "9.1.9", + "@types/lodash": "4.14.68", + "@types/marked": "0.0.28", + "@types/minimatch": "2.0.29", + "@types/shelljs": "0.7.2", + "fs-extra": "2.1.2", + "handlebars": "4.0.10", + "highlight.js": "9.12.0", + "lodash": "4.17.4", + "marked": "0.3.6", + "minimatch": "3.0.4", + "progress": "2.0.0", + "shelljs": "0.7.8", + "typedoc-default-themes": "0.4.4", + "typescript": "2.2.2" + }, "dependencies": { "typescript": { "version": "2.2.2", @@ -3017,7 +4224,12 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, - "optional": true + "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } }, "uglify-to-browserify": { "version": "1.0.2", @@ -3036,7 +4248,16 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz", "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "configstore": "1.4.0", + "is-npm": "1.0.0", + "latest-version": "1.0.1", + "repeating": "1.1.3", + "semver-diff": "2.1.0", + "string-length": "1.0.1" + } }, "user-home": { "version": "1.1.1", @@ -3060,7 +4281,10 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true + "dev": true, + "requires": { + "user-home": "1.1.1" + } }, "window-size": { "version": "0.1.0", @@ -3085,13 +4309,21 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } }, "xdg-basedir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } }, "xhr2": { "version": "0.1.4", @@ -3104,7 +4336,13 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "optional": true + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } }, "yn": { "version": "2.0.0", diff --git a/src/utils/set-in.spec.ts b/src/utils/set-in.spec.ts index 3f1d9a1..59b38fc 100644 --- a/src/utils/set-in.spec.ts +++ b/src/utils/set-in.spec.ts @@ -42,4 +42,20 @@ describe('setIn', () => { expect(setIn(original, ['b', 'c', 'd'], 2)).toEqual(expected); expect(original).toEqual({ a: 1, b: { wat: 3 } }); }); + + it('should use setIn method of an object (case of ImmutableJS)', () => { + let setInCalled = false; + + class TestClass { + setIn() { + setInCalled = true; + } + } + + const original = { + root: new TestClass() + }; + setIn(original, ['root', 'a', 'b', 'c'], 123); + expect(setInCalled).toEqual(true); + }); }); diff --git a/src/utils/set-in.ts b/src/utils/set-in.ts index 6e795f7..587e5df 100644 --- a/src/utils/set-in.ts +++ b/src/utils/set-in.ts @@ -9,10 +9,12 @@ export const setIn = ( obj: any, [firstElem, ...restElems]: (string | number)[], value: any -): Object => ({ +): Object => typeof (obj[ firstElem ] || {}).setIn === 'function' ? { + ...obj, [ firstElem ]: obj[ firstElem ].setIn(restElems, value) +} : { ...obj, [firstElem]: restElems.length === 0 ? value : setIn(obj[firstElem] || {}, restElems, value), -}); +}; From 92c017f59264f74e459c20e45dbb44303d957bd9 Mon Sep 17 00:00:00 2001 From: Rato Date: Sun, 4 Mar 2018 23:16:55 +0100 Subject: [PATCH 16/22] Fixes #508 (#510) Fixes #508 --- testing/ng-redux.mock.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/ng-redux.mock.ts b/testing/ng-redux.mock.ts index d3ff3f1..c13b138 100644 --- a/testing/ng-redux.mock.ts +++ b/testing/ng-redux.mock.ts @@ -83,7 +83,7 @@ export class MockNgRedux extends NgRedux { configureSubStore = this.mockRootStore.configureSubStore; select: ( - selector: Selector, + selector?: Selector, comparator?: Comparator ) => Observable = this.mockRootStore.select; From 9274c2159ebdfa124da086a8cf1fbd8db5ada85b Mon Sep 17 00:00:00 2001 From: Seth Davenport Date: Sun, 4 Mar 2018 18:16:10 -0500 Subject: [PATCH 17/22] 7.1.1 release prep (#512) * 7.1.1 release prep * update changelog --- CHANGELOG.md | 33 +- package-lock.json | 1386 ++++++++++++++++++++++++++++++++++++--------- package.json | 2 +- 3 files changed, 1129 insertions(+), 292 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a2dbc4..768be7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,15 @@ -# 7.1.0 +# 7.1.1 + +## Bug Fixes + +* #508 (thanks to @ratoaq2) +* #463 (thanks to @draccoz) + +# 7.1.0 ## Features -* Add a way to return a false value from a method decorted with `@dispatch` to allow conditionally preventing a dispatch. [PR#497](https://github.com/angular-redux/store/pull/497) +* Add a way to return a false value from a method decorated with `@dispatch` to allow conditionally preventing a dispatch. [PR#497](https://github.com/angular-redux/store/pull/497) ```ts @@ -12,7 +19,7 @@ selectTab(tab) { } ``` -* Add a way to access the decoratde instance inside of transformer for `@select$` [PR#500](https://github.com/angular-redux/store/pull/500) +* Add a way to access the decorated instance inside of transformer for `@select$` [PR#500](https://github.com/angular-redux/store/pull/500) ```ts @Input() public anotherInput: string; @@ -21,21 +28,21 @@ selectTab(tab) { public selectedObs: Observable; ``` -Shout out to contributers: +Shout out to contributors: * [@rart](https://github.com/rart) * [@MaKCbIMKo](https://github.com/MaKCbIMKo) # 7.0.2 - Fixing Publish -* There are no functional changes / fixes in this release. +* There are no functional changes / fixes in this release. -There was accidental publish to the `@latest` tag with an expiremental fix for the v6 branch that got pushed out with the incorrect tag. +There was accidental publish to the `@latest` tag with an experimental fix for the v6 branch that got pushed out with the incorrect tag. For some clarity: * v7+ - currently only works with Angular 5+ -* v6+ - works with Angular 4 and earlier, and v5. +* v6+ - works with Angular 4 and earlier, and v5. * v8 - this was an accidental version bump - and that package is now deprecated. # Which Version to use? @@ -44,9 +51,9 @@ For some clarity: Use `@angular-redux/store@^7` - this version supports Angular 5, and also changes to using lettable operators. -Any new major releases will released on the v7 branch and with the `@latest` tag for final publishes. +Any new major releases will released on the v7 branch and with the `@latest` tag for final publishes. -## Angular 4 or lower +## Angular 4 or lower Use `@angular-redux/store@^6` - This supports Angular 4 and earlier. @@ -56,14 +63,14 @@ Where possible, I will be maintaining and applying any fixes / enhancements for I made a few mistakes trying to publish fixes / etc to two major versions, which caused some releases to get tagged incorrectly and caused some confusion. Sorry for any confusion this has caused, and will do better on avoiding this in the future, and being more transparent with the releases that are going out. -# 6.6.0 - Angular 5 Support +# 6.6.0 - Angular 5 Support -* Add Angular 5+ as peer dependency +* Add Angular 5+ as peer dependency # 7.0.0 - Angular 5 Upgrade -* Update dependencies to Angular 5 -* Update RxJS to 5.5.2 and use lettable operators +* Update dependencies to Angular 5 +* Update RxJS to 5.5.2 and use lettable operators * Update peer dependencies to only Angular 5+ note: This version requires Angular 5, the code generated by the compiler is not compatible with Angular v4. diff --git a/package-lock.json b/package-lock.json index 6b400f8..7523f36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,122 +1,114 @@ { "name": "@angular-redux/store", - "version": "7.1.0", + "version": "7.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { "@angular/animations": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.2.6.tgz", - "integrity": "sha1-nZyAoRmwwDaTy9I7uvcosVMf/8c=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.7.tgz", + "integrity": "sha512-t/B0z2OYO+yy8SJKB1/evSNPvnLsl+AclhM1p21/NnETxQUqvct1KXeDM7nYDu5hmnGmuavhua8LDo6rN5zS+Q==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/common": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.2.6.tgz", - "integrity": "sha1-IQrOS9JON1+LQbpS/rNLGKiH1do=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.7.tgz", + "integrity": "sha512-TqsDMmPX1JlEH2QIneuAVzEO4ubzxLBAdV4XbKWDQKC/UfbWIIpSrSp2cIi85NV1tKkg0WAaodCIZ02NucHIHg==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/compiler": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.2.6.tgz", - "integrity": "sha1-ZndW1JXKDUXSBhJooQ1Sr4Ofr/Q=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.7.tgz", + "integrity": "sha512-26RG+Dy+M/95OyNNqM+OAruarIPOmbndiaglz2dMrNYzenfbSgG/AoPlL5uCdSqZDiXgnlKnS2K6/ePWXDSKNw==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/compiler-cli": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.2.6.tgz", - "integrity": "sha1-iiE1Ipnz69Hj8XWBBUFkVmyjBr4=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.2.7.tgz", + "integrity": "sha512-91gQolzsKyOlmBNW1J7lyu+dXHe/KHbAXU459hn6rycMHuTt60XvxA5O3xy3Pqt28VgbOOSrQfq5eVjZodKjWg==", "dev": true, "requires": { - "@angular/tsc-wrapped": "4.2.6", + "chokidar": "1.7.0", "minimist": "1.2.0", - "reflect-metadata": "0.1.3" + "reflect-metadata": "0.1.10", + "tsickle": "0.27.2" } }, "@angular/core": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.2.6.tgz", - "integrity": "sha1-DByP8BV/B29KfAtyHKFCPxu+Fk4=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.7.tgz", + "integrity": "sha512-DQuL6n7cjBfZmWX5RCV271g6PW9N8b93g2skWnM/zjm+BL9tfHPgvmsjMNB7QEHSxW8VBaaQ6gjj422O01A87g==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/http": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.2.6.tgz", - "integrity": "sha1-SZ4roLvB89cbdt6+wDTJWMrxE04=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-5.2.7.tgz", + "integrity": "sha512-048+tCbsNYc9xVvIn5/sOvO4fXVkbB5b1IRYRGiRYXpTz6+JWIm5AwOqZIOeVDgqgZHFf96QllXDcFbdNVDgSA==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/platform-browser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.2.6.tgz", - "integrity": "sha1-oTH/WSIl/mSWvKLJr/YSpNvd9Dc=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.7.tgz", + "integrity": "sha512-SdLx4F6tOy4/s3y1KZ/Z3YA6fiIrydaO2bry2FJglDxJh24p6TZIob+zC16N2MTuFW819KY5OlacNhc8aj6Yag==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/platform-browser-dynamic": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.2.6.tgz", - "integrity": "sha1-TmyK0s1c/BeIBBf3fyo0E895HCY=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.7.tgz", + "integrity": "sha512-95Rwf1JcGF/BI48k+VG2moLTVC863jPSjmHaGkz7cA9bi/QrRFGvFghl1qIm4Ezp3dj8CH8TE3TWB+1AmAg3AQ==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "@angular/platform-server": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-4.2.6.tgz", - "integrity": "sha1-ZuA/2FVIb+BY4j03hgYdkUYpmNs=", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-5.2.7.tgz", + "integrity": "sha512-5+pj+YYfJ7ZGVEtP2oTVqWErObWRVeY32AxVIs3pE3WuqKPjwnKzd+HY+YeD8D+LDJZ5DdphtYBp26NFrnw0xA==", "dev": true, "requires": { - "parse5": "3.0.2", - "tslib": "1.7.1", + "domino": "1.0.30", + "tslib": "1.9.0", "xhr2": "0.1.4" } }, - "@angular/tsc-wrapped": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.2.6.tgz", - "integrity": "sha1-YORLWzjzNA7hTFSlinoHEzxk6Jg=", - "dev": true, - "requires": { - "tsickle": "0.21.6" - } - }, "@types/fs-extra": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-2.1.0.tgz", - "integrity": "sha1-izUCOcBFXZK408Ym7awZOGD/OV8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-4.0.0.tgz", + "integrity": "sha512-PlKJw6ujJXLJjbvB3T0UCbY3jibKM6/Ya5cc9j1q+mYDeK3aR4Dp+20ZwxSuvJr9mIoPxp7+IL4aMOEvsscRTA==", "dev": true, "requires": { "@types/node": "6.0.79" } }, "@types/handlebars": { - "version": "4.0.33", - "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.33.tgz", - "integrity": "sha512-39w19Mseg83z68JsIdcuFH3Z+BR/Jc3gRBB4Pn/aUm76rdy0prMz5iIMJAOb0Bo6H/rZhQc41vFf3tAMgqufVQ==", + "version": "4.0.31", + "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.31.tgz", + "integrity": "sha1-p/umb6/kJxOu6I7sqNuRGS7+bnI=", "dev": true }, "@types/highlight.js": { - "version": "9.1.9", - "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.1.9.tgz", - "integrity": "sha1-7WM2lV6vIzt163kjubHzc9BF7wE=", + "version": "9.1.8", + "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.1.8.tgz", + "integrity": "sha1-0ifxi8uPPxh+FpZfJESFmgRol1g=", "dev": true }, "@types/jasmine": { @@ -126,15 +118,15 @@ "dev": true }, "@types/lodash": { - "version": "4.14.68", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.68.tgz", - "integrity": "sha512-tndmbhJc7EeymtvgcZ0oX2H0P95VcT1FlAoeki3bl71DqL9zA/tbJcMZyR1kJkHDvr+57I7+gsn+BVPHIqgcbQ==", + "version": "4.14.74", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.74.tgz", + "integrity": "sha512-BZknw3E/z3JmCLqQVANcR17okqVTPZdlxvcIz0fJiJVLUCbSH1hK3zs9r634PVSmrzAxN+n/fxlVRiYoArdOIQ==", "dev": true }, "@types/marked": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.0.28.tgz", - "integrity": "sha1-RLp1Tp+lFDJYPo6zCnxN0km1L6o=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.3.0.tgz", + "integrity": "sha512-CSf9YWJdX1DkTNu9zcNtdCcn6hkRtB5ILjbhRId4ZOQqx30fXmdecuaXhugQL6eyrhuXtaHJ7PHI+Vm7k9ZJjg==", "dev": true }, "@types/minimatch": { @@ -150,9 +142,9 @@ "dev": true }, "@types/shelljs": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.7.2.tgz", - "integrity": "sha512-NanpA4ybcKXr32Zg7sgHvOfir/AeoOdN7+8TpnWueHkmPhVZLSPWU4LLl7y7d2FG08jaxE18HZjlATjttmjHCQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.7.0.tgz", + "integrity": "sha1-IpwVfGvB5n1rmQ5sXhjb0v9Yz/A=", "dev": true, "requires": { "@types/node": "6.0.79" @@ -181,6 +173,12 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -193,10 +191,10 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "any-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", + "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", "dev": true }, "anymatch": { @@ -209,6 +207,21 @@ "micromatch": "2.3.11" } }, + "app-root-path": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", + "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -249,9 +262,9 @@ "dev": true }, "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { "chalk": "1.1.3", @@ -292,6 +305,12 @@ "repeat-element": "1.1.2" } }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", @@ -340,6 +359,37 @@ "readdirp": "2.1.0" } }, + "ci-info": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "1.0.2" + } + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -361,31 +411,31 @@ } } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.2" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", - "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==", "dev": true }, "concat-map": { @@ -422,6 +472,35 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.10.0", + "parse-json": "4.0.0", + "require-from-string": "2.0.1" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true + }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", @@ -438,16 +517,34 @@ "dev": true, "optional": true }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true }, + "deepmerge": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.0.1.tgz", + "integrity": "sha512-VIPwiMJqJ13ZQfaCsIFnp5Me9tnjURiaIFxfz7EH0Ci0dTSQpZtSLrqOicXqEd/z2r+z+Klk9GzmnRsgpgbOsQ==", + "dev": true + }, "diff": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", - "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "domino": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/domino/-/domino-1.0.30.tgz", + "integrity": "sha512-ikq8WiDSkICdkElud317F2Sigc6A3EDpWsxWBwIZqOl95km4p/Vc9Rj98id7qKgsjDmExj0AVM7JOd4bb647Xg==", "dev": true }, "duplexer": { @@ -468,6 +565,12 @@ "stream-shift": "1.0.0" } }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, "end-of-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", @@ -509,6 +612,12 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -530,12 +639,33 @@ "through": "2.3.8" } }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -563,6 +693,16 @@ "is-extglob": "1.0.0" } }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -582,6 +722,12 @@ "repeat-string": "1.6.1" } }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -604,13 +750,14 @@ "dev": true }, "fs-extra": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", - "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "requires": { "graceful-fs": "4.1.11", - "jsonfile": "2.4.0" + "jsonfile": "4.0.0", + "universalify": "0.1.1" } }, "fs.realpath": { @@ -1518,6 +1665,18 @@ } } }, + "get-own-enumerable-property-symbols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", + "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -1584,9 +1743,9 @@ "dev": true }, "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { "async": "1.5.2", @@ -1616,9 +1775,9 @@ } }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "highlight.js": { @@ -1627,6 +1786,34 @@ "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", "dev": true }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "husky": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", + "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", + "dev": true, + "requires": { + "is-ci": "1.1.0", + "normalize-path": "1.0.0", + "strip-indent": "2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + } + } + }, "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -1639,6 +1826,26 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + }, + "dependencies": { + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + } + } + }, "infinity-agent": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz", @@ -1668,9 +1875,9 @@ "dev": true }, "interpret": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", - "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, "is-arrayish": { @@ -1694,6 +1901,21 @@ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", "dev": true }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, + "requires": { + "ci-info": "1.1.2" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -1730,6 +1952,15 @@ "number-is-nan": "1.0.1" } }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", @@ -1754,6 +1985,29 @@ "kind-of": "3.2.2" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "requires": { + "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true + } + } + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -1766,30 +2020,42 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", @@ -1816,16 +2082,81 @@ "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=", "dev": true }, + "jest-get-type": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", + "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", + "dev": true + }, + "jest-validate": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", + "dev": true, + "requires": { + "chalk": "2.3.2", + "jest-get-type": "21.2.0", + "leven": "2.1.0", + "pretty-format": "21.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { "graceful-fs": "4.1.11" @@ -1840,32 +2171,208 @@ "is-buffer": "1.1.5" } }, - "latest-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", - "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", + "latest-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", + "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", + "dev": true, + "requires": { + "package-json": "1.2.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "lint-staged": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-6.1.1.tgz", + "integrity": "sha512-M/7bwLdXbeG7ZNLcasGeLMBDg60/w6obj3KOtINwJyxAxb53XGY0yH5FSZlWklEzuVbTtqtIfAajh6jYIN90AA==", + "dev": true, + "requires": { + "app-root-path": "2.0.1", + "chalk": "2.3.2", + "commander": "2.14.1", + "cosmiconfig": "4.0.0", + "debug": "3.1.0", + "dedent": "0.7.0", + "execa": "0.8.0", + "find-parent-dir": "0.3.0", + "is-glob": "4.0.0", + "jest-validate": "21.2.1", + "listr": "0.13.0", + "lodash": "4.17.5", + "log-symbols": "2.2.0", + "minimatch": "3.0.4", + "npm-which": "3.0.1", + "p-map": "1.2.0", + "path-is-inside": "1.0.2", + "pify": "3.0.0", + "staged-git-files": "1.0.0", + "stringify-object": "3.2.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "listr": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", + "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "5.5.2", + "stream-to-observable": "0.2.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", "dev": true, "requires": { - "package-json": "1.2.0" + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.29.0", + "figures": "1.7.0" } }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true - }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", "dev": true }, "lodash-es": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", - "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.5.tgz", + "integrity": "sha512-Ez3ONp3TK9gX1HYKp6IhetcVybD+2F+Yp6GS9dfH8ue6EOCEzQtQEh4K0FYWBP9qLv+lzeQAYXw+3ySfxyZqkw==", "dev": true }, "lodash._baseassign": { @@ -1963,6 +2470,56 @@ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", "dev": true }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "2.3.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + } + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -1984,10 +2541,20 @@ "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", "dev": true }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, "make-error": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", - "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", "dev": true }, "map-stream": { @@ -1997,9 +2564,9 @@ "dev": true }, "marked": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.17.tgz", + "integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==", "dev": true }, "micromatch": { @@ -2113,6 +2680,35 @@ "remove-trailing-separator": "1.0.2" } }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "requires": { + "which": "1.3.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true, + "requires": { + "commander": "2.14.1", + "npm-path": "2.0.4", + "which": "1.3.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -3534,6 +4130,12 @@ "wrappy": "1.0.2" } }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -3552,6 +4154,18 @@ } } }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" + } + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -3574,6 +4188,18 @@ "os-tmpdir": "1.0.2" } }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, "package-json": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", @@ -3597,22 +4223,20 @@ } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" } }, - "parse5": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", - "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", - "dev": true, - "requires": { - "@types/node": "6.0.79" - } + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -3620,6 +4244,18 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", @@ -3635,6 +4271,12 @@ "through": "2.3.8" } }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -3662,6 +4304,39 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, + "prettier": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.9.2.tgz", + "integrity": "sha512-piXx9N2WT8hWb7PBbX1glAuJVIkEyUV9F5fMXFINpZ0x3otVOFKKeGmeuiclFJlP/UrgTckyV606VjH2rNK4bw==", + "dev": true + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + } + } + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -3683,6 +4358,12 @@ "event-stream": "3.3.4" } }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -3779,25 +4460,25 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "1.3.3" + "resolve": "1.5.0" } }, "redux": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.1.tgz", - "integrity": "sha512-iEVTlORM5mv6xb3ZAOyrVehVUD+W87jdFAX6SYVgZh3/SQAWFSxTRJOqPWQdvo4VN4lJkNDvqKlBXBabsJTSkA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "dev": true, "requires": { - "lodash": "4.17.4", - "lodash-es": "4.17.4", + "lodash": "4.17.5", + "lodash-es": "4.17.5", "loose-envify": "1.3.1", "symbol-observable": "1.0.4" } }, "reflect-metadata": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.3.tgz", - "integrity": "sha1-ZPikGXTk9aWqmXjaxUz9RC3C8dU=", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz", + "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=", "dev": true }, "regex-cache": { @@ -3846,15 +4527,31 @@ "is-finite": "1.0.2" } }, + "require-from-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.1.tgz", + "integrity": "sha1-xUUjPp19pmFunVmt+zn8n1iGdv8=", + "dev": true + }, "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { "path-parse": "1.0.5" } }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -3910,6 +4607,21 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "shelljs": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", @@ -3917,10 +4629,22 @@ "dev": true, "requires": { "glob": "7.1.2", - "interpret": "1.0.3", + "interpret": "1.1.0", "rechoir": "0.6.2" } }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, "slide": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", @@ -3928,18 +4652,18 @@ "dev": true }, "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "dev": true, "requires": { - "source-map": "0.5.6" + "source-map": "0.6.1" } }, "split": { @@ -3951,6 +4675,18 @@ "through": "2.3.8" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "staged-git-files": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.0.0.tgz", + "integrity": "sha1-zbhHg3wfzFLAioctSIPMCHdmioA=", + "dev": true + }, "stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", @@ -3966,6 +4702,15 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, + "stream-to-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", + "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", + "dev": true, + "requires": { + "any-observable": "0.2.0" + } + }, "string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", @@ -3975,6 +4720,17 @@ "strip-ansi": "3.0.1" } }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", @@ -3984,6 +4740,17 @@ "safe-buffer": "5.1.1" } }, + "stringify-object": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", + "integrity": "sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "2.0.1", + "is-obj": "1.0.1", + "is-regexp": "1.0.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -3999,6 +4766,18 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -4039,50 +4818,65 @@ } }, "ts-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.2.0.tgz", - "integrity": "sha1-mBTwwBQXhJAM8S/vEZetS39NI9E=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz", + "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=", "dev": true, "requires": { "arrify": "1.0.1", - "chalk": "2.0.1", - "diff": "3.3.0", - "make-error": "1.3.0", + "chalk": "2.3.2", + "diff": "3.4.0", + "make-error": "1.3.4", "minimist": "1.2.0", "mkdirp": "0.5.1", - "source-map-support": "0.4.15", + "source-map-support": "0.4.18", "tsconfig": "6.0.0", - "v8flags": "2.1.1", + "v8flags": "3.0.2", "yn": "2.0.0" }, "dependencies": { "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { - "ansi-styles": "3.1.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" + "supports-color": "5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" } }, "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } @@ -4098,125 +4892,137 @@ } }, "tsconfig-paths": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-2.2.0.tgz", - "integrity": "sha1-x2rOfyxFTNMcpvcsM4dtuuAgAOg=", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-2.7.3.tgz", + "integrity": "sha512-PZWk7GDkXPGdnio/CzLJnaUdOBTIBdPuA77LK9u5XOpMk2RZnSk3k+wSefcbP7eSTJi4VZ0hXM+Vdf0YqR/qWg==", "dev": true, "requires": { - "tsconfig": "5.0.3" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "tsconfig": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", - "integrity": "sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo=", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "parse-json": "2.2.0", - "strip-bom": "2.0.0", - "strip-json-comments": "2.0.1" - } - } + "deepmerge": "2.0.1", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1" } }, "tsickle": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz", - "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.27.2.tgz", + "integrity": "sha512-KW+ZgY0t2cq2Qib1sfdgMiRnk+cr3brUtzZoVWjv+Ot3jNxVorFBUH+6In6hl8Dg7BI2AAFf69NHkwvZNMSFwA==", "dev": true, "requires": { "minimist": "1.2.0", "mkdirp": "0.5.1", - "source-map": "0.5.6", - "source-map-support": "0.4.15" + "source-map": "0.6.1", + "source-map-support": "0.5.3" } }, "tslib": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", - "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", "dev": true }, "tslint": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.5.0.tgz", - "integrity": "sha1-EOjas+MGH6YelELozuOYKs8gpqo=", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", "dev": true, "requires": { - "babel-code-frame": "6.22.0", - "colors": "1.1.2", - "commander": "2.11.0", - "diff": "3.3.0", + "babel-code-frame": "6.26.0", + "builtin-modules": "1.1.1", + "chalk": "2.3.2", + "commander": "2.14.1", + "diff": "3.4.0", "glob": "7.1.2", + "js-yaml": "3.10.0", "minimatch": "3.0.4", - "resolve": "1.3.3", + "resolve": "1.5.0", "semver": "5.3.0", - "tslib": "1.7.1", - "tsutils": "2.5.1" + "tslib": "1.9.0", + "tsutils": "2.22.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.3.0" + } + }, + "supports-color": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } } }, "tsutils": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.5.1.tgz", - "integrity": "sha1-wgATkMee7Bpcz6esEtWZY5aD4M8=", + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.22.2.tgz", + "integrity": "sha512-u06FUSulCJ+Y8a2ftuqZN6kIGqdP2yJjUPEngXqmdPND4UQfb04igcotH+dw+IFr417yP6muCLE8/5/Qlfnx0w==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "typedoc": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.6.0.tgz", - "integrity": "sha1-nJhUrsVNkXrAVVKko6SqvsKA4c8=", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.9.0.tgz", + "integrity": "sha512-numP0CtcUK4I1Vssw6E1N/FjyJWpWqhLT4Zb7Gw3i7ca3ElnYh6z41Y/tcUhMsMYn6L8b67E/Fu4XYYKkNaLbA==", "dev": true, "requires": { - "@types/fs-extra": "2.1.0", - "@types/handlebars": "4.0.33", - "@types/highlight.js": "9.1.9", - "@types/lodash": "4.14.68", - "@types/marked": "0.0.28", + "@types/fs-extra": "4.0.0", + "@types/handlebars": "4.0.31", + "@types/highlight.js": "9.1.8", + "@types/lodash": "4.14.74", + "@types/marked": "0.3.0", "@types/minimatch": "2.0.29", - "@types/shelljs": "0.7.2", - "fs-extra": "2.1.2", - "handlebars": "4.0.10", + "@types/shelljs": "0.7.0", + "fs-extra": "4.0.3", + "handlebars": "4.0.11", "highlight.js": "9.12.0", - "lodash": "4.17.4", - "marked": "0.3.6", + "lodash": "4.17.5", + "marked": "0.3.17", "minimatch": "3.0.4", "progress": "2.0.0", "shelljs": "0.7.8", - "typedoc-default-themes": "0.4.4", - "typescript": "2.2.2" + "typedoc-default-themes": "0.5.0", + "typescript": "2.4.1" }, "dependencies": { "typescript": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.2.2.tgz", - "integrity": "sha1-YGAiUIR5tV/6NotY/uljoD39eww=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.1.tgz", + "integrity": "sha1-w8yxbdqgsjFN4DHn5v7onlujRrw=", "dev": true } } }, "typedoc-default-themes": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.4.4.tgz", - "integrity": "sha1-q+mX3PF0YrYnQ4vGO2XFDTY8JS8=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.5.0.tgz", + "integrity": "sha1-bcJDPnjti+qOiHo6zeLzF4W9Yic=", "dev": true }, "typescript": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.1.tgz", - "integrity": "sha1-w8yxbdqgsjFN4DHn5v7onlujRrw=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.2.tgz", + "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=", "dev": true }, "uglify-js": { @@ -4226,9 +5032,18 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.6", + "source-map": "0.5.7", "uglify-to-browserify": "1.0.2", "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } } }, "uglify-to-browserify": { @@ -4244,6 +5059,12 @@ "integrity": "sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8=", "dev": true }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, "update-notifier": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz", @@ -4259,12 +5080,6 @@ "string-length": "1.0.1" } }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4278,12 +5093,21 @@ "dev": true }, "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.2.tgz", + "integrity": "sha512-6sgSKoFw1UpUPd3cFdF7QGnrH6tDeBgW1F3v9gy8gLY0mlbiBXq8soy8aQpY6xeeCjH5K+JvC62Acp7gtl7wWA==", "dev": true, "requires": { - "user-home": "1.1.1" + "homedir-polyfill": "1.0.1" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" } }, "window-size": { @@ -4331,6 +5155,12 @@ "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=", "dev": true }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", @@ -4351,9 +5181,9 @@ "dev": true }, "zone.js": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.12.tgz", - "integrity": "sha1-hv9QU8mK7CkaC/S7rFAdaUoFz7s=", + "version": "0.8.20", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.20.tgz", + "integrity": "sha512-FXlA37ErSXCMy5RNBcGFgCI/Zivqzr0D19GuvDxhcYIJc7xkFp6c29DKyODJu0Zo+EMyur/WPPgcBh1EHjB9jA==", "dev": true } } diff --git a/package.json b/package.json index 374dce4..bd2bf6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular-redux/store", - "version": "7.1.0", + "version": "7.1.1", "description": "Angular bindings for Redux", "main": "./lib/src/index.js", "scripts": { From 5ab400fa08908dc763e3b4a0fa75387954ae63a1 Mon Sep 17 00:00:00 2001 From: Gabriel Schuster Date: Thu, 24 May 2018 20:08:56 +0200 Subject: [PATCH 18/22] angular 6, redux 4, rxjs 6 (#527) * Upgraded to angular 6, redux 4, rxjs 4 * Delete yarn.lock * Fixed tslint * Latest fixes * Fixed docs URLs... ...by adding typedoc plugin and specifying base URL in package.json * Fixed spacing * Prettier * Downgraded TypeScript to 2.7.2 for testing purposes * Downgraded further dependencies for testing purposes * Fixes for downgraded deps * Further fixes for downgraded deps * Fixed documentation links --- docs/assets/js/search.js | 4 +- docs/classes/devtoolsextension.html | 10 +- docs/classes/ngredux.html | 54 +- docs/classes/ngreduxmodule.html | 6 +- docs/globals.html | 95 +- docs/index.html | 95 +- docs/interfaces/ifractalstoreoptions.html | 12 +- docs/interfaces/observablestore.html | 33 +- package.json | 61 +- src/components/fractal-reducer-map.ts | 20 +- src/components/ng-redux.ts | 11 +- src/components/observable-store.ts | 6 +- src/components/root-store.spec.ts | 51 +- src/components/root-store.ts | 32 +- src/components/selectors.ts | 6 +- src/components/sub-store.spec.ts | 47 +- src/components/sub-store.ts | 17 +- src/decorators/dispatch.spec.ts | 20 +- src/decorators/helpers.ts | 6 +- src/decorators/select.spec.ts | 34 +- src/decorators/select.ts | 6 +- src/decorators/with-sub-store.spec.ts | 74 +- src/utils/get-in.ts | 2 +- src/utils/set-in.spec.ts | 2 +- src/utils/set-in.ts | 22 +- testing/ng-redux.mock.spec.ts | 16 +- testing/ng-redux.mock.ts | 16 +- testing/observable-store.mock.ts | 15 +- tsconfig.build.json | 6 +- tsconfig.docs.json | 6 +- tsconfig.json | 6 +- tsconfig.testing.json | 6 +- tslint.json | 2 +- yarn.lock | 2884 --------------------- 34 files changed, 429 insertions(+), 3254 deletions(-) delete mode 100644 yarn.lock diff --git a/docs/assets/js/search.js b/docs/assets/js/search.js index a71af9b..c866a2e 100644 --- a/docs/assets/js/search.js +++ b/docs/assets/js/search.js @@ -1,3 +1,3 @@ -var typedoc = typedoc || {}; +var typedoc = typedoc || {}; typedoc.search = typedoc.search || {}; - typedoc.search.data = {"kinds":{"64":"Function","128":"Class","256":"Interface","1024":"Property","2048":"Method","65536":"Type literal","4194304":"Type alias"},"rows":[{"id":0,"kind":4194304,"name":"Comparator","url":"globals.html#comparator","classes":"tsd-kind-type-alias"},{"id":1,"kind":65536,"name":"__type","url":"globals.html#comparator.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"Comparator"},{"id":2,"kind":4194304,"name":"Transformer","url":"globals.html#transformer","classes":"tsd-kind-type-alias"},{"id":3,"kind":65536,"name":"__type","url":"globals.html#transformer.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"Transformer"},{"id":4,"kind":4194304,"name":"PropertySelector","url":"globals.html#propertyselector","classes":"tsd-kind-type-alias"},{"id":5,"kind":4194304,"name":"PathSelector","url":"globals.html#pathselector","classes":"tsd-kind-type-alias"},{"id":6,"kind":4194304,"name":"FunctionSelector","url":"globals.html#functionselector","classes":"tsd-kind-type-alias"},{"id":7,"kind":65536,"name":"__type","url":"globals.html#functionselector.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"FunctionSelector"},{"id":8,"kind":4194304,"name":"Selector","url":"globals.html#selector","classes":"tsd-kind-type-alias"},{"id":9,"kind":256,"name":"ObservableStore","url":"interfaces/observablestore.html","classes":"tsd-kind-interface tsd-has-type-parameter"},{"id":10,"kind":1024,"name":"select","url":"interfaces/observablestore.html#select","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ObservableStore"},{"id":11,"kind":65536,"name":"__type","url":"interfaces/observablestore.html#select.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter tsd-is-not-exported","parent":"ObservableStore.select"},{"id":12,"kind":1024,"name":"configureSubStore","url":"interfaces/observablestore.html#configuresubstore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ObservableStore"},{"id":13,"kind":65536,"name":"__type","url":"interfaces/observablestore.html#configuresubstore.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter tsd-is-not-exported","parent":"ObservableStore.configureSubStore"},{"id":14,"kind":1024,"name":"dispatch","url":"interfaces/observablestore.html#dispatch","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"ObservableStore"},{"id":15,"kind":2048,"name":"getState","url":"interfaces/observablestore.html#getstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"ObservableStore"},{"id":16,"kind":2048,"name":"subscribe","url":"interfaces/observablestore.html#subscribe","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"ObservableStore"},{"id":17,"kind":2048,"name":"replaceReducer","url":"interfaces/observablestore.html#replacereducer","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"ObservableStore"},{"id":18,"kind":128,"name":"NgRedux","url":"classes/ngredux.html","classes":"tsd-kind-class tsd-has-type-parameter"},{"id":19,"kind":1024,"name":"instance","url":"classes/ngredux.html#instance","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NgRedux"},{"id":20,"kind":1024,"name":"configureStore","url":"classes/ngredux.html#configurestore","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":21,"kind":65536,"name":"__type","url":"classes/ngredux.html#configurestore.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.configureStore"},{"id":22,"kind":1024,"name":"provideStore","url":"classes/ngredux.html#providestore","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":23,"kind":65536,"name":"__type","url":"classes/ngredux.html#providestore.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.provideStore"},{"id":24,"kind":1024,"name":"dispatch","url":"classes/ngredux.html#dispatch","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":25,"kind":1024,"name":"getState","url":"classes/ngredux.html#getstate","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":26,"kind":65536,"name":"__type","url":"classes/ngredux.html#getstate.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.getState"},{"id":27,"kind":1024,"name":"subscribe","url":"classes/ngredux.html#subscribe","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":28,"kind":65536,"name":"__type","url":"classes/ngredux.html#subscribe.__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.subscribe"},{"id":29,"kind":1024,"name":"replaceReducer","url":"classes/ngredux.html#replacereducer","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":30,"kind":65536,"name":"__type","url":"classes/ngredux.html#replacereducer.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.replaceReducer"},{"id":31,"kind":1024,"name":"select","url":"classes/ngredux.html#select","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":32,"kind":65536,"name":"__type","url":"classes/ngredux.html#select.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter tsd-is-not-exported","parent":"NgRedux.select"},{"id":33,"kind":1024,"name":"configureSubStore","url":"classes/ngredux.html#configuresubstore","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":34,"kind":65536,"name":"__type","url":"classes/ngredux.html#configuresubstore.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter tsd-is-not-exported","parent":"NgRedux.configureSubStore"},{"id":35,"kind":128,"name":"DevToolsExtension","url":"classes/devtoolsextension.html","classes":"tsd-kind-class"},{"id":36,"kind":2048,"name":"enhancer","url":"classes/devtoolsextension.html#enhancer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"DevToolsExtension"},{"id":37,"kind":2048,"name":"isEnabled","url":"classes/devtoolsextension.html#isenabled","classes":"tsd-kind-method tsd-parent-kind-class","parent":"DevToolsExtension"},{"id":38,"kind":64,"name":"enableFractalReducers","url":"globals.html#enablefractalreducers","classes":"tsd-kind-function"},{"id":39,"kind":256,"name":"IFractalStoreOptions","url":"interfaces/ifractalstoreoptions.html","classes":"tsd-kind-interface"},{"id":40,"kind":1024,"name":"basePathMethodName","url":"interfaces/ifractalstoreoptions.html#basepathmethodname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"IFractalStoreOptions"},{"id":41,"kind":1024,"name":"localReducer","url":"interfaces/ifractalstoreoptions.html#localreducer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"IFractalStoreOptions"},{"id":42,"kind":64,"name":"select","url":"globals.html#select","classes":"tsd-kind-function tsd-has-type-parameter"},{"id":43,"kind":64,"name":"select$","url":"globals.html#select_","classes":"tsd-kind-function tsd-has-type-parameter"},{"id":44,"kind":64,"name":"dispatch","url":"globals.html#dispatch","classes":"tsd-kind-function"},{"id":45,"kind":64,"name":"WithSubStore","url":"globals.html#withsubstore","classes":"tsd-kind-function"},{"id":46,"kind":128,"name":"NgReduxModule","url":"classes/ngreduxmodule.html","classes":"tsd-kind-class"}]}; \ No newline at end of file + typedoc.search.data = {"kinds":{"64":"Function","128":"Class","256":"Interface","1024":"Property","2048":"Method","65536":"Type literal","4194304":"Type alias"},"rows":[{"id":0,"kind":4194304,"name":"Comparator","url":"globals.html#comparator","classes":"tsd-kind-type-alias"},{"id":1,"kind":65536,"name":"__type","url":"globals.html#comparator.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"Comparator"},{"id":2,"kind":4194304,"name":"Transformer","url":"globals.html#transformer","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":3,"kind":65536,"name":"__type","url":"globals.html#transformer.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"Transformer"},{"id":4,"kind":4194304,"name":"PropertySelector","url":"globals.html#propertyselector","classes":"tsd-kind-type-alias"},{"id":5,"kind":4194304,"name":"PathSelector","url":"globals.html#pathselector","classes":"tsd-kind-type-alias"},{"id":6,"kind":4194304,"name":"FunctionSelector","url":"globals.html#functionselector","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":7,"kind":65536,"name":"__type","url":"globals.html#functionselector.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"FunctionSelector"},{"id":8,"kind":4194304,"name":"Selector","url":"globals.html#selector","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":9,"kind":256,"name":"ObservableStore","url":"interfaces/observablestore.html","classes":"tsd-kind-interface tsd-has-type-parameter"},{"id":10,"kind":1024,"name":"select","url":"interfaces/observablestore.html#select","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ObservableStore"},{"id":11,"kind":65536,"name":"__type","url":"interfaces/observablestore.html#select.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter tsd-is-not-exported","parent":"ObservableStore.select"},{"id":12,"kind":1024,"name":"configureSubStore","url":"interfaces/observablestore.html#configuresubstore","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ObservableStore"},{"id":13,"kind":65536,"name":"__type","url":"interfaces/observablestore.html#configuresubstore.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter tsd-is-not-exported","parent":"ObservableStore.configureSubStore"},{"id":14,"kind":1024,"name":"dispatch","url":"interfaces/observablestore.html#dispatch","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"ObservableStore"},{"id":15,"kind":2048,"name":"getState","url":"interfaces/observablestore.html#getstate","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"ObservableStore"},{"id":16,"kind":2048,"name":"subscribe","url":"interfaces/observablestore.html#subscribe","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"ObservableStore"},{"id":17,"kind":2048,"name":"replaceReducer","url":"interfaces/observablestore.html#replacereducer","classes":"tsd-kind-method tsd-parent-kind-interface tsd-is-inherited","parent":"ObservableStore"},{"id":18,"kind":128,"name":"NgRedux","url":"classes/ngredux.html","classes":"tsd-kind-class tsd-has-type-parameter"},{"id":19,"kind":1024,"name":"instance","url":"classes/ngredux.html#instance","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NgRedux"},{"id":20,"kind":1024,"name":"configureStore","url":"classes/ngredux.html#configurestore","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":21,"kind":65536,"name":"__type","url":"classes/ngredux.html#configurestore.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.configureStore"},{"id":22,"kind":1024,"name":"provideStore","url":"classes/ngredux.html#providestore","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":23,"kind":65536,"name":"__type","url":"classes/ngredux.html#providestore.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.provideStore"},{"id":24,"kind":1024,"name":"dispatch","url":"classes/ngredux.html#dispatch","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":25,"kind":1024,"name":"getState","url":"classes/ngredux.html#getstate","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":26,"kind":65536,"name":"__type","url":"classes/ngredux.html#getstate.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.getState"},{"id":27,"kind":1024,"name":"subscribe","url":"classes/ngredux.html#subscribe","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":28,"kind":65536,"name":"__type","url":"classes/ngredux.html#subscribe.__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.subscribe"},{"id":29,"kind":1024,"name":"replaceReducer","url":"classes/ngredux.html#replacereducer","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":30,"kind":65536,"name":"__type","url":"classes/ngredux.html#replacereducer.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-is-not-exported","parent":"NgRedux.replaceReducer"},{"id":31,"kind":1024,"name":"select","url":"classes/ngredux.html#select","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":32,"kind":65536,"name":"__type","url":"classes/ngredux.html#select.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter tsd-is-not-exported","parent":"NgRedux.select"},{"id":33,"kind":1024,"name":"configureSubStore","url":"classes/ngredux.html#configuresubstore","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NgRedux"},{"id":34,"kind":65536,"name":"__type","url":"classes/ngredux.html#configuresubstore.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter tsd-is-not-exported","parent":"NgRedux.configureSubStore"},{"id":35,"kind":128,"name":"DevToolsExtension","url":"classes/devtoolsextension.html","classes":"tsd-kind-class"},{"id":36,"kind":2048,"name":"enhancer","url":"classes/devtoolsextension.html#enhancer","classes":"tsd-kind-method tsd-parent-kind-class","parent":"DevToolsExtension"},{"id":37,"kind":2048,"name":"isEnabled","url":"classes/devtoolsextension.html#isenabled","classes":"tsd-kind-method tsd-parent-kind-class","parent":"DevToolsExtension"},{"id":38,"kind":64,"name":"enableFractalReducers","url":"globals.html#enablefractalreducers","classes":"tsd-kind-function"},{"id":39,"kind":256,"name":"IFractalStoreOptions","url":"interfaces/ifractalstoreoptions.html","classes":"tsd-kind-interface"},{"id":40,"kind":1024,"name":"basePathMethodName","url":"interfaces/ifractalstoreoptions.html#basepathmethodname","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"IFractalStoreOptions"},{"id":41,"kind":1024,"name":"localReducer","url":"interfaces/ifractalstoreoptions.html#localreducer","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"IFractalStoreOptions"},{"id":42,"kind":64,"name":"select","url":"globals.html#select","classes":"tsd-kind-function tsd-has-type-parameter"},{"id":43,"kind":64,"name":"select$","url":"globals.html#select_","classes":"tsd-kind-function tsd-has-type-parameter"},{"id":44,"kind":64,"name":"dispatch","url":"globals.html#dispatch","classes":"tsd-kind-function"},{"id":45,"kind":64,"name":"WithSubStore","url":"globals.html#withsubstore","classes":"tsd-kind-function"},{"id":46,"kind":128,"name":"NgReduxModule","url":"classes/ngreduxmodule.html","classes":"tsd-kind-class"}]}; \ No newline at end of file diff --git a/docs/classes/devtoolsextension.html b/docs/classes/devtoolsextension.html index 3034f4e..8e22406 100644 --- a/docs/classes/devtoolsextension.html +++ b/docs/classes/devtoolsextension.html @@ -933,7 +933,7 @@
  • Comparator
  • -
  • +
  • FunctionSelector
  • @@ -942,10 +942,10 @@
  • PropertySelector
  • -
  • +
  • Selector
  • -
  • +
  • Transformer
  • @@ -1008,7 +1008,7 @@

    enhancer

  • @@ -1038,7 +1038,7 @@

    isEnabled

  • diff --git a/docs/classes/ngredux.html b/docs/classes/ngredux.html index 4d4e67b..1a62d46 100644 --- a/docs/classes/ngredux.html +++ b/docs/classes/ngredux.html @@ -954,7 +954,7 @@
  • Comparator
  • -
  • +
  • FunctionSelector
  • @@ -963,10 +963,10 @@
  • PropertySelector
  • -
  • +
  • Selector
  • -
  • +
  • Transformer
  • @@ -1044,11 +1044,11 @@

    Properties

    Properties

    -

    configureStore

    +

    Abstract configureStore

    configureStore: function
    @@ -1078,14 +1078,14 @@

    Type declaration