diff --git a/.babelrc b/.babelrc index 0c64441..c0915e2 100644 --- a/.babelrc +++ b/.babelrc @@ -1,24 +1,15 @@ { - "presets": [ - ["es2015", { "loose": true, "modules": "commonjs" }], - "react", - "stage-0" - ], + "presets": ["es2015-no-commonjs", "react", "stage-0"], + "plugins": ["transform-flow-strip-types"], "env": { - "cjs": { - "presets": [ - ["es2015", { "loose": true, "modules": "commonjs" }], - "react", - "stage-0" - ], - "plugins": ["add-module-exports"] + "development": { + "plugins": ["transform-es2015-modules-commonjs"] }, - "es": { - "presets": [ - ["es2015", { "loose": true, "modules": false }], - "react", - "stage-0" - ] + "commonjs": { + "plugins": ["transform-es2015-modules-commonjs"] + }, + "test": { + "plugins": ["transform-es2015-modules-commonjs"] } } } \ No newline at end of file diff --git a/.flowconfig b/.flowconfig new file mode 100644 index 0000000..363b337 --- /dev/null +++ b/.flowconfig @@ -0,0 +1,9 @@ +[ignore] + +[include] + +[libs] + +[lints] + +[options] diff --git a/.gitignore b/.gitignore index 39f6528..17e0a5d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ lib es dist site +.vscode diff --git a/flow-typed/npm/flat_vx.x.x.js b/flow-typed/npm/flat_vx.x.x.js new file mode 100644 index 0000000..b5dae91 --- /dev/null +++ b/flow-typed/npm/flat_vx.x.x.js @@ -0,0 +1,18 @@ +// flow-typed signature: 16f0c69e5bc835af23ef2764e7f8b9f8 +// flow-typed version: <>/flat_v^2.0.1/flow_v0.53.1 + +/** + * This is an autogenerated libdef stub for: + * + * 'flat' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'flat' { + declare export function flatten(Object, options: ?any): Object; +} diff --git a/flow-typed/npm/react-redux_v4.x.x.js b/flow-typed/npm/react-redux_v4.x.x.js new file mode 100644 index 0000000..60bff31 --- /dev/null +++ b/flow-typed/npm/react-redux_v4.x.x.js @@ -0,0 +1,97 @@ +// flow-typed signature: 114add35a1264a6ed8b59d446306b830 +// flow-typed version: aff2bf770e/react-redux_v4.x.x/flow_>=v0.53.x + +import type { Dispatch, Store } from "redux"; + +declare module "react-redux" { + /* + + S = State + A = Action + OP = OwnProps + SP = StateProps + DP = DispatchProps + + */ + + declare type MapStateToProps = ( + state: S, + ownProps: OP + ) => SP; + + declare type MapDispatchToProps = + | ((dispatch: Dispatch, ownProps: OP) => DP) + | DP; + + declare type MergeProps = ( + stateProps: SP, + dispatchProps: DP, + ownProps: OP + ) => P; + + declare class ConnectedComponent extends React$Component { + static WrappedComponent: Class>, + getWrappedInstance(): React$Component

, + props: OP, + state: void + } + + declare type ConnectedComponentClass = Class< + ConnectedComponent + >; + + declare type Connector = ( + component: React$ComponentType

+ ) => ConnectedComponentClass; + + declare class Provider extends React$Component<{ + store: Store, + children?: any + }> {} + + declare type ConnectOptions = { + pure?: boolean, + withRef?: boolean + }; + + declare type Null = null | void; + + declare function connect( + ...rest: Array // <= workaround for https://github.com/facebook/flow/issues/2360 + ): Connector } & OP>>; + + declare function connect( + mapStateToProps: Null, + mapDispatchToProps: Null, + mergeProps: Null, + options: ConnectOptions + ): Connector } & OP>>; + + declare function connect( + mapStateToProps: MapStateToProps, + mapDispatchToProps: Null, + mergeProps: Null, + options?: ConnectOptions + ): Connector } & OP>>; + + declare function connect( + mapStateToProps: Null, + mapDispatchToProps: MapDispatchToProps, + mergeProps: Null, + options?: ConnectOptions + ): Connector>; + + declare function connect( + mapStateToProps: MapStateToProps, + mapDispatchToProps: MapDispatchToProps, + mergeProps: Null, + options?: ConnectOptions + ): Connector>; + + declare function connect( + mapStateToProps: MapStateToProps, + mapDispatchToProps: MapDispatchToProps, + mergeProps: MergeProps, + options?: ConnectOptions + ): Connector; +} diff --git a/flow-typed/npm/redux_v3.x.x.js b/flow-typed/npm/redux_v3.x.x.js new file mode 100644 index 0000000..f6445d9 --- /dev/null +++ b/flow-typed/npm/redux_v3.x.x.js @@ -0,0 +1,109 @@ +// flow-typed signature: 86993bd000012d3e1ef10d757d16952d +// flow-typed version: a165222d28/redux_v3.x.x/flow_>=v0.33.x + +declare module 'redux' { + + /* + + S = State + A = Action + D = Dispatch + + */ + + declare type DispatchAPI = (action: A) => A; + declare type Dispatch }> = DispatchAPI; + + declare type MiddlewareAPI> = { + dispatch: D; + getState(): S; + }; + + declare type Store> = { + // rewrite MiddlewareAPI members in order to get nicer error messages (intersections produce long messages) + dispatch: D; + getState(): S; + subscribe(listener: () => void): () => void; + replaceReducer(nextReducer: Reducer): void + }; + + declare type Reducer = (state: S, action: A) => S; + + declare type CombinedReducer = (state: $Shape & {} | void, action: A) => S; + + declare type Middleware> = + (api: MiddlewareAPI) => + (next: D) => D; + + declare type StoreCreator> = { + (reducer: Reducer, enhancer?: StoreEnhancer): Store; + (reducer: Reducer, preloadedState: S, enhancer?: StoreEnhancer): Store; + }; + + declare type StoreEnhancer> = (next: StoreCreator) => StoreCreator; + + declare function createStore(reducer: Reducer, enhancer?: StoreEnhancer): Store; + declare function createStore(reducer: Reducer, preloadedState: S, enhancer?: StoreEnhancer): Store; + + declare function applyMiddleware(...middlewares: Array>): StoreEnhancer; + + declare type ActionCreator = (...args: Array) => A; + declare type ActionCreators = { [key: K]: ActionCreator }; + + declare function bindActionCreators, D: DispatchAPI>(actionCreator: C, dispatch: D): C; + declare function bindActionCreators, D: DispatchAPI>(actionCreators: C, dispatch: D): C; + + declare function combineReducers(reducers: O): CombinedReducer<$ObjMap(r: Reducer) => S>, A>; + + declare function compose(ab: (a: A) => B): (a: A) => B + declare function compose( + bc: (b: B) => C, + ab: (a: A) => B + ): (a: A) => C + declare function compose( + cd: (c: C) => D, + bc: (b: B) => C, + ab: (a: A) => B + ): (a: A) => D + declare function compose( + de: (d: D) => E, + cd: (c: C) => D, + bc: (b: B) => C, + ab: (a: A) => B + ): (a: A) => E + declare function compose( + ef: (e: E) => F, + de: (d: D) => E, + cd: (c: C) => D, + bc: (b: B) => C, + ab: (a: A) => B + ): (a: A) => F + declare function compose( + fg: (f: F) => G, + ef: (e: E) => F, + de: (d: D) => E, + cd: (c: C) => D, + bc: (b: B) => C, + ab: (a: A) => B + ): (a: A) => G + declare function compose( + gh: (g: G) => H, + fg: (f: F) => G, + ef: (e: E) => F, + de: (d: D) => E, + cd: (c: C) => D, + bc: (b: B) => C, + ab: (a: A) => B + ): (a: A) => H + declare function compose( + hi: (h: H) => I, + gh: (g: G) => H, + fg: (f: F) => G, + ef: (e: E) => F, + de: (d: D) => E, + cd: (c: C) => D, + bc: (b: B) => C, + ab: (a: A) => B + ): (a: A) => I + +} diff --git a/flow-typed/npm/reselect_v3.x.x.js b/flow-typed/npm/reselect_v3.x.x.js new file mode 100644 index 0000000..589c575 --- /dev/null +++ b/flow-typed/npm/reselect_v3.x.x.js @@ -0,0 +1,753 @@ +// flow-typed signature: 0199525b667f385f2e61dbeae3215f21 +// flow-typed version: b43dff3e0e/reselect_v3.x.x/flow_>=v0.28.x + +declare module 'reselect' { + declare type Selector = { + (state: TState, props: TProps, ...rest: any[]): TResult; + }; + + declare type SelectorCreator = { + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + selector9: Selector, + selector10: Selector, + selector11: Selector, + selector12: Selector, + selector13: Selector, + selector14: Selector, + selector15: Selector, + selector16: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12, + arg13: T13, + arg14: T14, + arg15: T15, + arg16: T16 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12, + arg13: T13, + arg14: T14, + arg15: T15, + arg16: T16 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + selector9: Selector, + selector10: Selector, + selector11: Selector, + selector12: Selector, + selector13: Selector, + selector14: Selector, + selector15: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12, + arg13: T13, + arg14: T14, + arg15: T15 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12, + arg13: T13, + arg14: T14, + arg15: T15 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + selector9: Selector, + selector10: Selector, + selector11: Selector, + selector12: Selector, + selector13: Selector, + selector14: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12, + arg13: T13, + arg14: T14 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12, + arg13: T13, + arg14: T14 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + selector9: Selector, + selector10: Selector, + selector11: Selector, + selector12: Selector, + selector13: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12, + arg13: T13 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12, + arg13: T13 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + selector9: Selector, + selector10: Selector, + selector11: Selector, + selector12: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11, + arg12: T12 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + selector9: Selector, + selector10: Selector, + selector11: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10, + arg11: T11 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + selector9: Selector, + selector10: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9, + arg10: T10 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + selector9: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8, + arg9: T9 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + selector8: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7, + arg8: T8 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + selector7: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6, + arg7: T7 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + selector6: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5, + arg6: T6 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + selector5: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4, + arg5: T5 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + selector4: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3, + arg4: T4 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + selector3: Selector, + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2, + arg3: T3 + ) => TResult + ): Selector; + + ( + selector1: Selector, + selector2: Selector, + resultFunc: ( + arg1: T1, + arg2: T2 + ) => TResult + ): Selector; + ( + selectors: [ + Selector, + Selector + ], + resultFunc: ( + arg1: T1, + arg2: T2 + ) => TResult + ): Selector; + + ( + selector1: Selector, + resultFunc: ( + arg1: T1 + ) => TResult + ): Selector; + ( + selectors: [ + Selector + ], + resultFunc: ( + arg1: T1 + ) => TResult + ): Selector; + }; + + declare type Reselect = { + createSelector: SelectorCreator; + + defaultMemoize: ( + func: TFunc, + equalityCheck?: (a: any, b: any) => boolean + ) => TFunc; + + createSelectorCreator: ( + memoize: Function, + ...memoizeOptions: any[] + ) => SelectorCreator; + + createStructuredSelector: ( + inputSelectors: { + [k: string | number]: Selector + }, + selectorCreator?: SelectorCreator + ) => Selector; + }; + + declare var exports: Reselect; +}; diff --git a/package-lock.json b/package-lock.json index 7d75c2a..41ecefb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,24 @@ "acorn": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz" } }, + "agent-base": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", + "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", + "dev": true, + "requires": { + "extend": "3.0.1", + "semver": "5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } + } + }, "ajv": { "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", @@ -238,25 +256,163 @@ "dev": true }, "babel-cli": { - "version": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz", - "integrity": "sha1-IHzXBbumFImy6kG1MSNBz2rKIoM=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", "dev": true, "requires": { - "babel-core": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "babel-polyfill": "http://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "babel-register": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "babel-core": "6.26.0", + "babel-polyfill": "6.26.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", "chokidar": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "commander": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "fs-readdir-recursive": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", + "fs-readdir-recursive": "1.0.0", "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "output-file-sync": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "output-file-sync": "1.1.2", "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "slash": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "v8flags": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz" + "v8flags": "2.1.1" + }, + "dependencies": { + "babel-code-frame": { + "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": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "babel-messages": "http://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "json5": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "private": "http://registry.npmjs.org/private/-/private-0.1.7.tgz", + "slash": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "http://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "jsesc": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "trim-right": "http://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.0", + "home-or-tmp": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz" + }, + "dependencies": { + "core-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", + "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "http://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "globals": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } } }, "babel-code-frame": { @@ -495,11 +651,6 @@ "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" } }, - "babel-plugin-add-module-exports": { - "version": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", - "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU=", - "dev": true - }, "babel-plugin-check-es2015-constants": { "version": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", @@ -717,15 +868,6 @@ "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" } }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - } - }, "babel-plugin-transform-es2015-for-of": { "version": "http://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", @@ -752,45 +894,87 @@ "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" } }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" - } - }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-amd": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz" + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + }, + "dependencies": { + "babel-code-frame": { + "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": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "http://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "globals": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + } } }, "babel-plugin-transform-es2015-object-super": { @@ -959,27 +1143,74 @@ } }, "babel-plugin-transform-strict-mode": { - "version": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "babel-runtime": "6.26.0", "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "regenerator-runtime": "0.11.0" + } + } } }, "babel-polyfill": { - "version": "http://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "dev": true, "requires": { - "babel-runtime": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" + "babel-runtime": "6.26.0", + "core-js": "2.5.0", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.0", + "regenerator-runtime": "0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + } + } + }, + "core-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", + "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } } }, - "babel-preset-es2015": { - "version": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "babel-preset-es2015-no-commonjs": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-preset-es2015-no-commonjs/-/babel-preset-es2015-no-commonjs-0.0.2.tgz", + "integrity": "sha1-F45fC9YYvCO5o+AdrBCMOByZBtg=", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", @@ -989,14 +1220,9 @@ "babel-plugin-transform-es2015-classes": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "babel-plugin-transform-es2015-computed-properties": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "babel-plugin-transform-es2015-destructuring": "http://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "babel-plugin-transform-es2015-duplicate-keys": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "babel-plugin-transform-es2015-for-of": "http://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "babel-plugin-transform-es2015-function-name": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "babel-plugin-transform-es2015-literals": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "babel-plugin-transform-es2015-modules-amd": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "babel-plugin-transform-es2015-modules-commonjs": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "babel-plugin-transform-es2015-modules-systemjs": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "babel-plugin-transform-es2015-modules-umd": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "babel-plugin-transform-es2015-object-super": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "babel-plugin-transform-es2015-parameters": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "babel-plugin-transform-es2015-shorthand-properties": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", @@ -1099,8 +1325,7 @@ "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", "dev": true, "requires": { - "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "regenerator-runtime": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" + "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" } }, "babel-template": { @@ -1177,6 +1402,16 @@ "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", "dev": true }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "0.1.1", + "chainsaw": "0.1.0" + } + }, "binary-extensions": { "version": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz", "integrity": "sha1-ZlBsFs5vTWkopbPNajPKQelB43s=", @@ -1359,6 +1594,12 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, "builtin-modules": { "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", @@ -1425,6 +1666,15 @@ "lazy-cache": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" } }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": "0.3.9" + } + }, "chalk": { "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", @@ -1437,6 +1687,12 @@ "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" } }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true + }, "cheerio": { "version": "0.22.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", @@ -1542,6 +1798,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", @@ -1709,6 +1971,12 @@ "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true + }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", @@ -1809,6 +2077,15 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, "deep-equal": { "version": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", @@ -1993,6 +2270,12 @@ "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" } }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2212,6 +2495,21 @@ "merge": "1.2.0" } }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "get-stream": "3.0.0", + "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "http://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "strip-eof": "1.0.0" + } + }, "expand-brackets": { "version": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", @@ -2414,6 +2712,296 @@ "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" } }, + "flow-bin": { + "version": "0.53.1", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.53.1.tgz", + "integrity": "sha1-myK2OiPJl2OuUz67qwf4jIjJfYQ=", + "dev": true + }, + "flow-copy-source": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/flow-copy-source/-/flow-copy-source-1.2.1.tgz", + "integrity": "sha512-C3T0OjBOOVd0LWg4wzE3seZOpqddSq5nxMD72iDrGdZ+7WsjbO4rUMEWp4mXErWesD3jPTATxk27HfQdMtZW6g==", + "dev": true, + "requires": { + "chokidar": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "fs-extra": "3.0.1", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "kefir": "3.7.4", + "yargs": "8.0.2" + }, + "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 + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + }, + "dependencies": { + "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": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-main-filename": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "flow-typed": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/flow-typed/-/flow-typed-2.1.5.tgz", + "integrity": "sha512-pzo0Zg8T545MgJwIDqXyShuRYugy0tvGeEvwC+9ooYckIF5IZyIJJ3ol/kQFSKoX3K7BMZ1XuQ239M8pmcSw4A==", + "dev": true, + "requires": { + "babel-polyfill": "6.26.0", + "colors": "1.1.2", + "fs-extra": "4.0.1", + "github": "9.3.1", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "got": "7.1.0", + "md5": "2.2.1", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "request": "2.81.0", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "table": "4.0.1", + "through": "2.3.8", + "unzip": "0.1.11", + "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "yargs": "4.8.1" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + } + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true, + "requires": { + "cliui": "3.2.0", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "lodash.assign": "4.2.0", + "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "require-directory": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-main-filename": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "which-module": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "window-size": "0.2.0", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "yargs-parser": "2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "lodash.assign": "4.2.0" + } + } + } + }, + "follow-redirects": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "stream-consume": "0.1.0" + } + }, "for-in": { "version": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", @@ -2459,8 +3047,20 @@ "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", "dev": true }, + "fs-extra": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz", + "integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "jsonfile": "3.0.1", + "universalify": "0.1.1" + } + }, "fs-readdir-recursive": { - "version": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", "dev": true }, @@ -3480,6 +4080,29 @@ } } }, + "fstream": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", + "dev": true, + "requires": { + "graceful-fs": "3.0.11", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" + }, + "dependencies": { + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "1.1.0" + } + } + } + }, "function-bind": { "version": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", @@ -3506,6 +4129,12 @@ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", "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 + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -3523,6 +4152,18 @@ } } }, + "github": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/github/-/github-9.3.1.tgz", + "integrity": "sha512-LvVb6iR8/7bqYgj0VeAtqys0t427jwIBkv/+or/ssypfIk5R1fnz4aeIEv4udPw6VFoH6vL4gi+foBoD5aazXg==", + "dev": true, + "requires": { + "follow-redirects": "0.0.7", + "https-proxy-agent": "1.0.0", + "mime": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "netrc": "0.1.4" + } + }, "glob": { "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", @@ -3570,6 +4211,28 @@ "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" } }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "isurl": "1.0.0", + "lowercase-keys": "1.0.0", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.0", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } + }, "graceful-fs": { "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", @@ -3687,6 +4350,21 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "has-symbol-support-x": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.0.tgz", + "integrity": "sha512-F1NtLDtW9NyUrS3faUcI1yVFHCTXyzPb1jfrZBQi5NHxFPlXxZnFLFGzfA2DsdmgCxv2MZ0+bfcgC4EZTmk4SQ==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.0.tgz", + "integrity": "sha512-R3OdOP9j6AH5hS1yXeu9wAS+iKSZQx/CC6aMdN6WiaqPlBoA2S+47MtoMsZgKr2m0eAJ+73WWGX0RaFFE5XWKA==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.0" + } + }, "hash-base": { "version": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", @@ -3901,6 +4579,17 @@ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", "dev": true }, + "https-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "dev": true, + "requires": { + "agent-base": "2.1.1", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "extend": "3.0.1" + } + }, "iconv-lite": { "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", "integrity": "sha1-I9hlaxaq5nQqwpcy6o8DNqR4nPI=", @@ -4075,6 +4764,12 @@ "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" } }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, "is-path-cwd": { "version": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", @@ -4096,6 +4791,12 @@ "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, "is-posix-bracket": { "version": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", @@ -4115,6 +4816,12 @@ "has": "1.0.1" } }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, "is-stream": { "version": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", @@ -4273,6 +4980,16 @@ "handlebars": "4.0.10" } }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.0", + "is-object": "1.0.1" + } + }, "jest": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", @@ -4701,6 +5418,15 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, "jsonify": { "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", @@ -4726,6 +5452,15 @@ } } }, + "kefir": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/kefir/-/kefir-3.7.4.tgz", + "integrity": "sha512-jEdzYT0ubTtukA7mu3TqXfIOzHVWSnJ80cXI8VFd6fqm7vaw+7su0ARduQP8QHtPF70FlYMX06F7O8wpY1Jzxg==", + "dev": true, + "requires": { + "symbol-observable": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz" + } + }, "kind-of": { "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", @@ -4819,6 +5554,12 @@ "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=", "dev": true }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, "lodash.assignin": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", @@ -4923,6 +5664,12 @@ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", "dev": true }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, "lru-cache": { "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", @@ -4946,11 +5693,67 @@ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, + "match-stream": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", + "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", + "dev": true, + "requires": { + "buffers": "0.1.1", + "readable-stream": "1.0.34" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + }, "media-typer": { "version": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, "memory-fs": { "version": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", @@ -5047,6 +5850,18 @@ "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" } }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, "minimalistic-assert": { "version": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", @@ -5103,6 +5918,12 @@ "dev": true, "optional": true }, + "natives": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", + "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5122,6 +5943,12 @@ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, + "netrc": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=", + "dev": true + }, "no-case": { "version": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", @@ -5218,6 +6045,15 @@ "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz" } }, + "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" + } + }, "nth-check": { "version": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", @@ -5412,7 +6248,8 @@ "dev": true }, "output-file-sync": { - "version": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", "dev": true, "requires": { @@ -5421,6 +6258,24 @@ "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" } }, + "over": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", + "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "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-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", @@ -5441,6 +6296,15 @@ "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=", "dev": true }, + "p-timeout": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.0.tgz", + "integrity": "sha1-mCD5lDTFgXhotPNICe5SkWYNW2w=", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, "pako": { "version": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", @@ -5519,6 +6383,12 @@ "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", @@ -5607,6 +6477,12 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, "preserve": { "version": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", @@ -5720,6 +6596,44 @@ "randombytes": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz" } }, + "pullstream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", + "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", + "dev": true, + "requires": { + "over": "0.0.5", + "readable-stream": "1.0.34", + "setimmediate": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "slice-stream": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "punycode": { "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", @@ -5972,8 +6886,9 @@ "dev": true }, "regenerator-runtime": { - "version": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", "dev": true }, "regenerator-transform": { @@ -6385,6 +7300,47 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "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 + }, + "slice-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", + "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", + "dev": true, + "requires": { + "readable-stream": "1.0.34" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", @@ -6540,6 +7496,12 @@ "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" } }, + "stream-consume": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", + "dev": true + }, "stream-http": { "version": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", "integrity": "sha1-QKBQ7I3DtTsz2ZCUFcAsC/Gr+60=", @@ -6606,6 +7568,12 @@ "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" } }, + "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": "http://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", @@ -6630,6 +7598,53 @@ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, + "table": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", + "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", + "dev": true, + "requires": { + "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "ajv-keywords": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "slice-ansi": "0.0.4", + "string-width": "2.1.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 + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, "tapable": { "version": "https://registry.npmjs.org/tapable/-/tapable-0.2.7.tgz", "integrity": "sha1-5GwNqsuyuKmLmwzqD0BSEFgX7Vw=", @@ -6653,11 +7668,23 @@ "integrity": "sha1-UMsGcO28QCN7njR9fh+I5GIK+DY=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, "thunky": { "version": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", "dev": true }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, "timers-browserify": { "version": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", @@ -6702,6 +7729,12 @@ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, "trim-newlines": { "version": "http://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", @@ -6771,11 +7804,57 @@ "dev": true, "optional": true }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, "unpipe": { "version": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unzip": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", + "integrity": "sha1-iXScY7BY19kNYZ+GuYqhU107l/A=", + "dev": true, + "requires": { + "binary": "0.3.0", + "fstream": "0.1.31", + "match-stream": "0.0.2", + "pullstream": "0.4.1", + "readable-stream": "1.0.34", + "setimmediate": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "upper-case": { "version": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", @@ -6813,8 +7892,24 @@ } } }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, "user-home": { - "version": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", "dev": true }, @@ -6854,11 +7949,12 @@ "dev": true }, "v8flags": { - "version": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "dev": true, "requires": { - "user-home": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + "user-home": "1.1.1" } }, "validate-npm-package-license": { diff --git a/package.json b/package.json index 88d7a79..d994f15 100644 --- a/package.json +++ b/package.json @@ -2,28 +2,31 @@ "name": "react-localize-redux", "version": "2.6.0", "description": "Localization library for React/Redux", - "main": "lib/index", - "jsnext:main": "es/index", + "main": "./lib/index.js", + "module": "./es/index.js", + "jsnext:main": "./es/index.js", "files": [ "*.md", "es", "lib", - "umd", "dist" ], "scripts": { - "build": "npm run build-cjs && npm run build-es && npm run build-umd && npm run build-min", - "build-cjs": "rimraf lib && cross-env BABEL_ENV=cjs babel ./src -d lib", - "build-es": "rimraf es && cross-env BABEL_ENV=es babel ./src -d es", - "build-umd": "webpack --env.dev --output-filename dist/ReactLocalizeRedux.js", - "build-min": "webpack --env.prod --output-filename dist/ReactLocalizeRedux.min.js", + "build": "npm run build:commonjs && npm run build:es && npm run build:flow && npm run build:umd && npm run build:umd:min", + "build:commonjs": "rimraf lib && cross-env BABEL_ENV=commonjs babel ./src -d lib", + "build:es": "rimraf es && cross-env BABEL_ENV=es babel ./src -d es", + "build:umd": "rimraf dist && webpack --env.dev --output-filename dist/ReactLocalizeRedux.js", + "build:umd:min": "webpack --env.prod --output-filename dist/ReactLocalizeRedux.min.js", + "build:flow": "flow-copy-source ./src lib && flow-copy-source ./src es", "coverage": "jest --coverage", "prepublish": "npm run build", "start": "webpack-dev-server --config examples/webpack.config.babel.js --content-base examples --inline --open", - "test": "jest", + "test": "cross-env BABEL_ENV=test jest", "test:dev": "jest --watch", "deploy:docs": "mkdocs gh-deploy", - "serve:docs": "mkdocs serve" + "serve:docs": "mkdocs serve", + "flow": "flow", + "types": "flow-typed install -i dev" }, "repository": { "type": "git", @@ -57,17 +60,22 @@ "redux": "^3.0.0" }, "devDependencies": { - "babel-cli": "^6.18.0", + "babel-cli": "^6.26.0", "babel-core": "^6.21.0", "babel-jest": "^18.0.0", "babel-loader": "^6.2.10", - "babel-plugin-add-module-exports": "^0.2.1", - "babel-preset-es2015": "^6.18.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", + "babel-plugin-transform-flow-strip-types": "^6.22.0", + "babel-preset-es2015-no-commonjs": "0.0.2", + "babel-preset-flow": "^6.23.0", "babel-preset-react": "^6.16.0", "babel-preset-stage-0": "^6.16.0", "cross-env": "^3.1.4", "enzyme": "^2.9.1", "express": "^4.14.0", + "flow-bin": "^0.53.1", + "flow-copy-source": "^1.2.1", + "flow-typed": "^2.1.5", "html-webpack-plugin": "^2.24.1", "jest": "^20.0.4", "json-loader": "^0.5.4", diff --git a/src/containers/Localize.js b/src/containers/Localize.js new file mode 100644 index 0000000..24b9e8f --- /dev/null +++ b/src/containers/Localize.js @@ -0,0 +1,22 @@ +// @flow +import React from 'react'; +import { connect } from 'react-redux'; +import { getActiveLanguage, getTranslate } from '../modules/locale'; +import type { ComponentType } from 'react'; +import type { MapStateToProps } from 'react-redux'; +import type { LocaleState, Language, Translate } from '../modules/locale'; + +export type LocalizeStateProps = { + currentLanguage: string, + translate: Translate +}; + +const mapStateToProps = (slice: ?string): MapStateToProps => (state: Object|LocaleState): LocalizeStateProps => { + const scopedState: LocaleState = slice ? state[slice] : state; + return { + currentLanguage: getActiveLanguage(scopedState).code, + translate: getTranslate(scopedState) + }; +}; + +export const localize = (Component: ComponentType, slice: ?string = null) => connect(mapStateToProps(slice))(Component); diff --git a/src/containers/Localize.jsx b/src/containers/Localize.jsx deleted file mode 100644 index 62a32c6..0000000 --- a/src/containers/Localize.jsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; -import { getActiveLanguage, getTranslate } from '../modules/locale'; - -const mapStateToProps = slice => state => { - const scopedState = slice ? state[slice] : state; - return { - currentLanguage: getActiveLanguage(scopedState).code, - translate: getTranslate(scopedState) - }; -}; - -export const localize = (Component, slice = null) => connect(mapStateToProps(slice), null)(Component); diff --git a/src/index.js b/src/index.js index 74a967c..daaba4a 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,18 @@ +// @flow +export type { + LocaleState, + Options, + Translations, + Action, + Translate, + Language, + InitializeAction, + AddTranslationAction, + AddTranslationForLanguageAction, + SetLanguagesAction, + SetActiveLanguageAction +} from './modules/locale'; + export { localize } from './containers/Localize'; export { diff --git a/src/modules/locale.js b/src/modules/locale.js index e8e48b9..1eb2e64 100644 --- a/src/modules/locale.js +++ b/src/modules/locale.js @@ -1,8 +1,100 @@ +// @flow import { combineReducers } from 'redux'; import { flatten } from 'flat'; import { createSelector, createSelectorCreator, defaultMemoize } from 'reselect'; -import { isDefinedNested, getLocalizedElement, getIndexForLanguageCode, objectValuesToString } from '../utils'; +import { getLocalizedElement, getIndexForLanguageCode, objectValuesToString } from '../utils'; +import type { Selector, SelectorCreator } from 'reselect'; +import type { Element } from 'react'; +/** + * TYPES + */ +export type Language = { + code: string, + active: boolean +}; + +export type Translations = { + [key: string]: string[] +}; + +export type Options = { + renderInnerHtml?: boolean, + defaultLanguage?: string +}; + +export type LocaleState = { + +languages: Language[], + +translations: Translations, + +options: Options +}; + +export type TranslatedLanguage = { + [string]: string +}; + +export type LocalizedElement = Element<'span'>|string; + +export type LocalizedElementMap = { + [string]: LocalizedElement +}; + +export type TranslatePlaceholderData = { + [string]: string|number +}; + +export type TranslateValue = string|string[]; + +export type Translate = (value: TranslateValue, data: TranslatePlaceholderData, options?: Options) => LocalizedElement|LocalizedElementMap; + +type InitializePayload = { + languageCodes: string[], + options?: Options +}; + +type AddTranslationPayload = { + translation: Object +}; + +type AddTranslationForLanguagePayload = { + translation: Object, + language: string +}; + +type SetLanguagesPayload = { + languageCodes: string[], + activeLanguage?: string +}; + +type SetActiveLanguagePayload = { + languageCode: string +}; + +type BaseAction = { + type: T, + payload: P +}; + +export type InitializeAction = BaseAction<'@@localize/INITIALIZE', InitializePayload>; +export type AddTranslationAction = BaseAction<'@@localize/ADD_TRANSLATION', AddTranslationPayload>; +export type AddTranslationForLanguageAction = BaseAction<'@@localize/ADD_TRANSLATION_FOR_LANGUGE', AddTranslationForLanguagePayload>; +export type SetActiveLanguageAction = BaseAction<'@@localize/SET_ACTIVE_LANGUAGE', SetActiveLanguagePayload>; +export type SetLanguagesAction = BaseAction<'@@localize/SET_LANGUAGES', SetLanguagesPayload>; + +export type Action = BaseAction< + string, + & InitializePayload + & AddTranslationPayload + & AddTranslationForLanguagePayload + & SetActiveLanguagePayload + & SetLanguagesPayload +>; + +export type ActionLanguageCodes = Action & { languageCodes: string[] }; + +/** + * ACTIONS + */ export const INITIALIZE = '@@localize/INITIALIZE'; export const ADD_TRANSLATION = '@@localize/ADD_TRANSLATION'; export const ADD_TRANSLATION_FOR_LANGUGE = '@@localize/ADD_TRANSLATION_FOR_LANGUGE'; @@ -13,7 +105,7 @@ export const TRANSLATE = '@@localize/TRANSLATE'; /** * REDUCERS */ -export function languages(state = [], action) { +export function languages(state: Language[] = [], action: Action): Language[] { switch (action.type) { case INITIALIZE: case SET_LANGUAGES: @@ -36,7 +128,7 @@ export function languages(state = [], action) { } } -export function translations(state = {}, action) { +export function translations(state: Translations = {}, action: ActionLanguageCodes): Translations { switch(action.type) { case ADD_TRANSLATION: return { @@ -46,7 +138,7 @@ export function translations(state = {}, action) { case ADD_TRANSLATION_FOR_LANGUGE: const languageIndex = action.languageCodes.indexOf(action.payload.language); const flattenedTranslations = languageIndex >= 0 ? flatten(action.payload.translation) : {}; - const languageTranslations = Object.keys(flattenedTranslations).reduce((prev, cur) => { + const languageTranslations = Object.keys(flattenedTranslations).reduce((prev, cur: string) => { const translationValues = action.languageCodes.map((code, index) => { const existingValues = state[cur] || []; return index === languageIndex @@ -68,7 +160,7 @@ export function translations(state = {}, action) { } } -export function options(state = defaultTranslateOptions, action) { +export function options(state: Options = defaultTranslateOptions, action: Action): Options { switch(action.type) { case INITIALIZE: return { @@ -78,19 +170,19 @@ export function options(state = defaultTranslateOptions, action) { default: return state; } -} +}; -export const defaultTranslateOptions = { +export const defaultTranslateOptions: Options = { renderInnerHtml: true }; -const initialState = { +const initialState: LocaleState = { languages: [], translations: {}, options: defaultTranslateOptions }; -export const localeReducer = (state = initialState, action) => { +export const localeReducer = (state: LocaleState = initialState, action: Action): LocaleState => { const languageCodes = state.languages.map(language => language.code); return { languages: languages(state.languages, action), @@ -102,66 +194,74 @@ export const localeReducer = (state = initialState, action) => { /** * ACTION CREATORS */ -export const initialize = (languageCodes, options = defaultTranslateOptions) => ({ +export const initialize = (languageCodes: string[], options: Options = defaultTranslateOptions) => ({ type: INITIALIZE, payload: { languageCodes, options } }); -export const addTranslation = (translation) => ({ +export const addTranslation = (translation: Object): AddTranslationAction => ({ type: ADD_TRANSLATION, payload: { translation } }); -export const addTranslationForLanguage = (translation, language) => ({ +export const addTranslationForLanguage = (translation: Object, language: string): AddTranslationForLanguageAction => ({ type: ADD_TRANSLATION_FOR_LANGUGE, payload: { translation, language } }); -export const setLanguages = (languageCodes, activeLanguage = null) => ({ +export const setLanguages = (languageCodes: string[], activeLanguage: string): SetLanguagesAction => ({ type: SET_LANGUAGES, payload: { languageCodes, activeLanguage } }); -export const setActiveLanguage = (languageCode) => ({ +export const setActiveLanguage = (languageCode: string): SetActiveLanguageAction => ({ type: SET_ACTIVE_LANGUAGE, payload: { languageCode } }); + /** * SELECTORS */ -export const getTranslations = state => state.translations; -export const getLanguages = state => state.languages; -export const getOptions = state => state.options; -export const getActiveLanguage = state => { +export const getTranslations = (state: LocaleState): Translations => state.translations; + +export const getLanguages = (state: LocaleState): Language[] => state.languages; + +export const getOptions = (state: LocaleState): Options => state.options; + +export const getActiveLanguage = (state: LocaleState): Language => { const languages = getLanguages(state); const activeLanguageIndex = languages.map(language => language.active).indexOf(true); return languages[activeLanguageIndex]; }; - -export const customeEqualSelector = createSelectorCreator( +export const translationsEqualSelector = createSelectorCreator( defaultMemoize, - (cur, prev) => { - const isTranslationsData = !(Array.isArray(cur) || Object.keys(cur).toString() === 'code,active'); + (cur: Object, prev: Object) => { + const isTranslationsData: boolean = !(Array.isArray(cur) || Object.keys(cur).toString() === 'code,active'); // for translations data use a combination of keys and values for comparison if (isTranslationsData) { - const prevKeys = Object.keys(prev).toString(); - const curKeys = Object.keys(cur).toString(); + const prevTranslations = (prev: Translations); + const curTranslations = (cur: Translations); + + const prevKeys: string = Object.keys(prevTranslations).toString(); + const curKeys: string = Object.keys(curTranslations).toString(); + + const prevValues = objectValuesToString(prevTranslations); + const curValues = objectValuesToString(curTranslations); - const prevValues = objectValuesToString(prev); - const curValues = objectValuesToString(cur); + const prevCacheValue = `${ prevKeys } - ${ prevValues }`; + const curCacheValue = `${ curKeys } - ${ curValues }`; - prev = `${ prevKeys } - ${ prevValues }`; - cur = `${ curKeys } - ${ curValues }`; + return prevCacheValue === curCacheValue; } - return prev === cur; + return prev === cur; } ) -export const getTranslationsForActiveLanguage = customeEqualSelector( +export const getTranslationsForActiveLanguage: Selector = translationsEqualSelector( getActiveLanguage, getLanguages, getTranslations, @@ -177,12 +277,12 @@ export const getTranslationsForActiveLanguage = customeEqualSelector( } ); -export const getTranslate = createSelector( +export const getTranslate: Selector = createSelector( getTranslationsForActiveLanguage, getOptions, (translations, options) => { return (value, data, optionsOverride = {}) => { - const translateOptions = {...options, ...optionsOverride}; + const translateOptions: Options = {...options, ...optionsOverride}; if (typeof value === 'string') { return getLocalizedElement(value, translations, data, translateOptions); } else if (Array.isArray(value)) { diff --git a/src/utils.js b/src/utils.js index 227844f..cc1d5f5 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,7 +1,9 @@ +// @flow import React from 'react'; import { defaultTranslateOptions } from './modules/locale'; +import type { TranslatePlaceholderData, TranslatedLanguage, Options, LocalizedElement, Language } from './modules/locale'; -export const getLocalizedElement = (key, translations, data, options = defaultTranslateOptions) => { +export const getLocalizedElement = (key: string, translations: TranslatedLanguage, data: TranslatePlaceholderData, options: Options = defaultTranslateOptions): LocalizedElement => { const localizedString = translations[key] || `Missing localized key: ${key}`; const translatedValue = templater(localizedString, data) return options.renderInnerHtml && hasHtmlTags(translatedValue) @@ -9,7 +11,7 @@ export const getLocalizedElement = (key, translations, data, options = defaultTr : translatedValue; }; -export const hasHtmlTags = (value) => { +export const hasHtmlTags = (value: string): boolean => { const pattern = /<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[\^'">\s]+))?)+\s*|\s*)\/?>/; return value.search(pattern) >= 0; }; @@ -21,20 +23,20 @@ export const hasHtmlTags = (value) => { * @param {object} data The data that should be inserted in template * @return {string} The template string with the data merged in */ -export const templater = (strings, data = {}) => { +export const templater = (strings: string, data: Object = {}): string => { for(let prop in data) { const pattern = '\\${\\s*'+ prop +'\\s*}'; const regex = new RegExp(pattern, 'gmi'); - strings = strings.replace(regex, data[prop]); + strings = strings.replace(regex, data[prop]); } return strings; }; -export const getIndexForLanguageCode = (code, languages) => { +export const getIndexForLanguageCode = (code: string, languages: Language[]): number => { return languages.map(language => language.code).indexOf(code); }; -export const objectValuesToString = (data) => { +export const objectValuesToString = (data: Object): string => { return !Object.values ? Object.keys(data).map(key => data[key].toString()).toString() : Object.values(data).toString(); diff --git a/tests/Localize.test.jsx b/tests/Localize.test.js similarity index 100% rename from tests/Localize.test.jsx rename to tests/Localize.test.js diff --git a/tests/modules.test.js b/tests/modules.test.js index 68ff041..8bb4912 100644 --- a/tests/modules.test.js +++ b/tests/modules.test.js @@ -1,6 +1,6 @@ import * as actions from 'modules/locale'; import { shallow } from 'enzyme'; -import { languages, translations, getActiveLanguage, getTranslationsForActiveLanguage, customeEqualSelector, setLanguages, getTranslate, getTranslateSelector, defaultTranslateOptions, options } from 'modules/locale'; +import { languages, translations, getActiveLanguage, getTranslationsForActiveLanguage, translationsEqualSelector, setLanguages, getTranslate, getTranslateSelector, defaultTranslateOptions, options } from 'modules/locale'; import { getLocalizedElement } from 'utils'; import { INITIALIZE, SET_LANGUAGES, SET_ACTIVE_LANGUAGE, ADD_TRANSLATION, ADD_TRANSLATION_FOR_LANGUGE } from 'modules/locale'; @@ -452,7 +452,7 @@ describe('locale module', () => { }); - describe('customeEqualSelector', () => { + describe('translationsEqualSelector', () => { let languages = []; let activeLanguage = {}; let translations = {}; @@ -469,7 +469,7 @@ describe('locale module', () => { it('should call result function when languages changes', () => { const result = jest.fn(); - const selector = customeEqualSelector(() => languages, result); + const selector = translationsEqualSelector(() => languages, result); selector({}); languages = [...languages, [...{ code: 'ca', active: false }]]; selector({}); @@ -478,7 +478,7 @@ describe('locale module', () => { it('should not call result function when languages haven\'t changed', () => { const result = jest.fn(); - const selector = customeEqualSelector(() => languages, result); + const selector = translationsEqualSelector(() => languages, result); selector({}); selector({}); expect(result).toHaveBeenCalledTimes(1); @@ -486,7 +486,7 @@ describe('locale module', () => { it('should call result function when active language changes', () => { const result = jest.fn(); - const selector = customeEqualSelector(() => activeLanguage, result); + const selector = translationsEqualSelector(() => activeLanguage, result); selector({}); activeLanguage = { code: 'ca', active: false }; selector({}); @@ -495,7 +495,7 @@ describe('locale module', () => { it('should not call result function when active language hasn\'t changed', () => { const result = jest.fn(); - const selector = customeEqualSelector(() => activeLanguage, result); + const selector = translationsEqualSelector(() => activeLanguage, result); selector({}); selector({}); expect(result).toHaveBeenCalledTimes(1); @@ -503,7 +503,7 @@ describe('locale module', () => { it('should call result function when translations change', () => { const result = jest.fn(); - const selector = customeEqualSelector(() => translations, result); + const selector = translationsEqualSelector(() => translations, result); selector({}); translations = { ...translations, four: 'four' }; selector({}); @@ -512,7 +512,7 @@ describe('locale module', () => { it('should not call result function when translations haven\'t changed', () => { const result = jest.fn(); - const selector = customeEqualSelector(() => translations, result); + const selector = translationsEqualSelector(() => translations, result); selector({}); selector({}); expect(result).toHaveBeenCalledTimes(1); @@ -524,7 +524,7 @@ describe('locale module', () => { title: ['title', undefined, undefined] }; - const selector = customeEqualSelector(() => initialTranslations, result); + const selector = translationsEqualSelector(() => initialTranslations, result); selector({}); initialTranslations = { title: ['title', 'title FR', undefined] }; selector({}); @@ -537,7 +537,7 @@ describe('locale module', () => { title: ['title', 'title2', undefined] }; - const selector = customeEqualSelector(() => initialTranslations, result); + const selector = translationsEqualSelector(() => initialTranslations, result); selector({}); selector({}); expect(result).toHaveBeenCalledTimes(1); diff --git a/webpack.config.babel.js b/webpack.config.babel.js index d77007e..34f14a3 100644 --- a/webpack.config.babel.js +++ b/webpack.config.babel.js @@ -23,12 +23,12 @@ export default env => { commonjs: 'react-redux', amd: 'react-redux' }; - const reselectExternal = { - root: 'Reselect', - commonjs2: 'reselect', - commonjs: 'reselect', - amd: 'reselect' - }; + // const reselectExternal = { + // root: 'Reselect', + // commonjs2: 'reselect', + // commonjs: 'reselect', + // amd: 'reselect' + // }; return { entry: './src/index.js', @@ -49,7 +49,7 @@ export default env => { 'react': reactExternal, 'redux': reduxExternal, 'react-redux': reactReduxExternal, - 'reselect': reselectExternal + // 'reselect': reselectExternal }, module: {